{
  "lexicon": 1,
  "id": "app.bsky.labeler.defs",
  "defs": {
    "labelerView": {
      "type": "object",
      "required": ["uri", "cid", "creator", "indexedAt"],
      "properties": {
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "creator": {
          "type": "ref",
          "ref": "app.bsky.actor.defs#profileView"
        },
        "likeCount": {
          "type": "integer",
          "minimum": 0
        },
        "viewer": {
          "type": "ref",
          "ref": "#labelerViewerState"
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime"
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "com.atproto.label.defs#label"
          }
        }
      }
    },
    "labelerViewDetailed": {
      "type": "object",
      "required": ["uri", "cid", "creator", "policies", "indexedAt"],
      "properties": {
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "creator": {
          "type": "ref",
          "ref": "app.bsky.actor.defs#profileView"
        },
        "policies": {
          "type": "ref",
          "ref": "app.bsky.labeler.defs#labelerPolicies"
        },
        "likeCount": {
          "type": "integer",
          "minimum": 0
        },
        "viewer": {
          "type": "ref",
          "ref": "#labelerViewerState"
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime"
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "com.atproto.label.defs#label"
          }
        },
        "reasonTypes": {
          "description": "The set of report reason 'codes' which are in-scope for this service to review and action. These usually align to policy categories. If not defined (distinct from empty array), all reason types are allowed.",
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "com.atproto.moderation.defs#reasonType"
          }
        },
        "subjectTypes": {
          "description": "The set of subject types (account, record, etc) this service accepts reports on.",
          "type": "array",
          "items": {
            "type": "ref",
            "ref": "com.atproto.moderation.defs#subjectType"
          }
        },
        "subjectCollections": {
          "type": "array",
          "description": "Set of record types (collection NSIDs) which can be reported to this service. If not defined (distinct from empty array), default is any record type.",
          "items": {
            "type": "string",
            "format": "nsid"
          }
        }
      }
    },
    "labelerViewerState": {
      "type": "object",
      "properties": {
        "like": {
          "type": "string",
          "format": "at-uri"
        }
      }
    },
    "labelerPolicies": {
      "type": "object",
      "required": ["labelValues"],
      "properties": {
        "labelValues": {
          "type": "array",
          "description": "The label values which this labeler publishes. May include global or custom labels.",
          "items": {
            "type": "ref",
            "ref": "com.atproto.label.defs#labelValue"
          }
        },
        "labelValueDefinitions": {
          "type": "array",
          "description": "Label values created by this labeler and scoped exclusively to it. Labels defined here will override global label definitions for this labeler.",
          "items": {
            "type": "ref",
            "ref": "com.atproto.label.defs#labelValueDefinition"
          }
        }
      }
    }
  }
}
