{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "keyword": {
      "description": "Research keyword referencing a topic node",
      "properties": {
        "fastId": {
          "description": "FAST subject heading ID for legacy/external data",
          "maxLength": 20,
          "type": "string"
        },
        "label": {
          "description": "Keyword label (display fallback if no topicUri)",
          "maxLength": 100,
          "type": "string"
        },
        "topicUri": {
          "description": "AT-URI of topic node (subkind=topic)",
          "format": "at-uri",
          "type": "string"
        },
        "wikidataId": {
          "description": "Wikidata entity ID (e.g., Q12345) for legacy/external data",
          "maxLength": 20,
          "type": "string"
        }
      },
      "required": [
        "label"
      ],
      "type": "object"
    },
    "main": {
      "description": "Chive-specific author profile",
      "key": "literal:self",
      "record": {
        "properties": {
          "affiliations": {
            "description": "Current institutional affiliations with optional ROR IDs",
            "items": {
              "ref": "pub.chive.defs#affiliation",
              "type": "ref"
            },
            "maxLength": 10,
            "type": "array"
          },
          "arxivAuthorId": {
            "description": "arXiv author identifier",
            "maxLength": 100,
            "type": "string"
          },
          "avatar": {
            "accept": [
              "image/png",
              "image/jpeg"
            ],
            "maxSize": 1048576,
            "type": "blob"
          },
          "bio": {
            "maxLength": 2000,
            "type": "string"
          },
          "bioRich": {
            "description": "Rich bio with formatting and entity references, the same item union reviews and abstracts use. `bio` holds the plain text of it, for consumers that want a string.",
            "items": {
              "refs": [
                "pub.chive.richtext.defs#textItem",
                "pub.chive.richtext.defs#nodeRefItem",
                "pub.chive.richtext.defs#wikidataRefItem",
                "pub.chive.richtext.defs#fieldRefItem",
                "pub.chive.richtext.defs#facetRefItem",
                "pub.chive.richtext.defs#eprintRefItem",
                "pub.chive.richtext.defs#annotationRefItem",
                "pub.chive.richtext.defs#authorRefItem",
                "pub.chive.richtext.defs#mentionItem",
                "pub.chive.richtext.defs#linkItem",
                "pub.chive.richtext.defs#tagItem",
                "pub.chive.richtext.defs#latexItem",
                "pub.chive.richtext.defs#codeBlockItem",
                "pub.chive.richtext.defs#headingItem",
                "pub.chive.richtext.defs#listItem",
                "pub.chive.richtext.defs#blockquoteItem"
              ],
              "type": "union"
            },
            "type": "array"
          },
          "dblpId": {
            "description": "DBLP author identifier (e.g., homepages/s/JohnSmith)",
            "maxLength": 200,
            "type": "string"
          },
          "displayName": {
            "maxLength": 200,
            "type": "string"
          },
          "fieldUris": {
            "description": "AT-URIs of field nodes (subkind=field)",
            "items": {
              "format": "at-uri",
              "type": "string"
            },
            "maxLength": 20,
            "type": "array"
          },
          "googleScholarId": {
            "description": "Google Scholar profile ID",
            "maxLength": 50,
            "type": "string"
          },
          "nameVariants": {
            "description": "Alternative name forms for paper matching (e.g., maiden name, transliterations, initials like 'J. Smith')",
            "items": {
              "maxLength": 200,
              "type": "string"
            },
            "maxLength": 20,
            "type": "array"
          },
          "openAlexId": {
            "description": "OpenAlex author ID (e.g., A5023888391)",
            "maxLength": 50,
            "type": "string"
          },
          "openReviewId": {
            "description": "OpenReview profile ID",
            "maxLength": 100,
            "type": "string"
          },
          "orcid": {
            "description": "ORCID identifier in the form 0000-0000-0000-000X. The Lexicon spec defines no `pattern` constraint for strings, so the regular expression that used to sit here was ignored by every validator and this field accepted any string. Length is the strongest constraint the spec can express; the digit and checksum shape is enforced in application code.",
            "maxLength": 19,
            "minLength": 19,
            "type": "string"
          },
          "previousAffiliations": {
            "description": "Past institutional affiliations that may appear on older papers",
            "items": {
              "ref": "pub.chive.defs#affiliation",
              "type": "ref"
            },
            "maxLength": 20,
            "type": "array"
          },
          "researchKeywords": {
            "description": "Research topics and keywords with optional authority IDs",
            "items": {
              "ref": "#keyword",
              "type": "ref"
            },
            "maxLength": 50,
            "type": "array"
          },
          "schemaRevision": {
            "description": "Schema revision this record was created with. Absent means revision 1.",
            "minimum": 1,
            "type": "integer"
          },
          "scopusAuthorId": {
            "description": "Scopus author ID",
            "maxLength": 50,
            "type": "string"
          },
          "semanticScholarId": {
            "description": "Semantic Scholar author ID",
            "maxLength": 50,
            "type": "string"
          }
        },
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "pub.chive.actor.profile",
  "lexicon": 1,
  "revision": 2
}
