{
  "lexicon": 1,
  "id": "space.polymodel.actor.defs",
  "defs": {
    "profileView": {
      "type": "object",
      "description": "Polymodel actor profile view (union variant). Hydrated from the space.polymodel.actor.profile record plus SQLite-derived stats and viewer relationship state. Returned when the actor authored a polymodel profile record; otherwise getProfile returns the app.bsky.actor.defs#profileViewDetailed variant.",
      "required": ["did", "handle", "record"],
      "properties": {
        "did": { "type": "string", "format": "did" },
        "handle": { "type": "string" },
        "displayName": { "type": "string" },
        "description": { "type": "string" },
        "avatar": {
          "type": "string",
          "format": "uri",
          "description": "Resolved avatar URL (CDN). Null until the app view resolves the polymodel profile avatar blob."
        },
        "record": { "type": "unknown", "description": "The raw space.polymodel.actor.profile record." },
        "defaultLicense": { "type": "string" },
        "pronouns": { "type": "string" },
        "printers": { "type": "array", "items": { "type": "string" } },
        "links": { "type": "array", "items": { "type": "string", "format": "uri" } },
        "thingCount": { "type": "integer" },
        "totalLikes": { "type": "integer" },
        "followerCount": { "type": "integer" },
        "followingCount": { "type": "integer" },
        "viewer": { "type": "ref", "ref": "space.polymodel.library.defs#actorViewerState" },
        "lists": { "type": "array", "items": { "type": "ref", "ref": "space.polymodel.actor.defs#profileListView" } },
        "indexedAt": { "type": "string", "format": "datetime" }
      }
    },
    "profileListView": {
      "type": "object",
      "description": "A list authored by the profile actor, with enough metadata for profile tabs and links into space.polymodel.graph.getList.",
      "required": ["uri", "cid", "name", "itemCount", "createdAt"],
      "properties": {
        "uri": { "type": "string", "format": "at-uri" },
        "cid": { "type": "string", "format": "cid" },
        "name": { "type": "string" },
        "description": { "type": "string" },
        "purpose": { "type": "string" },
        "itemCount": { "type": "integer" },
        "createdAt": { "type": "string", "format": "datetime" }
      }
    },
    "profileViewUnion": {
      "type": "union",
      "description": "Discriminates a polymodel-native actor (space.polymodel.actor.defs#profileView, hydrated from the local profile record + stats) from a bluesky-only actor (app.bsky.actor.defs#profileViewDetailed, fetched from the public AppView). Clients render based on $type.",
      "refs": ["space.polymodel.actor.defs#profileView", "app.bsky.actor.defs#profileViewDetailed"],
      "closed": true
    }
  }
}
