{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/cadencz-com/json-schema/cadencz-com-bootstrap-response-schema.json",
  "title": "BootstrapResponse",
  "description": "Everything the app shell needs to render, in one round trip.\n\nEach field carries exactly the payload its own endpoint returns, so the\nclient can seed its cache key-for-key and never learns a second shape.\n\nA `null` section means one of two different things, and `failed` is what\ntells them apart: a name listed there could not be read and the client\nshould fetch that one endpoint itself, while a `null` that is *not* listed\nis a real absence (no content plan yet). Without that split, an outage in\none section would be indistinguishable from an empty workspace.",
  "x-generated": "2026-11-03",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/cadencz-com-openapi.json#/components/schemas/BootstrapResponse",
  "properties": {
    "me": {
      "$ref": "#/$defs/CurrentUserResponse"
    },
    "preferences": {
      "anyOf": [
        {
          "$ref": "#/$defs/UserPreferences"
        },
        {
          "type": "null"
        }
      ]
    },
    "channels": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/ChannelRead"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Channels"
    },
    "subscription": {
      "anyOf": [
        {
          "$ref": "#/$defs/SubscriptionRead"
        },
        {
          "type": "null"
        }
      ]
    },
    "usage": {
      "anyOf": [
        {
          "$ref": "#/$defs/CreditUsageResponse"
        },
        {
          "type": "null"
        }
      ]
    },
    "strategy": {
      "anyOf": [
        {
          "$ref": "#/$defs/StrategyRead"
        },
        {
          "type": "null"
        }
      ]
    },
    "plan": {
      "anyOf": [
        {
          "$ref": "#/$defs/PlanRead"
        },
        {
          "type": "null"
        }
      ]
    },
    "brains": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/BrainRead"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Brains"
    },
    "media": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Media"
    },
    "failed": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Failed",
      "default": []
    }
  },
  "type": "object",
  "required": [
    "me"
  ],
  "$defs": {
    "AutomationSettings": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "title": "Enabled",
          "description": "Off by default. Auto-planning spends credits, so it's opt-in.",
          "default": false
        },
        "suspended_by_plan": {
          "type": "boolean",
          "title": "Suspended By Plan",
          "description": "Cadencz turned automation off after plan access was lost. The saved schedule remains, but the customer must explicitly enable it again.",
          "default": false
        },
        "auto_write_week": {
          "type": "boolean",
          "title": "Auto Write Week",
          "description": "Write the week's posts on their own at the planning hour, so the stack always has a fresh week on it. Every plan; bounded by the tier's weekly number and the monthly pool. Distinct from `enabled`, which is the paid Automation feature (rules, auto-approve).",
          "default": true
        },
        "plan_weekday": {
          "type": "integer",
          "maximum": 6.0,
          "minimum": 0.0,
          "title": "Plan Weekday",
          "description": "0 = Monday.",
          "default": 0
        },
        "plan_hour": {
          "type": "integer",
          "maximum": 23.0,
          "minimum": 0.0,
          "title": "Plan Hour",
          "description": "Local hour, 24h.",
          "default": 6
        },
        "timezone": {
          "type": "string",
          "maxLength": 64,
          "title": "Timezone",
          "description": "IANA zone.",
          "default": "UTC"
        },
        "posting_weekdays": {
          "items": {
            "type": "integer"
          },
          "type": "array",
          "title": "Posting Weekdays",
          "description": "Days posts may be scheduled on. 0 = Monday."
        },
        "posting_times": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Posting Times",
          "description": "HH:MM slots, cycled through in order."
        },
        "day_platforms": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "title": "Day Platforms",
          "description": "Which channel each weekday posts to, keyed by weekday index as a string ('0' = Monday). A day with no entry falls back to the workspace's platform rotation."
        },
        "platform_quota": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Platform Quota",
          "description": "How many posts each channel gets per batch, keyed by platform id. The batch is their sum. Zero (or absent) means the channel gets none; empty means the planner decides per post from cadence."
        },
        "brain_id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 64
            },
            {
              "type": "null"
            }
          ],
          "title": "Brain Id",
          "description": "Ground posts in this Brain. None = the most recently updated."
        },
        "auto_approve": {
          "type": "boolean",
          "title": "Auto Approve",
          "description": "Schedule straight to the calendar instead of holding for review.",
          "default": false
        }
      },
      "type": "object",
      "title": "AutomationSettings",
      "description": "When the agents plan, and when the posts they produce go out."
    },
    "BrainRead": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "workspace_id": {
          "type": "string",
          "title": "Workspace Id"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "tagline": {
          "type": "string",
          "title": "Tagline"
        },
        "emoji": {
          "type": "string",
          "title": "Emoji"
        },
        "accent": {
          "type": "string",
          "title": "Accent"
        },
        "source_count": {
          "type": "integer",
          "title": "Source Count"
        },
        "fact_count": {
          "type": "integer",
          "title": "Fact Count"
        },
        "site_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Site Url"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time",
          "title": "Updated At"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "title": "Created At"
        }
      },
      "type": "object",
      "required": [
        "id",
        "workspace_id",
        "name",
        "tagline",
        "emoji",
        "accent",
        "source_count",
        "fact_count",
        "updated_at",
        "created_at"
      ],
      "title": "BrainRead"
    },
    "ChannelRead": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "workspace_id": {
          "type": "string",
          "title": "Workspace Id"
        },
        "platform": {
          "type": "string",
          "title": "Platform"
        },
        "handle": {
          "type": "string",
          "title": "Handle"
        },
        "display_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Display Name"
        },
        "avatar_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Avatar Url"
        },
        "status": {
          "type": "string",
          "title": "Status"
        },
        "byo_app": {
          "type": "boolean",
          "title": "Byo App"
        },
        "token_expires_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Token Expires At"
        },
        "followers": {
          "type": "integer",
          "title": "Followers"
        },
        "capabilities": {
          "additionalProperties": true,
          "type": "object",
          "title": "Capabilities"
        },
        "plan_entitled": {
          "type": "boolean",
          "title": "Plan Entitled",
          "default": true
        },
        "entitlement_status": {
          "type": "string",
          "enum": [
            "available",
            "plan_paused",
            "disconnected"
          ],
          "title": "Entitlement Status",
          "default": "available"
        },
        "plan_pause_reason": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "plan_required",
                "workspace_limit",
                "platform_limit"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Plan Pause Reason"
        }
      },
      "type": "object",
      "required": [
        "id",
        "workspace_id",
        "platform",
        "handle",
        "display_name",
        "avatar_url",
        "status",
        "byo_app",
        "token_expires_at",
        "followers"
      ],
      "title": "ChannelRead"
    },
    "CreditCategoryUsageRead": {
      "properties": {
        "reason": {
          "type": "string",
          "title": "Reason"
        },
        "label": {
          "type": "string",
          "title": "Label"
        },
        "granted": {
          "type": "integer",
          "title": "Granted"
        },
        "used": {
          "type": "integer",
          "title": "Used"
        },
        "balance": {
          "type": "integer",
          "title": "Balance"
        },
        "cost_usd_micros": {
          "type": "integer",
          "title": "Cost Usd Micros"
        }
      },
      "type": "object",
      "required": [
        "reason",
        "label",
        "granted",
        "used",
        "balance",
        "cost_usd_micros"
      ],
      "title": "CreditCategoryUsageRead"
    },
    "CreditProjectUsageRead": {
      "properties": {
        "project_id": {
          "type": "string",
          "title": "Project Id"
        },
        "project_type": {
          "type": "string",
          "enum": [
            "workspace",
            "brain"
          ],
          "title": "Project Type"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "workspace_id": {
          "type": "string",
          "title": "Workspace Id"
        },
        "granted": {
          "type": "integer",
          "title": "Granted"
        },
        "used": {
          "type": "integer",
          "title": "Used"
        },
        "balance": {
          "type": "integer",
          "title": "Balance"
        },
        "cost_usd_micros": {
          "type": "integer",
          "title": "Cost Usd Micros"
        }
      },
      "type": "object",
      "required": [
        "project_id",
        "project_type",
        "name",
        "workspace_id",
        "granted",
        "used",
        "balance",
        "cost_usd_micros"
      ],
      "title": "CreditProjectUsageRead"
    },
    "CreditUsageResponse": {
      "properties": {
        "user_id": {
          "type": "string",
          "title": "User Id"
        },
        "workspace_id": {
          "type": "string",
          "title": "Workspace Id"
        },
        "balance": {
          "type": "integer",
          "title": "Balance"
        },
        "granted": {
          "type": "integer",
          "title": "Granted"
        },
        "used": {
          "type": "integer",
          "title": "Used"
        },
        "workspace_balance": {
          "type": "integer",
          "title": "Workspace Balance"
        },
        "workspace_granted": {
          "type": "integer",
          "title": "Workspace Granted"
        },
        "workspace_used": {
          "type": "integer",
          "title": "Workspace Used"
        },
        "cost_usd_micros": {
          "type": "integer",
          "title": "Cost Usd Micros"
        },
        "workspace_cost_usd_micros": {
          "type": "integer",
          "title": "Workspace Cost Usd Micros"
        },
        "categories": {
          "items": {
            "$ref": "#/$defs/CreditCategoryUsageRead"
          },
          "type": "array",
          "title": "Categories"
        },
        "projects": {
          "items": {
            "$ref": "#/$defs/CreditProjectUsageRead"
          },
          "type": "array",
          "title": "Projects"
        }
      },
      "type": "object",
      "required": [
        "user_id",
        "workspace_id",
        "balance",
        "granted",
        "used",
        "workspace_balance",
        "workspace_granted",
        "workspace_used",
        "cost_usd_micros",
        "workspace_cost_usd_micros",
        "categories",
        "projects"
      ],
      "title": "CreditUsageResponse"
    },
    "CurrentUserProfile": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "email": {
          "type": "string",
          "title": "Email"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "avatarUrl": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Avatarurl"
        },
        "timezone": {
          "type": "string",
          "title": "Timezone"
        },
        "isAdmin": {
          "type": "boolean",
          "title": "Isadmin",
          "default": false
        },
        "createdAt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Createdat"
        }
      },
      "type": "object",
      "required": [
        "id",
        "email",
        "name",
        "avatarUrl",
        "timezone"
      ],
      "title": "CurrentUserProfile"
    },
    "CurrentUserResponse": {
      "properties": {
        "user": {
          "$ref": "#/$defs/CurrentUserProfile"
        },
        "workspace": {
          "$ref": "#/$defs/CurrentWorkspaceProfile"
        },
        "workspaces": {
          "items": {
            "$ref": "#/$defs/CurrentWorkspaceProfile"
          },
          "type": "array",
          "title": "Workspaces"
        },
        "role": {
          "type": "string",
          "title": "Role",
          "default": "owner"
        },
        "accountId": {
          "type": "string",
          "title": "Accountid",
          "default": ""
        },
        "permissions": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Permissions",
          "default": []
        },
        "workspaceCap": {
          "type": "integer",
          "title": "Workspacecap",
          "default": 1
        },
        "setupComplete": {
          "type": "boolean",
          "title": "Setupcomplete",
          "default": true
        }
      },
      "type": "object",
      "required": [
        "user",
        "workspace",
        "workspaces"
      ],
      "title": "CurrentUserResponse"
    },
    "CurrentWorkspaceProfile": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "ownerId": {
          "type": "string",
          "title": "Ownerid"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "handle": {
          "type": "string",
          "title": "Handle"
        },
        "avatarUrl": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Avatarurl"
        }
      },
      "type": "object",
      "required": [
        "id",
        "ownerId",
        "name",
        "handle",
        "avatarUrl"
      ],
      "title": "CurrentWorkspaceProfile"
    },
    "MediaRead": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "kind": {
          "type": "string",
          "title": "Kind"
        },
        "url": {
          "type": "string",
          "title": "Url"
        },
        "alt_text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Alt Text"
        },
        "width": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Width"
        },
        "height": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Height"
        },
        "bytes": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Bytes"
        }
      },
      "type": "object",
      "required": [
        "id",
        "kind",
        "url"
      ],
      "title": "MediaRead"
    },
    "PlanItemRead": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "theme": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Theme"
        },
        "angle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Angle"
        },
        "platforms": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Platforms"
        },
        "why": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Why"
        },
        "prompt": {
          "type": "string",
          "title": "Prompt"
        },
        "scheduled_for": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Scheduled For"
        },
        "status": {
          "type": "string",
          "title": "Status"
        },
        "format": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Format"
        },
        "publish_mode": {
          "type": "string",
          "title": "Publish Mode",
          "default": "single"
        },
        "content_metadata": {
          "additionalProperties": true,
          "type": "object",
          "title": "Content Metadata"
        },
        "body_parts": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Body Parts"
        },
        "media_ids": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Media Ids"
        },
        "media": {
          "items": {
            "$ref": "#/$defs/MediaRead"
          },
          "type": "array",
          "title": "Media"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Created At"
        }
      },
      "type": "object",
      "required": [
        "id",
        "theme",
        "angle",
        "platforms",
        "why",
        "prompt",
        "scheduled_for",
        "status"
      ],
      "title": "PlanItemRead"
    },
    "PlanRead": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "workspace_id": {
          "type": "string",
          "title": "Workspace Id"
        },
        "week_of": {
          "type": "string",
          "format": "date-time",
          "title": "Week Of"
        },
        "goal": {
          "type": "string",
          "title": "Goal"
        },
        "niche": {
          "type": "string",
          "title": "Niche"
        },
        "status": {
          "type": "string",
          "title": "Status"
        },
        "items": {
          "items": {
            "$ref": "#/$defs/PlanItemRead"
          },
          "type": "array",
          "title": "Items"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "title": "Created At"
        }
      },
      "type": "object",
      "required": [
        "id",
        "workspace_id",
        "week_of",
        "goal",
        "niche",
        "status",
        "items",
        "created_at"
      ],
      "title": "PlanRead"
    },
    "StrategyRead": {
      "properties": {
        "workspace_id": {
          "type": "string",
          "title": "Workspace Id"
        },
        "niche": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Niche"
        },
        "goals": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Goals"
        },
        "whats_new": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Whats New"
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Tags"
        },
        "tone_profile": {
          "additionalProperties": true,
          "type": "object",
          "title": "Tone Profile"
        },
        "voice_profile": {
          "$ref": "#/$defs/VoiceProfile"
        },
        "voice_samples": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Voice Samples"
        },
        "voice_sample_platforms": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "title": "Voice Sample Platforms"
        },
        "voice_platforms_learned": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Voice Platforms Learned"
        },
        "cadence_per_week": {
          "type": "integer",
          "title": "Cadence Per Week"
        },
        "platforms": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Platforms"
        },
        "automation": {
          "$ref": "#/$defs/AutomationSettings"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time",
          "title": "Updated At"
        }
      },
      "type": "object",
      "required": [
        "workspace_id",
        "niche",
        "goals",
        "tags",
        "tone_profile",
        "voice_profile",
        "voice_samples",
        "cadence_per_week",
        "platforms",
        "automation",
        "updated_at"
      ],
      "title": "StrategyRead"
    },
    "SubscriptionRead": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "workspace_id": {
          "type": "string",
          "title": "Workspace Id"
        },
        "tier": {
          "type": "string",
          "title": "Tier"
        },
        "plan_state": {
          "type": "string",
          "title": "Plan State"
        },
        "plan_label": {
          "type": "string",
          "title": "Plan Label"
        },
        "status": {
          "type": "string",
          "title": "Status"
        },
        "renews_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Renews At"
        },
        "cancel_at_period_end": {
          "type": "boolean",
          "title": "Cancel At Period End"
        },
        "billing_period": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "monthly",
                "yearly"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Billing Period"
        },
        "has_provider_subscription": {
          "type": "boolean",
          "title": "Has Provider Subscription",
          "default": false
        },
        "trial_eligible": {
          "type": "boolean",
          "title": "Trial Eligible"
        },
        "included_credits": {
          "type": "integer",
          "title": "Included Credits"
        },
        "channel_cap": {
          "type": "integer",
          "title": "Channel Cap"
        }
      },
      "type": "object",
      "required": [
        "id",
        "workspace_id",
        "tier",
        "plan_state",
        "plan_label",
        "status",
        "renews_at",
        "cancel_at_period_end",
        "billing_period",
        "trial_eligible",
        "included_credits",
        "channel_cap"
      ],
      "title": "SubscriptionRead"
    },
    "ToneAxis": {
      "properties": {
        "id": {
          "type": "string",
          "maxLength": 40,
          "title": "Id"
        },
        "low": {
          "type": "string",
          "maxLength": 40,
          "title": "Low"
        },
        "high": {
          "type": "string",
          "maxLength": 40,
          "title": "High"
        },
        "value": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Value",
          "default": 50
        }
      },
      "type": "object",
      "required": [
        "id",
        "low",
        "high"
      ],
      "title": "ToneAxis",
      "description": "One bipolar slider: `value` 0 sits at `low`, 100 at `high`."
    },
    "UserPreferences": {
      "properties": {
        "timezone": {
          "type": "string",
          "title": "Timezone"
        },
        "weekStart": {
          "type": "string",
          "title": "Weekstart",
          "default": "monday"
        },
        "quietHours": {
          "type": "null",
          "title": "Quiethours"
        }
      },
      "type": "object",
      "required": [
        "timezone"
      ],
      "title": "UserPreferences"
    },
    "VoicePersona": {
      "properties": {
        "id": {
          "type": "string",
          "maxLength": 64,
          "title": "Id"
        },
        "name": {
          "type": "string",
          "maxLength": 80,
          "title": "Name",
          "default": ""
        },
        "audience": {
          "type": "string",
          "maxLength": 2000,
          "title": "Audience",
          "default": ""
        },
        "context": {
          "type": "string",
          "maxLength": 500,
          "title": "Context",
          "default": ""
        },
        "mission": {
          "type": "string",
          "maxLength": 2000,
          "title": "Mission",
          "default": ""
        },
        "traits": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Traits"
        },
        "goals": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Goals"
        },
        "tone": {
          "items": {
            "$ref": "#/$defs/ToneAxis"
          },
          "type": "array",
          "maxItems": 12,
          "title": "Tone"
        },
        "vocabulary": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Vocabulary"
        },
        "banned_words": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Banned Words"
        },
        "ctas": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Ctas"
        },
        "formatting": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Formatting"
        },
        "active": {
          "type": "boolean",
          "title": "Active",
          "default": false
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Created At"
        },
        "updated_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Updated At"
        }
      },
      "type": "object",
      "required": [
        "id"
      ],
      "title": "VoicePersona",
      "description": "A named way of speaking. Exactly one persona is active at a time."
    },
    "VoiceProfile": {
      "properties": {
        "personas": {
          "items": {
            "$ref": "#/$defs/VoicePersona"
          },
          "type": "array",
          "maxItems": 10,
          "title": "Personas"
        },
        "versions": {
          "items": {
            "$ref": "#/$defs/VoiceVersion"
          },
          "type": "array",
          "maxItems": 20,
          "title": "Versions"
        }
      },
      "type": "object",
      "title": "VoiceProfile",
      "description": "The whole authored document. Empty is valid — it just means untouched."
    },
    "VoiceVersion": {
      "properties": {
        "id": {
          "type": "string",
          "maxLength": 64,
          "title": "Id"
        },
        "persona_id": {
          "type": "string",
          "maxLength": 64,
          "title": "Persona Id"
        },
        "label": {
          "type": "string",
          "maxLength": 160,
          "title": "Label",
          "default": ""
        },
        "saved_at": {
          "type": "string",
          "format": "date-time",
          "title": "Saved At"
        },
        "snapshot": {
          "$ref": "#/$defs/VoicePersona"
        }
      },
      "type": "object",
      "required": [
        "id",
        "persona_id",
        "saved_at",
        "snapshot"
      ],
      "title": "VoiceVersion",
      "description": "A snapshot taken on save, so a regretted edit is one click from undone."
    }
  }
}