at.happyproto.registry.defs
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"bannerView": {
"properties": {
"alt": {
"type": "string"
},
"cid": {
"description": "The CID of the image, which getArtifact serves once the registry has copied it.",
"format": "cid",
"type": "string"
},
"height": {
"minimum": 1,
"type": "integer"
},
"width": {
"minimum": 1,
"type": "integer"
}
},
"required": [
"cid",
"width",
"height"
],
"type": "object"
},
"changelogView": {
"description": "The version's changelog, from the registry's copy of its site.standard.document.",
"properties": {
"fetchedAt": {
"format": "datetime",
"type": "string"
},
"markdown": {
"description": "CommonMark written by the publisher. Render it as untrusted input, with raw HTML stripped.",
"type": "string"
},
"title": {
"type": "string"
},
"uri": {
"format": "at-uri",
"type": "string"
}
},
"required": [
"uri",
"title",
"markdown",
"fetchedAt"
],
"type": "object"
},
"channelRef": {
"description": "The version a channel points at.",
"properties": {
"availability": {
"knownValues": [
"pending",
"available",
"deletedAtSource"
],
"type": "string"
},
"cid": {
"format": "cid",
"type": "string"
},
"state": {
"description": "The version's lifecycle state.",
"knownValues": [
"active",
"deprecated",
"unavailable",
"retired"
],
"type": "string"
},
"uri": {
"description": "The software.release.version record.",
"format": "at-uri",
"type": "string"
},
"version": {
"maxLength": 64,
"type": "string"
}
},
"required": [
"version",
"uri",
"cid",
"state",
"availability"
],
"type": "object"
},
"lifecycle": {
"description": "A lifecycle state derived from the publisher's software.release.status records. The last status that has not been withdrawn decides it: none means `active`; `endOfDevelopment`, `endOfSupport` or `supersededBy` mean `deprecated`; `endOfDistribution` means `unavailable`; `endOfLife` means `retired`.",
"properties": {
"events": {
"description": "Every status about the subject, oldest first, including withdrawn ones.",
"items": {
"ref": "#lifecycleEvent",
"type": "ref"
},
"type": "array"
},
"installable": {
"description": "True when the state is `active` or `deprecated`.",
"type": "boolean"
},
"kind": {
"description": "The deciding status's kind, such as `security`.",
"type": "string"
},
"reason": {
"description": "The deciding status's reason.",
"type": "string"
},
"state": {
"knownValues": [
"active",
"deprecated",
"unavailable",
"retired"
],
"type": "string"
},
"supersededBy": {
"description": "The version to use instead, when the deciding status is `supersededBy`.",
"type": "string"
}
},
"required": [
"state"
],
"type": "object"
},
"lifecycleEvent": {
"description": "One software.release.status record.",
"properties": {
"kind": {
"type": "string"
},
"reason": {
"type": "string"
},
"status": {
"description": "The event type, such as `endOfSupport`.",
"type": "string"
},
"supersededBy": {
"type": "string"
},
"uri": {
"format": "at-uri",
"type": "string"
},
"withdrawnBy": {
"description": "The status that withdrew this one. A withdrawn status no longer counts toward the state.",
"format": "at-uri",
"type": "string"
}
},
"required": [
"uri",
"status"
],
"type": "object"
},
"projectView": {
"description": "An indexed plugin: its software.release.project with the registry's view of everything around it.",
"properties": {
"authors": {
"items": {
"ref": "at.happyproto.registry.project#author",
"type": "ref"
},
"type": "array"
},
"banner": {
"description": "The banner of the version the `latest` channel points at, when it has one.",
"ref": "#bannerView",
"type": "ref"
},
"channels": {
"description": "A map from channel name, such as `latest`, to the #channelRef it points at. Empty when no channel is indexed.",
"type": "unknown"
},
"cid": {
"format": "cid",
"type": "string"
},
"did": {
"format": "did",
"type": "string"
},
"handle": {
"description": "The publisher's handle, when the registry can resolve one. Its absence says nothing about who owns the project.",
"format": "handle",
"type": "string"
},
"indexedAt": {
"format": "datetime",
"type": "string"
},
"keywords": {
"items": {
"type": "string"
},
"type": "array"
},
"lifecycle": {
"description": "The project's own lifecycle. Only `state` is set.",
"ref": "#lifecycle",
"type": "ref"
},
"name": {
"description": "The project's name, which is its record key.",
"maxLength": 64,
"type": "string"
},
"pluginType": {
"knownValues": [
"auth",
"library",
"interpreter"
],
"type": "string"
},
"publication": {
"ref": "#publicationView",
"type": "ref"
},
"security": {
"items": {
"ref": "at.happyproto.registry.project#contact",
"type": "ref"
},
"type": "array"
},
"sidecar": {
"ref": "#sidecarRef",
"type": "ref"
},
"uri": {
"description": "The software.release.project record.",
"format": "at-uri",
"type": "string"
}
},
"required": [
"uri",
"did",
"name",
"sidecar",
"publication",
"pluginType",
"keywords",
"authors",
"security",
"channels",
"lifecycle",
"indexedAt"
],
"type": "object"
},
"publicationView": {
"description": "The project's site.standard.publication, at the CID its at.happyproto.registry.project record pins.",
"properties": {
"cid": {
"format": "cid",
"type": "string"
},
"description": {
"type": "string"
},
"icon": {
"description": "The CID of the icon, which getArtifact serves once the registry has copied it.",
"format": "cid",
"type": "string"
},
"name": {
"description": "The plugin's display name.",
"type": "string"
},
"uri": {
"format": "at-uri",
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"uri",
"cid",
"name",
"url"
],
"type": "object"
},
"ref": {
"description": "A record, by at-uri and the CID of the version meant.",
"properties": {
"cid": {
"format": "cid",
"type": "string"
},
"uri": {
"format": "at-uri",
"type": "string"
}
},
"required": [
"uri",
"cid"
],
"type": "object"
},
"sidecarRef": {
"description": "The project's at.happyproto.registry.project record.",
"properties": {
"cid": {
"format": "cid",
"type": "string"
},
"uri": {
"format": "at-uri",
"type": "string"
}
},
"required": [
"uri"
],
"type": "object"
},
"versionView": {
"description": "An indexed version of a plugin, with the artifact its manifest carries.",
"properties": {
"artifact": {
"description": "The plugin artifact from the manifest, as published.",
"ref": "at.happyproto.plugin.v1",
"type": "ref"
},
"availability": {
"description": "`available` means the registry holds the package and manifest bytes and serves them from getArtifact. `pending` means it has not copied them yet. `deletedAtSource` means the publisher deleted the version; the registry keeps serving what it already holds.",
"knownValues": [
"pending",
"available",
"deletedAtSource"
],
"type": "string"
},
"changelog": {
"ref": "#changelogView",
"type": "ref"
},
"cid": {
"format": "cid",
"type": "string"
},
"did": {
"format": "did",
"type": "string"
},
"indexedAt": {
"format": "datetime",
"type": "string"
},
"lifecycle": {
"description": "The version's lifecycle, combined with the project's: the worse state of the two applies. `installable` and `events` are always set.",
"ref": "#lifecycle",
"type": "ref"
},
"manifest": {
"description": "The software.release.manifest the version points at.",
"ref": "#ref",
"type": "ref"
},
"name": {
"maxLength": 64,
"type": "string"
},
"suspect": {
"description": "True when the publisher changed the version or its manifest after publishing it. Versions are immutable, so the registry keeps the first record it saw and flags this one.",
"type": "boolean"
},
"uri": {
"description": "The software.release.version record.",
"format": "at-uri",
"type": "string"
},
"version": {
"maxLength": 64,
"type": "string"
}
},
"required": [
"uri",
"cid",
"did",
"name",
"version",
"manifest",
"artifact",
"availability",
"suspect",
"lifecycle",
"indexedAt"
],
"type": "object"
}
},
"id": "at.happyproto.registry.defs",
"lexicon": 1
}
Metadata
- DID
-
did:plc:mo7vq4jbioxwafy5zkcc3eux - CID
-
bafyreidztqpx2ri3c5of6mhx6lv76xs2ufgtz7f3janbi7f3vty6j2txsm - Indexed At
- 2026-10-26 21:34 UTC
- AT-URI
-
at://did:plc:mo7vq4jbioxwafy5zkcc3eux/com.atproto.lexicon.schema/at.happyproto.registry.defs
Version History (2 versions)
- 2026-10-26 21:34 UTC (current)
- 2026-10-19 18:20 UTC diff
Referenced Schemas (3)
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
at.happyproto.plugin.release record
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.
-
The HappyView facts about a software.release.project that make it a plugin. The record key is the project's name, and the record lives in the same repo as the project. The registry indexes a project's releases only whil…
-
com.emdashcms.experimental.aggregator.defs not from the namespace authority
Shared definitions for the EmDash plugin registry aggregator XRPC endpoints. EXPERIMENTAL: shape may change before stabilisation.
-
A plugin's versions, most recently indexed first, whatever their lifecycle state.