{
  "lexicon": 1,
  "id": "app.bsky.actor.defs",
  "defs": {
    "profileViewBasic": {
      "type": "object",
      "required": ["did", "handle"],
      "properties": {
        "did": { "type": "string", "format": "did" },
        "handle": { "type": "string", "format": "handle" },
        "displayName": {
          "type": "string",
          "maxGraphemes": 64,
          "maxLength": 640
        },
        "avatar": { "type": "string", "format": "uri" },
        "associated": {
          "type": "ref",
          "ref": "#profileAssociated"
        },
        "viewer": { "type": "ref", "ref": "#viewerState" },
        "labels": {
          "type": "array",
          "items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
        },
        "createdAt": { "type": "string", "format": "datetime" }
      }
    },
    "profileView": {
      "type": "object",
      "required": ["did", "handle"],
      "properties": {
        "did": { "type": "string", "format": "did" },
        "handle": { "type": "string", "format": "handle" },
        "displayName": {
          "type": "string",
          "maxGraphemes": 64,
          "maxLength": 640
        },
        "description": {
          "type": "string",
          "maxGraphemes": 256,
          "maxLength": 2560
        },
        "avatar": { "type": "string", "format": "uri" },
        "associated": {
          "type": "ref",
          "ref": "#profileAssociated"
        },
        "indexedAt": { "type": "string", "format": "datetime" },
        "createdAt": { "type": "string", "format": "datetime" },
        "viewer": { "type": "ref", "ref": "#viewerState" },
        "labels": {
          "type": "array",
          "items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
        }
      }
    },
    "profileViewDetailed": {
      "type": "object",
      "required": ["did", "handle"],
      "properties": {
        "did": { "type": "string", "format": "did" },
        "handle": { "type": "string", "format": "handle" },
        "displayName": {
          "type": "string",
          "maxGraphemes": 64,
          "maxLength": 640
        },
        "description": {
          "type": "string",
          "maxGraphemes": 256,
          "maxLength": 2560
        },
        "avatar": { "type": "string", "format": "uri" },
        "banner": { "type": "string", "format": "uri" },
        "followersCount": { "type": "integer" },
        "followsCount": { "type": "integer" },
        "postsCount": { "type": "integer" },
        "associated": {
          "type": "ref",
          "ref": "#profileAssociated"
        },
        "joinedViaStarterPack": {
          "type": "ref",
          "ref": "app.bsky.graph.defs#starterPackViewBasic"
        },
        "indexedAt": { "type": "string", "format": "datetime" },
        "createdAt": { "type": "string", "format": "datetime" },
        "viewer": { "type": "ref", "ref": "#viewerState" },
        "labels": {
          "type": "array",
          "items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
        },
        "pinnedPost": {
          "type": "ref",
          "ref": "com.atproto.repo.strongRef"
        }
      }
    },
    "profileAssociated": {
      "type": "object",
      "properties": {
        "lists": { "type": "integer" },
        "feedgens": { "type": "integer" },
        "starterPacks": { "type": "integer" },
        "labeler": { "type": "boolean" },
        "chat": { "type": "ref", "ref": "#profileAssociatedChat" }
      }
    },
    "profileAssociatedChat": {
      "type": "object",
      "required": ["allowIncoming"],
      "properties": {
        "allowIncoming": {
          "type": "string",
          "knownValues": ["all", "none", "following"]
        }
      }
    },
    "viewerState": {
      "type": "object",
      "description": "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.",
      "properties": {
        "muted": { "type": "boolean" },
        "mutedByList": {
          "type": "ref",
          "ref": "app.bsky.graph.defs#listViewBasic"
        },
        "blockedBy": { "type": "boolean" },
        "blocking": { "type": "string", "format": "at-uri" },
        "blockingByList": {
          "type": "ref",
          "ref": "app.bsky.graph.defs#listViewBasic"
        },
        "following": { "type": "string", "format": "at-uri" },
        "followedBy": { "type": "string", "format": "at-uri" },
        "knownFollowers": {
          "type": "ref",
          "ref": "#knownFollowers"
        }
      }
    },
    "knownFollowers": {
      "type": "object",
      "description": "The subject's followers whom you also follow",
      "required": ["count", "followers"],
      "properties": {
        "count": { "type": "integer" },
        "followers": {
          "type": "array",
          "minLength": 0,
          "maxLength": 5,
          "items": {
            "type": "ref",
            "ref": "#profileViewBasic"
          }
        }
      }
    },
    "preferences": {
      "type": "array",
      "items": {
        "type": "union",
        "refs": [
          "#adultContentPref",
          "#contentLabelPref",
          "#savedFeedsPref",
          "#savedFeedsPrefV2",
          "#personalDetailsPref",
          "#feedViewPref",
          "#threadViewPref",
          "#interestsPref",
          "#mutedWordsPref",
          "#hiddenPostsPref",
          "#bskyAppStatePref",
          "#labelersPref"
        ]
      }
    },
    "adultContentPref": {
      "type": "object",
      "required": ["enabled"],
      "properties": {
        "enabled": { "type": "boolean", "default": false }
      }
    },
    "contentLabelPref": {
      "type": "object",
      "required": ["label", "visibility"],
      "properties": {
        "labelerDid": {
          "type": "string",
          "description": "Which labeler does this preference apply to? If undefined, applies globally.",
          "format": "did"
        },
        "label": { "type": "string" },
        "visibility": {
          "type": "string",
          "knownValues": ["ignore", "show", "warn", "hide"]
        }
      }
    },
    "savedFeed": {
      "type": "object",
      "required": ["id", "type", "value", "pinned"],
      "properties": {
        "id": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "knownValues": ["feed", "list", "timeline"]
        },
        "value": {
          "type": "string"
        },
        "pinned": {
          "type": "boolean"
        }
      }
    },
    "savedFeedsPrefV2": {
      "type": "object",
      "required": ["items"],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "app.bsky.actor.defs#savedFeed"
          }
        }
      }
    },
    "savedFeedsPref": {
      "type": "object",
      "required": ["pinned", "saved"],
      "properties": {
        "pinned": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "at-uri"
          }
        },
        "saved": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "at-uri"
          }
        },
        "timelineIndex": {
          "type": "integer"
        }
      }
    },
    "personalDetailsPref": {
      "type": "object",
      "properties": {
        "birthDate": {
          "type": "string",
          "format": "datetime",
          "description": "The birth date of account owner."
        }
      }
    },
    "feedViewPref": {
      "type": "object",
      "required": ["feed"],
      "properties": {
        "feed": {
          "type": "string",
          "description": "The URI of the feed, or an identifier which describes the feed."
        },
        "hideReplies": {
          "type": "boolean",
          "description": "Hide replies in the feed."
        },
        "hideRepliesByUnfollowed": {
          "type": "boolean",
          "description": "Hide replies in the feed if they are not by followed users.",
          "default": true
        },
        "hideRepliesByLikeCount": {
          "type": "integer",
          "description": "Hide replies in the feed if they do not have this number of likes."
        },
        "hideReposts": {
          "type": "boolean",
          "description": "Hide reposts in the feed."
        },
        "hideQuotePosts": {
          "type": "boolean",
          "description": "Hide quote posts in the feed."
        }
      }
    },
    "threadViewPref": {
      "type": "object",
      "properties": {
        "sort": {
          "type": "string",
          "description": "Sorting mode for threads.",
          "knownValues": ["oldest", "newest", "most-likes", "random", "hotness"]
        },
        "prioritizeFollowedUsers": {
          "type": "boolean",
          "description": "Show followed users at the top of all replies."
        }
      }
    },
    "interestsPref": {
      "type": "object",
      "required": ["tags"],
      "properties": {
        "tags": {
          "type": "array",
          "maxLength": 100,
          "items": { "type": "string", "maxLength": 640, "maxGraphemes": 64 },
          "description": "A list of tags which describe the account owner's interests gathered during onboarding."
        }
      }
    },
    "mutedWordTarget": {
      "type": "string",
      "knownValues": ["content", "tag"],
      "maxLength": 640,
      "maxGraphemes": 64
    },
    "mutedWord": {
      "type": "object",
      "description": "A word that the account owner has muted.",
      "required": ["value", "targets"],
      "properties": {
        "id": { "type": "string" },
        "value": {
          "type": "string",
          "description": "The muted word itself.",
          "maxLength": 10000,
          "maxGraphemes": 1000
        },
        "targets": {
          "type": "array",
          "description": "The intended targets of the muted word.",
          "items": {
            "type": "ref",
            "ref": "app.bsky.actor.defs#mutedWordTarget"
          }
        },
        "actorTarget": {
          "type": "string",
          "description": "Groups of users to apply the muted word to. If undefined, applies to all users.",
          "knownValues": ["all", "exclude-following"],
          "default": "all"
        },
        "expiresAt": {
          "type": "string",
          "format": "datetime",
          "description": "The date and time at which the muted word will expire and no longer be applied."
        }
      }
    },
    "mutedWordsPref": {
      "type": "object",
      "required": ["items"],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "app.bsky.actor.defs#mutedWord"
          },
          "description": "A list of words the account owner has muted."
        }
      }
    },
    "hiddenPostsPref": {
      "type": "object",
      "required": ["items"],
      "properties": {
        "items": {
          "type": "array",
          "items": { "type": "string", "format": "at-uri" },
          "description": "A list of URIs of posts the account owner has hidden."
        }
      }
    },
    "labelersPref": {
      "type": "object",
      "required": ["labelers"],
      "properties": {
        "labelers": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "#labelerPrefItem"
          }
        }
      }
    },
    "labelerPrefItem": {
      "type": "object",
      "required": ["did"],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        }
      }
    },
    "bskyAppStatePref": {
      "description": "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.",
      "type": "object",
      "properties": {
        "activeProgressGuide": {
          "type": "ref",
          "ref": "#bskyAppProgressGuide"
        },
        "queuedNudges": {
          "description": "An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.",
          "type": "array",
          "maxLength": 1000,
          "items": { "type": "string", "maxLength": 100 }
        },
        "nuxs": {
          "description": "Storage for NUXs the user has encountered.",
          "type": "array",
          "maxLength": 100,
          "items": {
            "type": "ref",
            "ref": "app.bsky.actor.defs#nux"
          }
        }
      }
    },
    "bskyAppProgressGuide": {
      "description": "If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.",
      "type": "object",
      "required": ["guide"],
      "properties": {
        "guide": { "type": "string", "maxLength": 100 }
      }
    },
    "nux": {
      "type": "object",
      "description": "A new user experiences (NUX) storage object",
      "required": ["id", "completed"],
      "properties": {
        "id": {
          "type": "string",
          "maxLength": 100
        },
        "completed": {
          "type": "boolean",
          "default": false
        },
        "data": {
          "description": "Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.",
          "type": "string",
          "maxLength": 3000,
          "maxGraphemes": 300
        },
        "expiresAt": {
          "type": "string",
          "format": "datetime",
          "description": "The date and time at which the NUX will expire and should be considered completed."
        }
      }
    }
  }
}