com.emdashcms.experimental.package.releaseExtension

emdashcms.com

Documentation

Typed embedded object carrying the EmDash plugin's structured access manifest. Lives under the release record's `extensions` map keyed by this NSID. The `$type` field is required when embedded; clients use it to dispatch to this schema.

main object

Typed embedded object carrying the EmDash plugin's structured access manifest. Lives under the release record's `extensions` map keyed by this NSID. The `$type` field is required when embedded; clients use it to dispatch to this schema.

Properties

declaredAccess ref #declaredAccess Required

Structured per-category access manifest. The sandbox enforces every operation declared here at runtime.

provenance ref #provenance Optional

Optional reference to a provenance document for this release.

View raw schema
{
  "description": "Typed embedded object carrying the EmDash plugin's structured access manifest. Lives under the release record's `extensions` map keyed by this NSID. The `$type` field is required when embedded; clients use it to dispatch to this schema.",
  "properties": {
    "declaredAccess": {
      "description": "Structured per-category access manifest. The sandbox enforces every operation declared here at runtime.",
      "ref": "#declaredAccess",
      "type": "ref"
    },
    "provenance": {
      "description": "Optional reference to a provenance document for this release.",
      "ref": "#provenance",
      "type": "ref"
    }
  },
  "required": [
    "declaredAccess"
  ],
  "type": "object"
}
adminAccess object

Operations on unsaved editor content. Read and patch are independent authorities.

Properties

View raw schema
{
  "description": "Operations on unsaved editor content. Read and patch are independent authorities.",
  "properties": {
    "editorDraftPatch": {
      "description": "Plugin may propose selected unsaved field changes for host validation and review.",
      "ref": "#adminEditorDraftPatchConstraints",
      "type": "ref"
    },
    "editorDraftRead": {
      "description": "Plugin may receive selected unsaved field values after an explicit editor interaction.",
      "ref": "#adminEditorDraftReadConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
adminEditorDraftPatchConstraints object

Constraint object for admin.editorDraftPatch. Extension declarations provide enforced field and collection narrowing.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for admin.editorDraftPatch. Extension declarations provide enforced field and collection narrowing.",
  "type": "object"
}
adminEditorDraftReadConstraints object

Constraint object for admin.editorDraftRead. Extension declarations provide enforced field and collection narrowing.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for admin.editorDraftRead. Extension declarations provide enforced field and collection narrowing.",
  "type": "object"
}
bylinesAccess object

Operations under bylines. Read-only: there is no plugin-facing byline write operation.

Properties

read ref #bylinesReadConstraints Optional

Plugin may read public byline profiles and the bylines credited on content entries.

View raw schema
{
  "description": "Operations under bylines. Read-only: there is no plugin-facing byline write operation.",
  "properties": {
    "read": {
      "description": "Plugin may read public byline profiles and the bylines credited on content entries.",
      "ref": "#bylinesReadConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
bylinesReadConstraints object

Constraint object for bylines.read. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for bylines.read. No constraint keys are normatively defined here.",
  "type": "object"
}
commentsAccess object

Operations under comments. Reading exposes personal data: author names and email addresses, comment bodies, pseudonymous IP hashes, user agents, and moderation metadata. It does not expose the linked user-account ID.

Properties

read ref #commentsReadConstraints Optional

Plugin may read non-trashed comments and their personal and moderation data.

View raw schema
{
  "description": "Operations under comments. Reading exposes personal data: author names and email addresses, comment bodies, pseudonymous IP hashes, user agents, and moderation metadata. It does not expose the linked user-account ID.",
  "properties": {
    "moderate": {
      "description": "Plugin may change comment status with an expected-state precondition. Implies `read`.",
      "ref": "#commentsModerateConstraints",
      "type": "ref"
    },
    "read": {
      "description": "Plugin may read non-trashed comments and their personal and moderation data.",
      "ref": "#commentsReadConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
commentsModerateConstraints object

Constraint object for comments.moderate. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for comments.moderate. No constraint keys are normatively defined here.",
  "type": "object"
}
commentsReadConstraints object

Constraint object for comments.read. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for comments.read. No constraint keys are normatively defined here.",
  "type": "object"
}
contentAccess object

Operations under content. Each operation value is a constraint object; an empty object grants the operation with no constraints applied.

Properties

policy ref #contentPolicyConstraints Optional

Plugin may inspect and reject publication, scheduling, and unpublication. Does not imply content read or write access.

publish ref #contentPublishConstraints Optional

Plugin may publish, unpublish, schedule, and unschedule content. Implies `read`.

View raw schema
{
  "description": "Operations under content. Each operation value is a constraint object; an empty object grants the operation with no constraints applied.",
  "properties": {
    "policy": {
      "description": "Plugin may inspect and reject publication, scheduling, and unpublication. Does not imply content read or write access.",
      "ref": "#contentPolicyConstraints",
      "type": "ref"
    },
    "publish": {
      "description": "Plugin may publish, unpublish, schedule, and unschedule content. Implies `read`.",
      "ref": "#contentPublishConstraints",
      "type": "ref"
    },
    "read": {
      "description": "Plugin may read content records.",
      "ref": "#contentReadConstraints",
      "type": "ref"
    },
    "restore": {
      "description": "Plugin may read and restore trashed content.",
      "ref": "#contentRestoreConstraints",
      "type": "ref"
    },
    "revisionsRead": {
      "description": "Plugin may read retained content revision history. Implies `read`.",
      "ref": "#contentRevisionsReadConstraints",
      "type": "ref"
    },
    "write": {
      "description": "Plugin may create, update, or delete content records. Implies `read`.",
      "ref": "#contentWriteConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
contentPolicyConstraints object

Constraint object for content.policy. No constraint keys are normatively defined here; the operation grants only registration of synchronous publication policy hooks.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for content.policy. No constraint keys are normatively defined here; the operation grants only registration of synchronous publication policy hooks.",
  "type": "object"
}
contentPublishConstraints object

Constraint object for content.publish. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for content.publish. No constraint keys are normatively defined here.",
  "type": "object"
}
contentReadConstraints object

Constraint object for content.read. No constraint keys are normatively defined here; the object is open to additional unrecognised keys that future runtimes may interpret.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for content.read. No constraint keys are normatively defined here; the object is open to additional unrecognised keys that future runtimes may interpret.",
  "type": "object"
}
contentRestoreConstraints object

Constraint object for content.restore. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for content.restore. No constraint keys are normatively defined here.",
  "type": "object"
}
contentRevisionsReadConstraints object

Constraint object for content.revisionsRead. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for content.revisionsRead. No constraint keys are normatively defined here.",
  "type": "object"
}
contentWriteConstraints object

Constraint object for content.write. No constraint keys are normatively defined here; the object is open to additional unrecognised keys that future runtimes may interpret.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for content.write. No constraint keys are normatively defined here; the object is open to additional unrecognised keys that future runtimes may interpret.",
  "type": "object"
}
declaredAccess object

Map of access category to a per-category block of named operations. Categories not enumerated here cannot be declared today; clients MUST reject release records that include unrecognised top-level fields. Within a known category, an unrecognised operation key is also a hard reject. Within an operation's constraint object, unrecognised keys are advisory and surfaced verbatim in install-consent UI. Note that the bundled manifest may use boolean `true` as sugar for an empty constraint object; on-PDS records canonicalise this to `{}` because Lexicon validation does not accept boolean values for typed object fields.

Properties

admin ref #adminAccess Optional

Access to selected unsaved content in the authenticated editor.

bylines ref #bylinesAccess Optional

Read access to public byline profiles and the bylines credited on content entries.

comments ref #commentsAccess Optional

Access to comment text, author contact and request metadata, and moderation state.

content ref #contentAccess Optional

Access to site content (posts, pages, custom collections).

email ref #emailAccess Optional

Sending mail through the host's mail service, and participating in its delivery pipeline.

media ref #mediaAccess Optional

Access to uploaded media assets.

page ref #pageAccess Optional

Participation in rendered page output.

schema ref #schemaAccess Optional

Read access to collection and field definitions.

taxonomies ref #taxonomiesAccess Optional

Access to taxonomy definitions and terms.

users ref #usersAccess Optional

Access to site user records.

View raw schema
{
  "description": "Map of access category to a per-category block of named operations. Categories not enumerated here cannot be declared today; clients MUST reject release records that include unrecognised top-level fields. Within a known category, an unrecognised operation key is also a hard reject. Within an operation's constraint object, unrecognised keys are advisory and surfaced verbatim in install-consent UI. Note that the bundled manifest may use boolean `true` as sugar for an empty constraint object; on-PDS records canonicalise this to `{}` because Lexicon validation does not accept boolean values for typed object fields.",
  "properties": {
    "admin": {
      "description": "Access to selected unsaved content in the authenticated editor.",
      "ref": "#adminAccess",
      "type": "ref"
    },
    "bylines": {
      "description": "Read access to public byline profiles and the bylines credited on content entries.",
      "ref": "#bylinesAccess",
      "type": "ref"
    },
    "comments": {
      "description": "Access to comment text, author contact and request metadata, and moderation state.",
      "ref": "#commentsAccess",
      "type": "ref"
    },
    "content": {
      "description": "Access to site content (posts, pages, custom collections).",
      "ref": "#contentAccess",
      "type": "ref"
    },
    "email": {
      "description": "Sending mail through the host's mail service, and participating in its delivery pipeline.",
      "ref": "#emailAccess",
      "type": "ref"
    },
    "media": {
      "description": "Access to uploaded media assets.",
      "ref": "#mediaAccess",
      "type": "ref"
    },
    "network": {
      "description": "Outbound HTTP requests.",
      "ref": "#networkAccess",
      "type": "ref"
    },
    "page": {
      "description": "Participation in rendered page output.",
      "ref": "#pageAccess",
      "type": "ref"
    },
    "redirects": {
      "description": "Access to visitor redirect rules.",
      "ref": "#redirectsAccess",
      "type": "ref"
    },
    "schema": {
      "description": "Read access to collection and field definitions.",
      "ref": "#schemaAccess",
      "type": "ref"
    },
    "taxonomies": {
      "description": "Access to taxonomy definitions and terms.",
      "ref": "#taxonomiesAccess",
      "type": "ref"
    },
    "users": {
      "description": "Access to site user records.",
      "ref": "#usersAccess",
      "type": "ref"
    }
  },
  "type": "object"
}
emailAccess object

Operations under email.

Properties

events ref #emailEventsConstraints Optional

Plugin observes and may mutate every outgoing message (before and/or after send), including mail from the host and other plugins.

transport ref #emailTransportConstraints Optional

Plugin becomes the host's mail transport; every message the site sends is delivered through it. Exclusive: installing replaces the current transport.

View raw schema
{
  "description": "Operations under email.",
  "properties": {
    "events": {
      "description": "Plugin observes and may mutate every outgoing message (before and/or after send), including mail from the host and other plugins.",
      "ref": "#emailEventsConstraints",
      "type": "ref"
    },
    "send": {
      "description": "Plugin may send mail.",
      "ref": "#emailSendConstraints",
      "type": "ref"
    },
    "transport": {
      "description": "Plugin becomes the host's mail transport; every message the site sends is delivered through it. Exclusive: installing replaces the current transport.",
      "ref": "#emailTransportConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
emailEventsConstraints object

Constraint object for email.events. No constraint keys are normatively defined here; phase scoping (beforeSend/afterSend) is reserved for a follow-on RFC and surfaced advisorily until then.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for email.events. No constraint keys are normatively defined here; phase scoping (beforeSend/afterSend) is reserved for a follow-on RFC and surfaced advisorily until then.",
  "type": "object"
}
emailSendConstraints object

Constraint object for email.send. No constraint keys are normatively defined here; vocabulary for rate limits and recipient allow-lists is reserved for a follow-on RFC.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for email.send. No constraint keys are normatively defined here; vocabulary for rate limits and recipient allow-lists is reserved for a follow-on RFC.",
  "type": "object"
}
emailTransportConstraints object

Constraint object for email.transport. No constraint keys are normatively defined here. Exclusivity is a property of the host extension point: clients treat email.transport as exclusive regardless of record contents.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for email.transport. No constraint keys are normatively defined here. Exclusivity is a property of the host extension point: clients treat email.transport as exclusive regardless of record contents.",
  "type": "object"
}
mediaAccess object

Operations under media.

Properties

read ref #mediaReadConstraints Optional

Plugin may read ready media metadata. Storage keys, author identity, content hashes, and file bytes are excluded.

View raw schema
{
  "description": "Operations under media.",
  "properties": {
    "bytesRead": {
      "description": "Plugin may read bounded bytes and content hashes for ready media.",
      "ref": "#mediaBytesReadConstraints",
      "type": "ref"
    },
    "metadataWrite": {
      "description": "Plugin may change alt text, captions, and focal points on ready media.",
      "ref": "#mediaMetadataWriteConstraints",
      "type": "ref"
    },
    "read": {
      "description": "Plugin may read ready media metadata. Storage keys, author identity, content hashes, and file bytes are excluded.",
      "ref": "#mediaReadConstraints",
      "type": "ref"
    },
    "write": {
      "description": "Plugin may upload, modify, or delete media. Implies `read`.",
      "ref": "#mediaWriteConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
mediaBytesReadConstraints object

Constraint object for media.bytesRead. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for media.bytesRead. No constraint keys are normatively defined here.",
  "type": "object"
}
mediaMetadataWriteConstraints object

Constraint object for media.metadataWrite. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for media.metadataWrite. No constraint keys are normatively defined here.",
  "type": "object"
}
mediaReadConstraints object

Constraint object for media.read. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for media.read. No constraint keys are normatively defined here.",
  "type": "object"
}
mediaWriteConstraints object

Constraint object for media.write. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for media.write. No constraint keys are normatively defined here.",
  "type": "object"
}
networkAccess object

Operations under network.

Properties

request ref #networkRequestConstraints Optional

Plugin may make outbound HTTP requests. Constraints scope the access; an empty object grants unrestricted requests.

View raw schema
{
  "description": "Operations under network.",
  "properties": {
    "request": {
      "description": "Plugin may make outbound HTTP requests. Constraints scope the access; an empty object grants unrestricted requests.",
      "ref": "#networkRequestConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
networkRequestConstraints object

Constraint object for network.request. Open shape — additional constraint keys (rate limits, etc.) may be declared and will be surfaced advisorily until normatively defined by a follow-on RFC.

Properties

allowedHosts array of string Optional

Allow-list of outbound host patterns. Each entry is a hostname pattern with no scheme, path, or port; a leading '*.' wildcard is permitted for subdomains. Field absent means no host restriction; an empty array MUST NOT appear in records.

maxLength: 64 itemsminLength: 1 items
View raw schema
{
  "description": "Constraint object for network.request. Open shape — additional constraint keys (rate limits, etc.) may be declared and will be surfaced advisorily until normatively defined by a follow-on RFC.",
  "properties": {
    "allowedHosts": {
      "description": "Allow-list of outbound host patterns. Each entry is a hostname pattern with no scheme, path, or port; a leading '*.' wildcard is permitted for subdomains. Field absent means no host restriction; an empty array MUST NOT appear in records.",
      "items": {
        "maxLength": 256,
        "type": "string"
      },
      "maxLength": 64,
      "minLength": 1,
      "type": "array"
    }
  },
  "type": "object"
}
pageAccess object

Operations under page (rendered-output participation).

Properties

View raw schema
{
  "description": "Operations under page (rendered-output participation).",
  "properties": {
    "fragments": {
      "description": "Plugin injects script and/or style fragments into rendered pages.",
      "ref": "#pageFragmentsConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
pageFragmentsConstraints object

Constraint object for page.fragments. No constraint keys are normatively defined here; position/placement scoping is reserved for a follow-on RFC.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for page.fragments. No constraint keys are normatively defined here; position/placement scoping is reserved for a follow-on RFC.",
  "type": "object"
}
provenance object

Provenance document reference. Unknown predicate types are retained as present-but-unverifiable; consumers understand https://slsa.dev/provenance/v1 in v1. Lexicon validates URI syntax and field lengths; consumers validate multibase-multihash syntax and source and builder canonicalization.

Properties

builderId string uri Required

A valid URI.

maxLength: 1024 bytes
checksum string Required

Multibase-encoded multihash of the provenance document bytes. Consumers validate the multibase-multihash syntax and supported hash function.

maxLength: 256 bytes
predicateType string Required

No description available.

maxLength: 1024 bytes
sourceRepository string uri Required

A valid URI.

maxLength: 1024 bytes
url string uri Required

A valid URI.

maxLength: 2048 bytes
View raw schema
{
  "description": "Provenance document reference. Unknown predicate types are retained as present-but-unverifiable; consumers understand https://slsa.dev/provenance/v1 in v1. Lexicon validates URI syntax and field lengths; consumers validate multibase-multihash syntax and source and builder canonicalization.",
  "properties": {
    "builderId": {
      "format": "uri",
      "maxLength": 1024,
      "type": "string"
    },
    "checksum": {
      "description": "Multibase-encoded multihash of the provenance document bytes. Consumers validate the multibase-multihash syntax and supported hash function.",
      "maxLength": 256,
      "type": "string"
    },
    "predicateType": {
      "maxLength": 1024,
      "type": "string"
    },
    "sourceRepository": {
      "format": "uri",
      "maxLength": 1024,
      "type": "string"
    },
    "url": {
      "format": "uri",
      "maxLength": 2048,
      "type": "string"
    }
  },
  "required": [
    "predicateType",
    "url",
    "checksum",
    "sourceRepository",
    "builderId"
  ],
  "type": "object"
}
redirectsAccess object

Operations under redirects.

Properties

write ref #redirectsWriteConstraints Optional

Plugin may create, update, or delete redirect rules and change where visitors are sent. Implies `read`.

View raw schema
{
  "description": "Operations under redirects.",
  "properties": {
    "read": {
      "description": "Plugin may read redirect rules.",
      "ref": "#redirectsReadConstraints",
      "type": "ref"
    },
    "write": {
      "description": "Plugin may create, update, or delete redirect rules and change where visitors are sent. Implies `read`.",
      "ref": "#redirectsWriteConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
redirectsReadConstraints object

Constraint object for redirects.read. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for redirects.read. No constraint keys are normatively defined here.",
  "type": "object"
}
redirectsWriteConstraints object

Constraint object for redirects.write. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for redirects.write. No constraint keys are normatively defined here.",
  "type": "object"
}
schemaAccess object

Operations under schema.

Properties

View raw schema
{
  "description": "Operations under schema.",
  "properties": {
    "read": {
      "description": "Plugin may read public collection and field definitions.",
      "ref": "#schemaReadConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
schemaReadConstraints object

Constraint object for schema.read. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for schema.read. No constraint keys are normatively defined here.",
  "type": "object"
}
taxonomiesAccess object

Operations under taxonomies.

Properties

read ref #taxonomiesReadConstraints Optional

Plugin may read taxonomy definitions, their terms, and the terms assigned to content entries.

View raw schema
{
  "description": "Operations under taxonomies.",
  "properties": {
    "read": {
      "description": "Plugin may read taxonomy definitions, their terms, and the terms assigned to content entries.",
      "ref": "#taxonomiesReadConstraints",
      "type": "ref"
    },
    "write": {
      "description": "Plugin may create terms and add or remove term assignments. Implies `read`.",
      "ref": "#taxonomiesWriteConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
taxonomiesReadConstraints object

Constraint object for taxonomies.read. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for taxonomies.read. No constraint keys are normatively defined here.",
  "type": "object"
}
taxonomiesWriteConstraints object

Constraint object for taxonomies.write. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for taxonomies.write. No constraint keys are normatively defined here.",
  "type": "object"
}
usersAccess object

Operations under users.

Properties

View raw schema
{
  "description": "Operations under users.",
  "properties": {
    "read": {
      "description": "Plugin may read site user records.",
      "ref": "#usersReadConstraints",
      "type": "ref"
    }
  },
  "type": "object"
}
usersReadConstraints object

Constraint object for users.read. No constraint keys are normatively defined here.

This object has no properties defined.

View raw schema
{
  "description": "Constraint object for users.read. No constraint keys are normatively defined here.",
  "type": "object"
}

Lexicon Garden

@