{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A single image and its descriptive metadata, stored as a signed atproto record.",
      "key": "tid",
      "record": {
        "properties": {
          "albumUris": {
            "description": "schema:isPartOf — denormalized parent album AT URIs.",
            "items": {
              "format": "at-uri",
              "type": "string"
            },
            "maxLength": 100,
            "type": "array"
          },
          "c2paActiveManifestId": {
            "description": "ATPix · C2PA §8.1 — instance ID of active manifest in embedded manifest store.",
            "maxLength": 256,
            "type": "string"
          },
          "c2paIngredientUri": {
            "description": "ATPix · C2PA §18.15 — upstream ingredient URI for derived assets.",
            "format": "uri",
            "type": "string"
          },
          "c2paLastAction": {
            "description": "ATPix · C2PA §18.14 — latest action type (e.g. c2pa.created, c2pa.edited.metadata).",
            "maxLength": 64,
            "type": "string"
          },
          "c2paManifestStoreUri": {
            "description": "ATPix · C2PA §11.4 — URI when manifest store is external to blob.",
            "format": "uri",
            "type": "string"
          },
          "c2paValidationState": {
            "description": "ATPix · C2PA §14.3 — cached validator state at last index/display.",
            "knownValues": [
              "none",
              "wellFormed",
              "valid",
              "trusted",
              "invalid"
            ],
            "type": "string"
          },
          "caption": {
            "description": "schema:caption — display caption.",
            "maxLength": 2000,
            "type": "string"
          },
          "contributor": {
            "description": "dc:contributor — additional contributor DID.",
            "format": "did",
            "type": "string"
          },
          "copyrightHolder": {
            "description": "schema:copyrightHolder — rights holder DID.",
            "format": "did",
            "type": "string"
          },
          "createdAt": {
            "description": "dc:date · schema:dateCreated — RFC 3339 UTC.",
            "format": "datetime",
            "type": "string"
          },
          "creator": {
            "description": "dc:creator · schema:creator — author DID; defaults to record owner if omitted.",
            "format": "did",
            "type": "string"
          },
          "description": {
            "description": "dc:description · schema:description — longer description.",
            "maxLength": 5000,
            "type": "string"
          },
          "height": {
            "description": "schema:height — height in pixels.",
            "minimum": 1,
            "type": "integer"
          },
          "image": {
            "accept": [
              "image/*"
            ],
            "description": "schema:contentUrl (blob ref) · dc:format (MIME on blob) — primary image.",
            "maxSize": 50000000,
            "type": "blob"
          },
          "inLanguage": {
            "description": "dc:language · schema:inLanguage — BCP 47 tag.",
            "maxLength": 35,
            "type": "string"
          },
          "keywords": {
            "description": "dc:subject · schema:keywords — tags; matched by collectionRule hashtags.",
            "items": {
              "maxLength": 64,
              "type": "string"
            },
            "maxLength": 50,
            "type": "array"
          },
          "license": {
            "description": "dc:rights · schema:license — license document URI.",
            "format": "uri",
            "type": "string"
          },
          "locationCreated": {
            "description": "schema:locationCreated — capture location.",
            "ref": "net.atpix.gallery.defs#geoPlace",
            "type": "ref"
          },
          "modifiedAt": {
            "description": "schema:dateModified — RFC 3339 UTC.",
            "format": "datetime",
            "type": "string"
          },
          "source": {
            "description": "dc:source · schema:isBasedOn — provenance AT URI if imported.",
            "format": "at-uri",
            "type": "string"
          },
          "spaceUri": {
            "description": "ATPix · ATP-0016 — proposal-form at://…/space/… URI when visibility is permissioned.",
            "maxLength": 512,
            "type": "string"
          },
          "thumbnail": {
            "accept": [
              "image/*"
            ],
            "description": "schema:thumbnail — optional preview blob.",
            "maxSize": 5000000,
            "type": "blob"
          },
          "title": {
            "description": "dc:title · schema:name — short title.",
            "maxLength": 500,
            "type": "string"
          },
          "visibility": {
            "description": "ATPix — public, unlisted, or permissioned (space-gated).",
            "ref": "net.atpix.gallery.defs#visibility",
            "type": "ref"
          },
          "width": {
            "description": "schema:width — width in pixels.",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "image",
          "createdAt",
          "visibility"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "ATPix photo record. Metadata mapped to Dublin Core and Schema.org ImageObject terms (see docs/lexicon/net.atpix.gallery.md).",
  "id": "net.atpix.gallery.photo",
  "lexicon": 1
}
