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.