{
  "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"
        },
        "blocking": {
          "type": "string",
          "format": "at-uri",
          "description": "if the actor blocks this DID, this is the AT-URI of the block record"
        },
        "blockedBy": {
          "type": "string",
          "format": "at-uri",
          "description": "if the actor is blocked by this DID, contains the AT-URI of the block record"
        },
        "blockingByList": {
          "type": "string",
          "format": "at-uri",
          "description": "if the actor blocks this DID via a block list, this is the AT-URI of the listblock record"
        },
        "blockedByList": {
          "type": "string",
          "format": "at-uri",
          "description": "if the actor is blocked by this DID via a block list, contains the AT-URI of the listblock record"
        }
      }
    }
  }
}
