com.emdashcms.experimental.publisher.profile

emdashcms.com

Documentation

A publisher's identity-level profile. Distinct from `com.emdashcms.experimental.package.profile`, which carries per-package metadata. The publisher profile is the canonical landing page for the entity behind a DID: 'who is publishing these packages?'. The record key is the literal string `self`. Per-package fields like `authors[]` and `security[]` on package profile records remain authoritative for their respective packages and MAY differ from the values here; clients render package-level fields when present, falling back to publisher profile values otherwise. The publisher profile's `displayName` is the value that `com.emdashcms.experimental.publisher.verification` records bind against — see that lexicon's docs for the validity rules.

main record

A publisher's identity-level profile. Distinct from `com.emdashcms.experimental.package.profile`, which carries per-package metadata. The publisher profile is the canonical landing page for the entity behind a DID: 'who is publishing these packages?'. The record key is the literal string `self`. Per-package fields like `authors[]` and `security[]` on package profile records remain authoritative for their respective packages and MAY differ from the values here; clients render package-level fields when present, falling back to publisher profile values otherwise. The publisher profile's `displayName` is the value that `com.emdashcms.experimental.publisher.verification` records bind against — see that lexicon's docs for the validity rules.

Record Key literal:self Fixed literal value

Properties

contact array of ref #contact Optional

Identity-level contact channels for the publisher (general / security). Per-package security contacts on package profile records remain authoritative for their respective packages; this list is for the publisher entity itself.

maxLength: 8 items
description string Optional

Short description / bio of the publisher. SHOULD NOT exceed 280 characters per UI convention. Plain text; no Markdown.

maxLength: 2048 bytesmaxGraphemes: 280 graphemes
displayName string Required

Human-readable name for the publisher (e.g. 'Acme Plugin Co.'). Displayed alongside packages and verification badges. Verification records bind against this value: a change to displayName invalidates any unexpired verification claims targeting this DID until the issuer re-attests.

maxLength: 1024 bytesmaxGraphemes: 100 graphemes
updatedAt string datetime Optional

When this profile was last updated.

url string uri Optional

Publisher's primary homepage. Distinct from per-package repo or homepage URLs.

maxLength: 2048 bytes
View raw schema
{
  "description": "A publisher's identity-level profile. Distinct from `com.emdashcms.experimental.package.profile`, which carries per-package metadata. The publisher profile is the canonical landing page for the entity behind a DID: 'who is publishing these packages?'. The record key is the literal string `self`. Per-package fields like `authors[]` and `security[]` on package profile records remain authoritative for their respective packages and MAY differ from the values here; clients render package-level fields when present, falling back to publisher profile values otherwise. The publisher profile's `displayName` is the value that `com.emdashcms.experimental.publisher.verification` records bind against — see that lexicon's docs for the validity rules.",
  "key": "literal:self",
  "record": {
    "properties": {
      "contact": {
        "description": "Identity-level contact channels for the publisher (general / security). Per-package security contacts on package profile records remain authoritative for their respective packages; this list is for the publisher entity itself.",
        "items": {
          "ref": "#contact",
          "type": "ref"
        },
        "maxLength": 8,
        "type": "array"
      },
      "description": {
        "description": "Short description / bio of the publisher. SHOULD NOT exceed 280 characters per UI convention. Plain text; no Markdown.",
        "maxGraphemes": 280,
        "maxLength": 2048,
        "type": "string"
      },
      "displayName": {
        "description": "Human-readable name for the publisher (e.g. 'Acme Plugin Co.'). Displayed alongside packages and verification badges. Verification records bind against this value: a change to displayName invalidates any unexpired verification claims targeting this DID until the issuer re-attests.",
        "maxGraphemes": 100,
        "maxLength": 1024,
        "type": "string"
      },
      "updatedAt": {
        "description": "When this profile was last updated.",
        "format": "datetime",
        "type": "string"
      },
      "url": {
        "description": "Publisher's primary homepage. Distinct from per-package repo or homepage URLs.",
        "format": "uri",
        "maxLength": 2048,
        "type": "string"
      }
    },
    "required": [
      "displayName"
    ],
    "type": "object"
  },
  "type": "record"
}
contact object

Identity-level publisher contact. At least one of url or email MUST be present; Lexicon cannot express required-one-of, so aggregators MUST validate this and reject records carrying a contact with neither field. Same shape as `com.emdashcms.experimental.package.profile#contact`.

Properties

email string Optional

No description available.

maxLength: 256 bytes
kind string Optional

Channel role. 'general' for ordinary contact, 'security' for vulnerability reporting.

maxLength: 32 bytes
Known values: general, security
url string uri Optional

A valid URI.

maxLength: 1024 bytes
View raw schema
{
  "description": "Identity-level publisher contact. At least one of url or email MUST be present; Lexicon cannot express required-one-of, so aggregators MUST validate this and reject records carrying a contact with neither field. Same shape as `com.emdashcms.experimental.package.profile#contact`.",
  "properties": {
    "email": {
      "maxLength": 256,
      "type": "string"
    },
    "kind": {
      "description": "Channel role. 'general' for ordinary contact, 'security' for vulnerability reporting.",
      "knownValues": [
        "general",
        "security"
      ],
      "maxLength": 32,
      "type": "string"
    },
    "url": {
      "format": "uri",
      "maxLength": 1024,
      "type": "string"
    }
  },
  "type": "object"
}

Lexicon Garden

@