io.atcr.manifest

atcr.io

{
  "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
}

Validate Record

Validate a record against io.atcr.manifest

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:wfj5kyialpmcv2fzk6uqwsln
CID
bafyreibqqkjhn4r5nxh3jpsrtkifjfcz3xqpde52hvmjnuzse6h4xogs6q
Indexed At
2026-01-10 02:49 UTC
AT-URI
at://did:plc:wfj5kyialpmcv2fzk6uqwsln/com.atproto.lexicon.schema/io.atcr.manifest

Lexicon Garden

@