{
	"lexicon": 1,
	"id": "app.bsky.graph.defs",
	"defs": {
		"listViewBasic": {
			"type": "object",
			"required": ["uri", "cid", "name", "purpose"],
			"properties": {
				"uri": { "type": "string", "format": "at-uri" },
				"cid": { "type": "string", "format": "cid" },
				"name": { "type": "string", "maxLength": 64, "minLength": 1 },
				"purpose": { "type": "ref", "ref": "#listPurpose" },
				"avatar": { "type": "string", "format": "uri" },
				"listItemCount": { "type": "integer", "minimum": 0 },
				"labels": {
					"type": "array",
					"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
				},
				"viewer": { "type": "ref", "ref": "#listViewerState" },
				"indexedAt": { "type": "string", "format": "datetime" }
			}
		},
		"listView": {
			"type": "object",
			"required": ["uri", "cid", "creator", "name", "purpose", "indexedAt"],
			"properties": {
				"uri": { "type": "string", "format": "at-uri" },
				"cid": { "type": "string", "format": "cid" },
				"creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" },
				"name": { "type": "string", "maxLength": 64, "minLength": 1 },
				"purpose": { "type": "ref", "ref": "#listPurpose" },
				"description": {
					"type": "string",
					"maxGraphemes": 300,
					"maxLength": 3000
				},
				"descriptionFacets": {
					"type": "array",
					"items": { "type": "ref", "ref": "app.bsky.richtext.facet" }
				},
				"avatar": { "type": "string", "format": "uri" },
				"listItemCount": { "type": "integer", "minimum": 0 },
				"labels": {
					"type": "array",
					"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
				},
				"viewer": { "type": "ref", "ref": "#listViewerState" },
				"indexedAt": { "type": "string", "format": "datetime" }
			}
		},
		"listItemView": {
			"type": "object",
			"required": ["uri", "subject"],
			"properties": {
				"uri": { "type": "string", "format": "at-uri" },
				"subject": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }
			}
		},
		"starterPackView": {
			"type": "object",
			"required": ["uri", "cid", "record", "creator", "indexedAt"],
			"properties": {
				"uri": { "type": "string", "format": "at-uri" },
				"cid": { "type": "string", "format": "cid" },
				"record": { "type": "unknown" },
				"creator": {
					"type": "ref",
					"ref": "app.bsky.actor.defs#profileViewBasic"
				},
				"list": { "type": "ref", "ref": "#listViewBasic" },
				"listItemsSample": {
					"type": "array",
					"maxLength": 12,
					"items": { "type": "ref", "ref": "#listItemView" }
				},
				"feeds": {
					"type": "array",
					"maxLength": 3,
					"items": { "type": "ref", "ref": "app.bsky.feed.defs#generatorView" }
				},
				"joinedWeekCount": { "type": "integer", "minimum": 0 },
				"joinedAllTimeCount": { "type": "integer", "minimum": 0 },
				"labels": {
					"type": "array",
					"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
				},
				"indexedAt": { "type": "string", "format": "datetime" }
			}
		},
		"starterPackViewBasic": {
			"type": "object",
			"required": ["uri", "cid", "record", "creator", "indexedAt"],
			"properties": {
				"uri": { "type": "string", "format": "at-uri" },
				"cid": { "type": "string", "format": "cid" },
				"record": { "type": "unknown" },
				"creator": {
					"type": "ref",
					"ref": "app.bsky.actor.defs#profileViewBasic"
				},
				"listItemCount": { "type": "integer", "minimum": 0 },
				"joinedWeekCount": { "type": "integer", "minimum": 0 },
				"joinedAllTimeCount": { "type": "integer", "minimum": 0 },
				"labels": {
					"type": "array",
					"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
				},
				"indexedAt": { "type": "string", "format": "datetime" }
			}
		},
		"listPurpose": {
			"type": "string",
			"knownValues": [
				"app.bsky.graph.defs#modlist",
				"app.bsky.graph.defs#curatelist",
				"app.bsky.graph.defs#referencelist"
			]
		},
		"modlist": {
			"type": "token",
			"description": "A list of actors to apply an aggregate moderation action (mute/block) on."
		},
		"curatelist": {
			"type": "token",
			"description": "A list of actors used for curation purposes such as list feeds or interaction gating."
		},
		"referencelist": {
			"type": "token",
			"description": "A list of actors used for only for reference purposes such as within a starter pack."
		},
		"listViewerState": {
			"type": "object",
			"properties": {
				"muted": { "type": "boolean" },
				"blocked": { "type": "string", "format": "at-uri" }
			}
		},
		"notFoundActor": {
			"type": "object",
			"description": "indicates that a handle or DID could not be resolved",
			"required": ["actor", "notFound"],
			"properties": {
				"actor": { "type": "string", "format": "at-identifier" },
				"notFound": { "type": "boolean", "const": true }
			}
		},
		"relationship": {
			"type": "object",
			"description": "lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)",
			"required": ["did"],
			"properties": {
				"did": { "type": "string", "format": "did" },
				"following": {
					"type": "string",
					"format": "at-uri",
					"description": "if the actor follows this DID, this is the AT-URI of the follow record"
				},
				"followedBy": {
					"type": "string",
					"format": "at-uri",
					"description": "if the actor is followed by this DID, contains the AT-URI of the follow record"
				}
			}
		}
	}
}
