{
  "lexicon": 1,
  "id": "app.bsky.actor.defs",
  "defs": {
    "adultContentPref": {
      "type": "object",
      "required": [
        "enabled"
      ],
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": false
        }
      }
    },
    "bskyAppProgressGuide": {
      "type": "object",
      "description": "If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress.",
      "required": [
        "guide"
      ],
      "properties": {
        "guide": {
          "type": "string",
          "maxLength": 100
        }
      }
    },
    "bskyAppStatePref": {
      "type": "object",
      "description": "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this.",
      "properties": {
        "activeProgressGuide": {
          "type": "ref",
          "ref": "#bskyAppProgressGuide"
        },
        "nuxs": {
          "type": "array",
          "description": "Storage for NUXs the user has encountered.",
          "items": {
            "type": "ref",
            "ref": "app.bsky.actor.defs#nux"
          },
          "maxLength": 100
        },
        "queuedNudges": {
          "type": "array",
          "description": "An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.",
          "items": {
            "type": "string",
            "maxLength": 100
          },
          "maxLength": 1000
        }
      }
    },
    "contentLabelPref": {
      "type": "object",
      "required": [
        "label",
        "visibility"
      ],
      "properties": {
        "label": {
          "type": "string"
        },
        "labelerDid": {
          "type": "string",
          "description": "Which labeler does this preference apply to? If undefined, applies globally.",
          "format": "did"
        },
        "visibility": {
          "type": "string",
          "knownValues": [
            "ignore",
            "show",
            "warn",
            "hide"
          ]
        }
      }
    },
    "declaredAgePref": {
      "type": "object",
      "description": "Read-only preference containing value(s) inferred from the user's declared birthdate. Absence of this preference object in the response indicates that the user has not made a declaration.",
      "properties": {
        "isOverAge13": {
          "type": "boolean",
          "description": "Indicates if the user has declared that they are over 13 years of age."
        },
        "isOverAge16": {
          "type": "boolean",
          "description": "Indicates if the user has declared that they are over 16 years of age."
        },
        "isOverAge18": {
          "type": "boolean",
          "description": "Indicates if the user has declared that they are over 18 years of age."
        }
      }
    },
    "feedViewPref": {
      "type": "object",
      "required": [
        "feed"
      ],
      "properties": {
        "feed": {
          "type": "string",
          "description": "The URI of the feed, or an identifier which describes the feed."
        },
        "hideQuotePosts": {
          "type": "boolean",
          "description": "Hide quote posts in the feed."
        },
        "hideReplies": {
          "type": "boolean",
          "description": "Hide replies in the feed."
        },
        "hideRepliesByLikeCount": {
          "type": "integer",
          "description": "Hide replies in the feed if they do not have this number of likes."
        },
        "hideRepliesByUnfollowed": {
          "type": "boolean",
          "description": "Hide replies in the feed if they are not by followed users.",
          "default": true
        },
        "hideReposts": {
          "type": "boolean",
          "description": "Hide reposts in the feed."
        }
      }
    },
    "hiddenPostsPref": {
      "type": "object",
      "required": [
        "items"
      ],
      "properties": {
        "items": {
          "type": "array",
          "description": "A list of URIs of posts the account owner has hidden.",
          "items": {
            "type": "string",
            "format": "at-uri"
          }
        }
      }
    },
    "interestsPref": {
      "type": "object",
      "required": [
        "tags"
      ],
      "properties": {
        "tags": {
          "type": "array",
          "description": "A list of tags which describe the account owner's interests gathered during onboarding.",
          "items": {
            "type": "string",
            "maxLength": 640,
            "maxGraphemes": 64
          },
          "maxLength": 100
        }
      }
    },
    "knownFollowers": {
      "type": "object",
      "description": "The subject's followers whom you also follow",
      "required": [
        "count",
        "followers"
      ],
      "properties": {
        "count": {
          "type": "integer"
        },
        "followers": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "#profileViewBasic"
          },
          "minLength": 0,
          "maxLength": 5
        }
      }
    },
    "labelerPrefItem": {
      "type": "object",
      "required": [
        "did"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        }
      }
    },
    "labelersPref": {
      "type": "object",
      "required": [
        "labelers"
      ],
      "properties": {
        "labelers": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "#labelerPrefItem"
          }
        }
      }
    },
    "liveEventPreferences": {
      "type": "object",
      "description": "Preferences for live events.",
      "properties": {
        "hiddenFeedIds": {
          "type": "array",
          "description": "A list of feed IDs that the user has hidden from live events.",
          "items": {
            "type": "string"
          }
        },
        "hideAllFeeds": {
          "type": "boolean",
          "description": "Whether to hide all feeds from live events.",
          "default": false
        }
      }
    },
    "mutedWord": {
      "type": "object",
      "description": "A word that the account owner has muted.",
      "required": [
        "value",
        "targets"
      ],
      "properties": {
        "actorTarget": {
          "type": "string",
          "description": "Groups of users to apply the muted word to. If undefined, applies to all users.",
          "default": "all",
          "knownValues": [
            "all",
            "exclude-following"
          ]
        },
        "expiresAt": {
          "type": "string",
          "description": "The date and time at which the muted word will expire and no longer be applied.",
          "format": "datetime"
        },
        "id": {
          "type": "string"
        },
        "targets": {
          "type": "array",
          "description": "The intended targets of the muted word.",
          "items": {
            "type": "ref",
            "ref": "app.bsky.actor.defs#mutedWordTarget"
          }
        },
        "value": {
          "type": "string",
          "description": "The muted word itself.",
          "maxLength": 10000,
          "maxGraphemes": 1000
        }
      }
    },
    "mutedWordTarget": {
      "type": "string",
      "maxLength": 640,
      "maxGraphemes": 64,
      "knownValues": [
        "content",
        "tag"
      ]
    },
    "mutedWordsPref": {
      "type": "object",
      "required": [
        "items"
      ],
      "properties": {
        "items": {
          "type": "array",
          "description": "A list of words the account owner has muted.",
          "items": {
            "type": "ref",
            "ref": "app.bsky.actor.defs#mutedWord"
          }
        }
      }
    },
    "nux": {
      "type": "object",
      "description": "A new user experiences (NUX) storage object",
      "required": [
        "id",
        "completed"
      ],
      "properties": {
        "completed": {
          "type": "boolean",
          "default": false
        },
        "data": {
          "type": "string",
          "description": "Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.",
          "maxLength": 3000,
          "maxGraphemes": 300
        },
        "expiresAt": {
          "type": "string",
          "description": "The date and time at which the NUX will expire and should be considered completed.",
          "format": "datetime"
        },
        "id": {
          "type": "string",
          "maxLength": 100
        }
      }
    },
    "personalDetailsPref": {
      "type": "object",
      "properties": {
        "birthDate": {
          "type": "string",
          "description": "The birth date of account owner.",
          "format": "datetime"
        }
      }
    },
    "postInteractionSettingsPref": {
      "type": "object",
      "description": "Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly.",
      "required": [],
      "properties": {
        "postgateEmbeddingRules": {
          "type": "array",
          "description": "Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed.",
          "items": {
            "type": "union",
            "refs": [
              "app.bsky.feed.postgate#disableRule"
            ]
          },
          "maxLength": 5
        },
        "threadgateAllowRules": {
          "type": "array",
          "description": "Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply.",
          "items": {
            "type": "union",
            "refs": [
              "app.bsky.feed.threadgate#mentionRule",
              "app.bsky.feed.threadgate#followerRule",
              "app.bsky.feed.threadgate#followingRule",
              "app.bsky.feed.threadgate#listRule"
            ]
          },
          "maxLength": 5
        }
      }
    },
    "preferences": {
      "type": "array",
      "items": {
        "type": "union",
        "refs": [
          "#adultContentPref",
          "#contentLabelPref",
          "#savedFeedsPref",
          "#savedFeedsPrefV2",
          "#personalDetailsPref",
          "#declaredAgePref",
          "#feedViewPref",
          "#threadViewPref",
          "#interestsPref",
          "#mutedWordsPref",
          "#hiddenPostsPref",
          "#bskyAppStatePref",
          "#labelersPref",
          "#postInteractionSettingsPref",
          "#verificationPrefs",
          "#liveEventPreferences"
        ]
      }
    },
    "profileAssociated": {
      "type": "object",
      "properties": {
        "activitySubscription": {
          "type": "ref",
          "ref": "#profileAssociatedActivitySubscription"
        },
        "chat": {
          "type": "ref",
          "ref": "#profileAssociatedChat"
        },
        "feedgens": {
          "type": "integer"
        },
        "germ": {
          "type": "ref",
          "ref": "#profileAssociatedGerm"
        },
        "labeler": {
          "type": "boolean"
        },
        "lists": {
          "type": "integer"
        },
        "starterPacks": {
          "type": "integer"
        }
      }
    },
    "profileAssociatedActivitySubscription": {
      "type": "object",
      "required": [
        "allowSubscriptions"
      ],
      "properties": {
        "allowSubscriptions": {
          "type": "string",
          "knownValues": [
            "followers",
            "mutuals",
            "none"
          ]
        }
      }
    },
    "profileAssociatedChat": {
      "type": "object",
      "required": [
        "allowIncoming"
      ],
      "properties": {
        "allowGroupInvites": {
          "type": "string",
          "knownValues": [
            "all",
            "none",
            "following"
          ]
        },
        "allowIncoming": {
          "type": "string",
          "knownValues": [
            "all",
            "none",
            "following"
          ]
        }
      }
    },
    "profileAssociatedGerm": {
      "type": "object",
      "required": [
        "showButtonTo",
        "messageMeUrl"
      ],
      "properties": {
        "messageMeUrl": {
          "type": "string",
          "format": "uri"
        },
        "showButtonTo": {
          "type": "string",
          "knownValues": [
            "usersIFollow",
            "everyone"
          ]
        }
      }
    },
    "profileView": {
      "type": "object",
      "required": [
        "did",
        "handle"
      ],
      "properties": {
        "associated": {
          "type": "ref",
          "ref": "#profileAssociated"
        },
        "avatar": {
          "type": "string",
          "format": "uri"
        },
        "createdAt": {
          "type": "string",
          "format": "datetime"
        },
        "debug": {
          "type": "unknown",
          "description": "Debug information for internal development"
        },
        "description": {
          "type": "string",
          "maxLength": 2560,
          "maxGraphemes": 256
        },
        "did": {
          "type": "string",
          "format": "did"
        },
        "displayName": {
          "type": "string",
          "maxLength": 640,
          "maxGraphemes": 64
        },
        "handle": {
          "type": "string",
          "format": "handle"
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime"
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "com.atproto.label.defs#label"
          }
        },
        "pronouns": {
          "type": "string"
        },
        "status": {
          "type": "ref",
          "ref": "#statusView"
        },
        "verification": {
          "type": "ref",
          "ref": "#verificationState"
        },
        "viewer": {
          "type": "ref",
          "ref": "#viewerState"
        }
      }
    },
    "profileViewBasic": {
      "type": "object",
      "required": [
        "did",
        "handle"
      ],
      "properties": {
        "associated": {
          "type": "ref",
          "ref": "#profileAssociated"
        },
        "avatar": {
          "type": "string",
          "format": "uri"
        },
        "createdAt": {
          "type": "string",
          "format": "datetime"
        },
        "debug": {
          "type": "unknown",
          "description": "Debug information for internal development"
        },
        "did": {
          "type": "string",
          "format": "did"
        },
        "displayName": {
          "type": "string",
          "maxLength": 640,
          "maxGraphemes": 64
        },
        "handle": {
          "type": "string",
          "format": "handle"
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "com.atproto.label.defs#label"
          }
        },
        "pronouns": {
          "type": "string"
        },
        "status": {
          "type": "ref",
          "ref": "#statusView"
        },
        "verification": {
          "type": "ref",
          "ref": "#verificationState"
        },
        "viewer": {
          "type": "ref",
          "ref": "#viewerState"
        }
      }
    },
    "profileViewDetailed": {
      "type": "object",
      "required": [
        "did",
        "handle"
      ],
      "properties": {
        "associated": {
          "type": "ref",
          "ref": "#profileAssociated"
        },
        "avatar": {
          "type": "string",
          "format": "uri"
        },
        "banner": {
          "type": "string",
          "format": "uri"
        },
        "createdAt": {
          "type": "string",
          "format": "datetime"
        },
        "debug": {
          "type": "unknown",
          "description": "Debug information for internal development"
        },
        "description": {
          "type": "string",
          "maxLength": 2560,
          "maxGraphemes": 256
        },
        "did": {
          "type": "string",
          "format": "did"
        },
        "displayName": {
          "type": "string",
          "maxLength": 640,
          "maxGraphemes": 64
        },
        "followersCount": {
          "type": "integer"
        },
        "followsCount": {
          "type": "integer"
        },
        "handle": {
          "type": "string",
          "format": "handle"
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime"
        },
        "joinedViaStarterPack": {
          "type": "ref",
          "ref": "app.bsky.graph.defs#starterPackViewBasic"
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "com.atproto.label.defs#label"
          }
        },
        "pinnedPost": {
          "type": "ref",
          "ref": "com.atproto.repo.strongRef"
        },
        "postsCount": {
          "type": "integer"
        },
        "pronouns": {
          "type": "string"
        },
        "status": {
          "type": "ref",
          "ref": "#statusView"
        },
        "verification": {
          "type": "ref",
          "ref": "#verificationState"
        },
        "viewer": {
          "type": "ref",
          "ref": "#viewerState"
        },
        "website": {
          "type": "string",
          "format": "uri"
        }
      }
    },
    "savedFeed": {
      "type": "object",
      "required": [
        "id",
        "type",
        "value",
        "pinned"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "pinned": {
          "type": "boolean"
        },
        "type": {
          "type": "string",
          "knownValues": [
            "feed",
            "list",
            "timeline"
          ]
        },
        "value": {
          "type": "string"
        }
      }
    },
    "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"
        }
      }
    },
    "savedFeedsPrefV2": {
      "type": "object",
      "required": [
        "items"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "app.bsky.actor.defs#savedFeed"
          }
        }
      }
    },
    "statusView": {
      "type": "object",
      "required": [
        "status",
        "record"
      ],
      "properties": {
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "embed": {
          "type": "union",
          "description": "An optional embed associated with the status.",
          "refs": [
            "app.bsky.embed.external#view"
          ]
        },
        "expiresAt": {
          "type": "string",
          "description": "The date when this status will expire. The application might choose to no longer return the status after expiration.",
          "format": "datetime"
        },
        "isActive": {
          "type": "boolean",
          "description": "True if the status is not expired, false if it is expired. Only present if expiration was set."
        },
        "isDisabled": {
          "type": "boolean",
          "description": "True if the user's go-live access has been disabled by a moderator, false otherwise."
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "com.atproto.label.defs#label"
          }
        },
        "record": {
          "type": "unknown"
        },
        "status": {
          "type": "string",
          "description": "The status for the account.",
          "knownValues": [
            "app.bsky.actor.status#live"
          ]
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        }
      }
    },
    "threadViewPref": {
      "type": "object",
      "properties": {
        "sort": {
          "type": "string",
          "description": "Sorting mode for threads.",
          "knownValues": [
            "oldest",
            "newest",
            "most-likes",
            "random",
            "hotness"
          ]
        }
      }
    },
    "verificationPrefs": {
      "type": "object",
      "description": "Preferences for how verified accounts appear in the app.",
      "required": [],
      "properties": {
        "hideBadges": {
          "type": "boolean",
          "description": "Hide the blue check badges for verified accounts and trusted verifiers.",
          "default": false
        }
      }
    },
    "verificationState": {
      "type": "object",
      "description": "Represents the verification information about the user this object is attached to.",
      "required": [
        "verifications",
        "verifiedStatus",
        "trustedVerifierStatus"
      ],
      "properties": {
        "trustedVerifierStatus": {
          "type": "string",
          "description": "The user's status as a trusted verifier.",
          "knownValues": [
            "valid",
            "invalid",
            "none"
          ]
        },
        "verifications": {
          "type": "array",
          "description": "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included.",
          "items": {
            "type": "ref",
            "ref": "#verificationView"
          }
        },
        "verifiedStatus": {
          "type": "string",
          "description": "The user's status as a verified account.",
          "knownValues": [
            "valid",
            "invalid",
            "none"
          ]
        }
      }
    },
    "verificationView": {
      "type": "object",
      "description": "An individual verification for an associated subject.",
      "required": [
        "issuer",
        "uri",
        "isValid",
        "createdAt"
      ],
      "properties": {
        "createdAt": {
          "type": "string",
          "description": "Timestamp when the verification was created.",
          "format": "datetime"
        },
        "isValid": {
          "type": "boolean",
          "description": "True if the verification passes validation, otherwise false."
        },
        "issuer": {
          "type": "string",
          "description": "The user who issued this verification.",
          "format": "did"
        },
        "issuerDisplayName": {
          "type": "string",
          "description": "The display name of the issuer."
        },
        "issuerHandle": {
          "type": "string",
          "description": "The handle of the issuer.",
          "format": "handle"
        },
        "uri": {
          "type": "string",
          "description": "The AT-URI of the verification record.",
          "format": "at-uri"
        }
      }
    },
    "viewerState": {
      "type": "object",
      "description": "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests.",
      "properties": {
        "activitySubscription": {
          "type": "ref",
          "description": "This property is present only in selected cases, as an optimization.",
          "ref": "app.bsky.notification.defs#activitySubscription"
        },
        "blockedBy": {
          "type": "boolean"
        },
        "blocking": {
          "type": "string",
          "format": "at-uri"
        },
        "blockingByList": {
          "type": "ref",
          "ref": "app.bsky.graph.defs#listViewBasic"
        },
        "followedBy": {
          "type": "string",
          "format": "at-uri"
        },
        "following": {
          "type": "string",
          "format": "at-uri"
        },
        "knownFollowers": {
          "type": "ref",
          "description": "This property is present only in selected cases, as an optimization.",
          "ref": "#knownFollowers"
        },
        "muted": {
          "type": "boolean"
        },
        "mutedByList": {
          "type": "ref",
          "ref": "app.bsky.graph.defs#listViewBasic"
        }
      }
    }
  }
}