{
	"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."
				}
			}
		}
	}
}
