Skip to main content
Extensions let you add rich domain semantics to any Entity, Action, or Attribution without changing the core EAA schema. They are stored in the extensions field as a typed dictionary keyed by ext:namespace@semver.

How extensions work

The key format is ext:<namespace>@<semver>. All built-in schemas follow this convention. You can define custom extensions using the same format.

Built-in extensions

All schemas are in @provenancekit/extensions.

Validating extensions

Use the Zod schemas before recording to catch type errors early:

Custom extensions

Define your own extension schema using Zod and the same key convention:

Gotchas

  • Extension keys must follow ext:namespace@semver. The API stores any key, but tooling (indexer, UI) only recognises the standard format.
  • Extensions are not validated server-side. Validation is a client-side concern. Use the provided Zod schemas (or your own) before calling the API.
  • Version pinning matters. If you change an extension’s schema, bump the version (ext:mypipeline@2.0.0). Old records will still carry the old version key.