{
"id": "io.atcr.manifest",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"repository",
"digest",
"mediaType",
"schemaVersion",
"createdAt"
],
"properties": {
"config": {
"ref": "#blobReference",
"type": "ref",
"description": "Reference to image configuration blob"
},
"digest": {
"type": "string",
"maxLength": 128,
"description": "Content digest (e.g., 'sha256:abc123...')"
},
"layers": {
"type": "array",
"items": {
"ref": "#blobReference",
"type": "ref"
},
"description": "Filesystem layers (for image manifests)"
},
"holdDid": {
"type": "string",
"format": "did",
"description": "DID of the hold service where blobs are stored (e.g., 'did:web:hold01.atcr.io'). Primary reference for hold resolution."
},
"subject": {
"ref": "#blobReference",
"type": "ref",
"description": "Optional reference to another manifest (for attestations, signatures)"
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Record creation timestamp"
},
"manifests": {
"type": "array",
"items": {
"ref": "#manifestReference",
"type": "ref"
},
"description": "Referenced manifests (for manifest lists/indexes)"
},
"mediaType": {
"type": "string",
"maxLength": 128,
"description": "OCI media type",
"knownValues": [
"application/vnd.oci.image.manifest.v1+json",
"application/vnd.docker.distribution.manifest.v2+json",
"application/vnd.oci.image.index.v1+json",
"application/vnd.docker.distribution.manifest.list.v2+json"
]
},
"repository": {
"type": "string",
"maxLength": 255,
"description": "Repository name (e.g., 'myapp'). Scoped to user's DID."
},
"annotations": {
"type": "unknown",
"description": "Optional OCI annotation metadata. Map of string keys to string values (e.g., org.opencontainers.image.title → 'My App')."
},
"holdEndpoint": {
"type": "string",
"format": "uri",
"description": "Hold service endpoint URL where blobs are stored. DEPRECATED: Use holdDid instead. Kept for backward compatibility."
},
"manifestBlob": {
"type": "blob",
"description": "The full OCI manifest stored as a blob in ATProto."
},
"schemaVersion": {
"type": "integer",
"description": "OCI schema version (typically 2)"
}
}
},
"description": "A container image manifest following OCI specification, stored in ATProto"
},
"platform": {
"type": "object",
"required": [
"architecture",
"os"
],
"properties": {
"os": {
"type": "string",
"maxLength": 32,
"description": "Operating system (e.g., 'linux', 'windows', 'darwin')"
},
"variant": {
"type": "string",
"maxLength": 32,
"description": "Optional CPU variant (e.g., 'v7' for ARM)"
},
"osVersion": {
"type": "string",
"maxLength": 64,
"description": "Optional OS version"
},
"osFeatures": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64
},
"description": "Optional OS features"
},
"architecture": {
"type": "string",
"maxLength": 32,
"description": "CPU architecture (e.g., 'amd64', 'arm64', 'arm')"
}
},
"description": "Platform information describing OS and architecture"
},
"blobReference": {
"type": "object",
"required": [
"mediaType",
"size",
"digest"
],
"properties": {
"size": {
"type": "integer",
"description": "Size in bytes"
},
"urls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "Optional direct URLs to blob (for BYOS)"
},
"digest": {
"type": "string",
"maxLength": 128,
"description": "Content digest (e.g., 'sha256:...')"
},
"mediaType": {
"type": "string",
"maxLength": 128,
"description": "MIME type of the blob"
},
"annotations": {
"type": "unknown",
"description": "Optional OCI annotation metadata. Map of string keys to string values."
}
},
"description": "Reference to a blob stored in S3 or external storage"
},
"manifestReference": {
"type": "object",
"required": [
"mediaType",
"size",
"digest"
],
"properties": {
"size": {
"type": "integer",
"description": "Size in bytes"
},
"digest": {
"type": "string",
"maxLength": 128,
"description": "Content digest (e.g., 'sha256:...')"
},
"platform": {
"ref": "#platform",
"type": "ref",
"description": "Platform information for this manifest"
},
"mediaType": {
"type": "string",
"maxLength": 128,
"description": "Media type of the referenced manifest"
},
"annotations": {
"type": "unknown",
"description": "Optional OCI annotation metadata. Map of string keys to string values."
}
},
"description": "Reference to a manifest in a manifest list/index"
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}