Extensions
Extension declaration, files, and reserved namespaces.
Overview
Extensions allow third parties to introduce new fields and behaviours without conflicting with the core specification.
Extension Declaration
Extensions MUST be declared in the manifest’s Schema-Extensions field as space-separated URIs:
Schema-Extensions: https://example.com/opa-ext/tool-config/v1
https://example.com/opa-ext/encryption/v1
Extension Files
Extension data SHOULD be stored in META-INF/extensions/<extension-id>/.
Clients that do not recognise an extension MUST NOT fail; they MUST skip unknown extension data.
Example Structure
META-INF/
├── MANIFEST.MF
└── extensions/
├── tool-config/
│ └── config.json
└── encryption/
└── config.json
Reserved Extension Namespace
The namespace https://opa.dev/ext/ is reserved for officially ratified extensions. Third-party extensions MUST use their own domain.
Archive signing is part of the core specification (see Security — Signing). Planned official extensions include content encryption.