Skip to main content
Version: 2.x (upcoming)

Plugins

OpenCDMP is built around a plugin architecture that lets you extend the platform with your own services for file export and import, repository deposit, and plan evaluation. Each plugin is an independent Spring Boot microservice that OpenCDMP calls over HTTP; once registered, it is available to users through the standard user interface.

note

Assets are called descriptions in the API, plugin contracts, and data model.

Plugin types​

Plugin typePurposeBase package
File transformerExport plans and assets to custom file formats, or import from themorg.opencdmp:file-transformer-base
Deposit serviceDeposit plans to external repositories and receive DOIsorg.opencdmp:repository-deposit-base
EvaluatorAssess plans and assets against standards or criteriaorg.opencdmp:evaluator-base

How plugins work​

All plugin types follow the same pattern:

  1. Implement a client interface, which contains your business logic (FileTransformerClient, DepositClient, EvaluatorClient).
  2. Implement a controller interface, which exposes the REST endpoints the platform calls (FileTransformerController, DepositController, EvaluatorController) under /api/file-transformer, /api/deposit, or /api/evaluator.
  3. Expose a configuration endpoint, which the platform calls to discover the plugin's id and capabilities (supported formats, benchmarks, authentication methods, and so on): GET /api/file-transformer/formats, GET /api/deposit/configuration, or GET /api/evaluator/config.
  4. Secure the endpoints: accept only tokens from the installation's Keycloak realm with the plugins audience (IDP_ISSUER_URI, SECURITY_AUDIENCE=plugins, IDP_CLAIMS_ROLES_PATH=plugins.roles).
  5. Test it locally against a local installation; see Run and test a plugin locally.
  6. Register it with OpenCDMP, for the whole installation in the API service configuration (file-transformer.sources, deposit.sources, or evaluator.sources), or for one organisation with Add plugin under Settings > Plugins. See Registering plugin services. The platform then makes the plugin available to users.

Shared data models​

All plugins communicate with OpenCDMP using the Common Models package (org.opencdmp:common-models), which defines the data structures for plans, assets, and files. See Common Models for the full reference.

Plugin documentation​