com.emdashcms.experimental.aggregator.defs
{
"$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
}
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.
-
Plugin package release record. EXPERIMENTAL: this NSID is part of the experimental phase of the EmDash plugin registry. The stable namespace target is com.emdashcms.package.release.
-
Get the latest release for a package: the highest semver version among non-tombstoned, non-yanked releases. EXPERIMENTAL.
-
Get a single package by its canonical (did, slug) identity. EXPERIMENTAL.