com.emdashcms.experimental.aggregator.defs

emdashcms.com

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "packageView": {
      "description": "An aggregator's view of a package, hydrating a profile record with denormalised metadata and any labels applied by trusted labellers the aggregator hydrates.",
      "properties": {
        "cid": {
          "description": "CID of the profile record content the aggregator indexed. Lets clients confirm they're working with the same bytes the aggregator did.",
          "format": "cid",
          "type": "string"
        },
        "did": {
          "description": "Publisher DID. Denormalised convenience; equivalent to the DID portion of `uri`.",
          "format": "did",
          "type": "string"
        },
        "handle": {
          "description": "Publisher's current handle, if known. Best-effort: handles are mutable and may be stale at the moment of read.",
          "format": "handle",
          "type": "string"
        },
        "historicalReleaseCount": {
          "description": "Number of package release versions retained in the aggregator's history, including releases the publisher later deleted.",
          "minimum": 0,
          "type": "integer"
        },
        "indexedAt": {
          "description": "When the aggregator first indexed this package.",
          "format": "datetime",
          "type": "string"
        },
        "labels": {
          "description": "Hydrated trusted label state attached by the aggregator's configured policy.",
          "items": {
            "ref": "com.atproto.label.defs#label",
            "type": "ref"
          },
          "maxLength": 64,
          "type": "array"
        },
        "latestVersion": {
          "description": "Convenience: the highest semver version among non-tombstoned, non-yanked releases the aggregator has indexed for this package. Clients SHOULD verify this against their own selection from listReleases when the difference matters.",
          "maxLength": 64,
          "type": "string"
        },
        "profile": {
          "description": "The signed profile record verbatim, passed through from the publisher's repo (carrying its $type, all required fields, etc.).",
          "type": "unknown"
        },
        "releaseHistoryComplete": {
          "description": "Whether the aggregator continuously observed this package from its first live profile creation. When false or absent, clients must not infer that historicalReleaseCount represents the package's complete registry history.",
          "type": "boolean"
        },
        "slug": {
          "description": "Package slug (the rkey of the profile record). Denormalised convenience.",
          "maxLength": 64,
          "minLength": 1,
          "type": "string"
        },
        "uri": {
          "description": "AT URI of the profile record the aggregator indexed. Pins exactly which record version this view describes.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "cid",
        "did",
        "slug",
        "profile",
        "indexedAt"
      ],
      "type": "object"
    },
    "recordScopedBlobCache": {
      "description": "A cache that admits a blob only when an exact repository record revision references its CID. Raw URLs use /r/{did}/{collection}/{rkey}/{recordCid}/{blobCid}; image representations use /img/{preset}/r/{did}/{collection}/{rkey}/{recordCid}/{blobCid}.",
      "properties": {
        "serviceEndpoint": {
          "description": "HTTPS origin of the record-scoped blob cache.",
          "format": "uri",
          "maxLength": 2048,
          "type": "string"
        }
      },
      "required": [
        "serviceEndpoint"
      ],
      "type": "object"
    },
    "releaseView": {
      "description": "An aggregator's view of a release: the signed record verbatim, record-scoped blob cache services, and any hydrated labels.",
      "properties": {
        "artifactCaches": {
          "description": "Blob cache services the aggregator advertises for this release. Clients ignore unrecognised service variants and derive artifact URLs only for public blob refs.",
          "items": {
            "closed": false,
            "refs": [
              "#recordScopedBlobCache"
            ],
            "type": "union"
          },
          "maxLength": 4,
          "type": "array"
        },
        "cid": {
          "description": "CID of the release record content the aggregator indexed.",
          "format": "cid",
          "type": "string"
        },
        "did": {
          "description": "Publisher DID. Denormalised convenience; equivalent to the DID portion of `uri`.",
          "format": "did",
          "type": "string"
        },
        "indexedAt": {
          "description": "When the aggregator first indexed this release.",
          "format": "datetime",
          "type": "string"
        },
        "labels": {
          "description": "Hydrated trusted label state attached by the aggregator's configured policy.",
          "items": {
            "ref": "com.atproto.label.defs#label",
            "type": "ref"
          },
          "maxLength": 64,
          "type": "array"
        },
        "package": {
          "description": "Parent package slug. Denormalised convenience.",
          "maxLength": 64,
          "minLength": 1,
          "type": "string"
        },
        "release": {
          "description": "The signed release record verbatim from the publisher's repo (carrying its $type and all fields).",
          "type": "unknown"
        },
        "uri": {
          "description": "AT URI of the release record the aggregator indexed. Pins exactly which record version this view describes.",
          "format": "at-uri",
          "type": "string"
        },
        "version": {
          "description": "Release version, matching the post-':' portion of the rkey.",
          "maxLength": 64,
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "uri",
        "cid",
        "did",
        "package",
        "version",
        "release",
        "indexedAt"
      ],
      "type": "object"
    }
  },
  "description": "Shared definitions for the EmDash plugin registry aggregator XRPC endpoints. EXPERIMENTAL: shape may change before stabilisation.",
  "id": "com.emdashcms.experimental.aggregator.defs",
  "lexicon": 1
}

Validate Record

Validate a record against com.emdashcms.experimental.aggregator.defs

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:ilznslhspsvk6naatedr66pi
CID
bafyreibm6b5eemabqks3cdjouhikre6ip3krce7qzyutsd6pgtg6sckazm
Indexed At
2026-10-08 09:24 UTC
AT-URI
at://did:plc:ilznslhspsvk6naatedr66pi/com.atproto.lexicon.schema/com.emdashcms.experimental.aggregator.defs

Referenced Schemas (1)

Similar Lexicons

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

Lexicon Garden

@