com.emdashcms.experimental.publisher.verification

emdashcms.com

Documentation

A signed claim that the issuing repo's DID vouches for `subject` as a trusted publisher of EmDash plugins. The official EmDash identity publishes these as the trust root; trusted issuers may delegate by issuing further verification claims of their own. Clients consume the resulting graph via the standard atproto-accept-labelers mechanism. The record key is a TID. Verification is bound to the subject's handle and displayName at the moment of issuance: a change to either invalidates the verification until the issuer re-attests. This matches Bluesky's app.bsky.graph.verification semantics and defends against handle reuse and identity drift.

main record

A signed claim that the issuing repo's DID vouches for `subject` as a trusted publisher of EmDash plugins. The official EmDash identity publishes these as the trust root; trusted issuers may delegate by issuing further verification claims of their own. Clients consume the resulting graph via the standard atproto-accept-labelers mechanism. The record key is a TID. Verification is bound to the subject's handle and displayName at the moment of issuance: a change to either invalidates the verification until the issuer re-attests. This matches Bluesky's app.bsky.graph.verification semantics and defends against handle reuse and identity drift.

Record Key tid Timestamp-based ID

Properties

createdAt string datetime Required

When the verification was issued.

displayName string Required

Subject's `displayName` from their `com.emdashcms.experimental.publisher.profile` record (rkey `self`) at the moment of issuance. The verification is only valid if the subject's current publisher profile displayName matches this value byte-for-byte. A subject without a publisher profile cannot be verified: the issuer MUST require the subject to publish a publisher.profile before issuing the claim, and clients MUST reject verifications whose subject has no publisher profile resolvable at issuance check time.

maxLength: 1024 bytesmaxGraphemes: 100 graphemes
expiresAt string datetime Optional

Optional expiration timestamp. If absent, the verification has no automatic expiry. Clients SHOULD treat the verification as not in force after this time, regardless of whether the issuer has revoked it.

handle string handle Required

Handle of the subject at the moment of issuance. The verification is only valid if the subject's current handle (resolved from their DID document) matches this value byte-for-byte. Any handle change invalidates the verification until the issuer re-attests.

subject string did Required

DID of the subject the verification applies to.

View raw schema
{
  "description": "A signed claim that the issuing repo's DID vouches for `subject` as a trusted publisher of EmDash plugins. The official EmDash identity publishes these as the trust root; trusted issuers may delegate by issuing further verification claims of their own. Clients consume the resulting graph via the standard atproto-accept-labelers mechanism. The record key is a TID. Verification is bound to the subject's handle and displayName at the moment of issuance: a change to either invalidates the verification until the issuer re-attests. This matches Bluesky's app.bsky.graph.verification semantics and defends against handle reuse and identity drift.",
  "key": "tid",
  "record": {
    "properties": {
      "createdAt": {
        "description": "When the verification was issued.",
        "format": "datetime",
        "type": "string"
      },
      "displayName": {
        "description": "Subject's `displayName` from their `com.emdashcms.experimental.publisher.profile` record (rkey `self`) at the moment of issuance. The verification is only valid if the subject's current publisher profile displayName matches this value byte-for-byte. A subject without a publisher profile cannot be verified: the issuer MUST require the subject to publish a publisher.profile before issuing the claim, and clients MUST reject verifications whose subject has no publisher profile resolvable at issuance check time.",
        "maxGraphemes": 100,
        "maxLength": 1024,
        "type": "string"
      },
      "expiresAt": {
        "description": "Optional expiration timestamp. If absent, the verification has no automatic expiry. Clients SHOULD treat the verification as not in force after this time, regardless of whether the issuer has revoked it.",
        "format": "datetime",
        "type": "string"
      },
      "handle": {
        "description": "Handle of the subject at the moment of issuance. The verification is only valid if the subject's current handle (resolved from their DID document) matches this value byte-for-byte. Any handle change invalidates the verification until the issuer re-attests.",
        "format": "handle",
        "type": "string"
      },
      "subject": {
        "description": "DID of the subject the verification applies to.",
        "format": "did",
        "type": "string"
      }
    },
    "required": [
      "subject",
      "handle",
      "displayName",
      "createdAt"
    ],
    "type": "object"
  },
  "type": "record"
}

Lexicon Garden

@