at.happyproto.registry.getArtifact

happyproto.at

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "The bytes of a blob the registry has copied, served from its own copy and never redirected to the publisher, so a version stays installable after its publisher deletes it. Name the blob either by version and kind or by its CID. Only blobs that an indexed manifest or publication references are served. The output encoding is `*/*`, as com.atproto.sync.getBlob's is; the media type is the one the blob was published with.",
      "errors": [
        {
          "description": "The registry does not hold that blob: it has not copied it yet, the version does not have one of that kind, or nothing indexed references it.",
          "name": "ArtifactNotHeld"
        },
        {
          "description": "The registry has no identity configured, so it cannot read its own state. An operator problem, not a caller's.",
          "name": "NotConfigured"
        }
      ],
      "output": {
        "encoding": "*/*"
      },
      "parameters": {
        "properties": {
          "cid": {
            "description": "The blob's CID, in place of the other parameters.",
            "format": "cid",
            "type": "string"
          },
          "did": {
            "description": "The publisher. Required unless cid is given.",
            "format": "did",
            "type": "string"
          },
          "index": {
            "default": 0,
            "description": "Which screenshot, counting from 0, when kind is `screenshot`.",
            "maximum": 7,
            "minimum": 0,
            "type": "integer"
          },
          "kind": {
            "description": "Which blob of the version. Required unless cid is given. `icon` is the project's publication icon.",
            "knownValues": [
              "package",
              "manifest",
              "icon",
              "banner",
              "screenshot"
            ],
            "type": "string"
          },
          "name": {
            "description": "The project's name, which is the record key of its software.release.project: 1 to 64 lowercase letters, digits and interior hyphens. Required unless cid is given.",
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          },
          "version": {
            "description": "A semver version without build metadata, with an optional lowercase prerelease, such as `1.2.0` or `1.2.0-beta.1`. Required unless cid is given.",
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        },
        "type": "params"
      },
      "type": "query"
    }
  },
  "id": "at.happyproto.registry.getArtifact",
  "lexicon": 1
}

Validate Record

Validate a record against at.happyproto.registry.getArtifact

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:mo7vq4jbioxwafy5zkcc3eux
CID
bafyreicb45u5c275w5fnth3by2ra725iz7ekgzdfmykbo6kq2uslhhc2su
Indexed At
2026-10-26 21:34 UTC
AT-URI
at://did:plc:mo7vq4jbioxwafy5zkcc3eux/com.atproto.lexicon.schema/at.happyproto.registry.getArtifact

Version History (2 versions)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • One version of a plugin, by exact version, whatever its lifecycle state or availability.

  • One release by exact version. Served whatever its status, including `deleted`: that is the left-pad protection the registry exists for.

  • The mirror's copy of a published version's archive. The caller verifies the bytes against the CID, as it would the PDS's.

  • A plugin's versions, most recently indexed first, whatever their lifecycle state.

  • One version of a package. The record key is '<slug>:<version>'. A release at a given version is never modified: a registry that later sees a different CID at this key keeps the first and flags the conflict.

Lexicon Garden

@