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