This repository hosts all official backend plugins for the linid-im-api platform.
Each plugin is maintained in a dedicated subdirectory and follows the same structure as the provided template-plugin.
| Name | Description |
|---|---|
cmtp |
Task plugin to copy and transform context values using Jinjava templates. |
| Name | Description |
|---|---|
hpp |
Provider plugin to interact with configurable HTTP REST APIs (CRUD, mapping). |
| Name | Description |
|---|---|
rvp |
Validation plugin to ensure a value matches a regular expression pattern. |
rqvp |
Validation plugin to ensure a value is not empty. |
linid-dm-api-community-plugins/
├── plugin-a/
├── plugin-b/
├── template-plugin/ ← Reference structure for new plugins
├── .github/workflows/release.yml
└── .releaserc.base.js
This repository uses a centralized release process powered by semantic-release and GitHub Actions.
-
On every push to the
mainbranch, the workflow:- Analyzes recent commits.
- Extracts the plugin names based on commit messages (e.g.,
feat(plugin-a): ...). - Triggers a release only for affected plugins.
Commits must follow Conventional Commits, with the plugin name in parentheses:
# Examples:
feat(plugin-a): add support for LDAP
fix(plugin-b): correct response format
chore(plugin-c): update dependenciesEach plugin release is tagged using the format:
<plugin-name>-v<version>
e.g. plugin-a-v1.2.3
To add a new official plugin:
- Copy the
template-plugin/directory. - Rename it and adapt it to your plugin's needs.
- Push it to
mainwith a commit message following the convention:
feat(plugin-my-new-plugin): initial implementationThe release workflow will handle versioning, changelog, and publication.
This repository uses a modular GitHub Actions setup:
Every pull request is validated by a common workflow that performs:
-
✅ Branch name validation Branches must follow predefined naming patterns (e.g.,
feature/<desc>,bugfix/<desc>,release/<version>). -
✅ Commit message validation Commits must follow the Conventional Commits format, including plugin scoping (
feat(plugin-x): ...). -
✅ Code style checks The repository enforces a common
checkstyleconfiguration shared across all plugins.
These checks are run automatically on every pull request.
Each plugin must define its own unit test workflow.
To do this:
- Create a workflow file under
.github/workflows/test-<plugin>.yml - Use the Maven test lifecycle:
name: Test plugin-a
on:
pull_request:
paths:
- 'plugin-a/**'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Run unit tests
run: cd plugin-a && mvn testYou can copy and adapt this per plugin.
- Ensure that each plugin is independent and buildable with Maven.
- Use standard Maven conventions inside each plugin.
- Keep plugin-specific logic scoped to its folder.
Official plugins are maintained by the core team, but community contributions are welcome through pull requests.
If you're building a custom plugin, please use linid-im-api-plugin-template
in your own repository.