{"id":20505975,"url":"https://github.com/ligoj/ligoj-api","last_synced_at":"2025-04-13T21:12:44.434Z","repository":{"id":65680247,"uuid":"84183491","full_name":"ligoj/ligoj-api","owner":"ligoj","description":"Base components and archetype for plugin of Ligoj","archived":false,"fork":false,"pushed_at":"2025-03-21T19:52:57.000Z","size":2126,"stargazers_count":6,"open_issues_count":4,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-13T21:12:07.481Z","etag":null,"topics":["ligoj","rest","spring","spring-boot","spring-cloud"],"latest_commit_sha":null,"homepage":"https://kloudy.io","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ligoj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-07T09:59:59.000Z","updated_at":"2025-03-21T19:53:02.000Z","dependencies_parsed_at":"2024-09-15T06:10:38.563Z","dependency_job_id":"b88ad2ed-d293-47f1-93bc-3336c1ee8966","html_url":"https://github.com/ligoj/ligoj-api","commit_stats":null,"previous_names":[],"tags_count":88,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ligoj%2Fligoj-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ligoj%2Fligoj-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ligoj%2Fligoj-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ligoj%2Fligoj-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ligoj","download_url":"https://codeload.github.com/ligoj/ligoj-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248782259,"owners_count":21160717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ligoj","rest","spring","spring-boot","spring-cloud"],"created_at":"2024-11-15T19:52:34.797Z","updated_at":"2025-04-13T21:12:44.411Z","avatar_url":"https://github.com/ligoj.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## :link: Ligoj API plugin [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.ligoj.api/root/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.ligoj.api/root)\nAPI framework for Ligoj plugins\n\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=org.ligoj.api%3Aroot\u0026metric=coverage)](https://sonarcloud.io/component_measures/metric/coverage/list?id=org.ligoj.api%3Aroot)\n[![Quality Gate](https://sonarcloud.io/api/project_badges/measure?metric=alert_status\u0026project=org.ligoj.api%3Aroot)](https://sonarcloud.io/dashboard/index/org.ligoj.api:root)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/abf810c094e44c0691f71174c707d6ed)](https://www.codacy.com/gh/ligoj/ligoj-api?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=ligoj/ligoj-api\u0026amp;utm_campaign=Badge_Grade)\n[![CodeFactor](https://www.codefactor.io/repository/github/ligoj/ligoj-api/badge)](https://www.codefactor.io/repository/github/ligoj/ligoj-api)\n[![Maintainability](https://api.codeclimate.com/v1/badges/df4f5f5fc210a3e77b1e/maintainability)](https://codeclimate.com/github/ligoj/ligoj-api/maintainability)\n[![License](http://img.shields.io/:license-mit-blue.svg)](http://fabdouglas.mit-license.org/)\n\n# Extension points\n\n## Plugin definition extension points\n\n- [org.ligoj.app.api.ServicePlugin](plugin-api/src/main/java/org/ligoj/app/api/ServicePlugin.java)\n- [org.ligoj.app.api.ToolPlugin](plugin-api/src/main/java/org/ligoj/app/api/ToolPlugin.java)\n\n## IAM extension points\n\n- [org.ligoj.app.iam.IamProvider](plugin-api/src/main/java/org/ligoj/app/iam/IamProvider.java): Identity and Access Management (IAM) provider of the application.\n- [org.ligoj.app.iam.IamConfigurationProvider](plugin-api/src/main/java/org/ligoj/app/iam/IamConfigurationProvider.java)\n- [org.ligoj.app.iam.IAuthenticationContributor](plugin-api/src/main/java/org/ligoj/app/iam/IAuthenticationContributor.java)\n- [org.ligoj.app.iam.ICompanyRepository](plugin-api/src/main/java/org/ligoj/app/iam/ICompanyRepository.java)\n- [org.ligoj.app.iam.IContainerRepository](plugin-api/src/main/java/org/ligoj/app/iam/IContainerRepository.java)\n- [org.ligoj.app.iam.IGroupRepository](plugin-api/src/main/java/org/ligoj/app/iam/IGroupRepository.java)\n- [org.ligoj.app.iam.IUserRepository](plugin-api/src/main/java/org/ligoj/app/iam/IUserRepository.java)\n\n# Maven structure\n\nMinimal Maven structure for a plugin:\n- Version, following the [semver](https://semver.org/) convention\n- Plugin artifact id\n  - Must start with the parent service plugin artifact id. For sample, plugin `plugin-id-ldap` is a tool plugin for the service `plugin-id`.\n  - Otherwise, Must start with `plugin-`, without additional hyphen.\n- Parent service plugin artifact as `provided` dependency.\n\n```xml\n\u003cproject xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"\u003e\n\t\u003cmodelVersion\u003e4.0.0\u003c/modelVersion\u003e\n\t\u003cparent\u003e\n\t\t\u003cgroupId\u003eorg.ligoj.api\u003c/groupId\u003e\n\t\t\u003cartifactId\u003eplugin-parent\u003c/artifactId\u003e\n        \u003cversion\u003e4.1.8\u003c/version\u003e \u003c!-- Version of plugin API --\u003e\n\t\t\u003crelativePath /\u003e\n\t\u003c/parent\u003e\n\n\t\u003cgroupId\u003eorg.ligoj.plugin\u003c/groupId\u003e\n\t\u003cartifactId\u003eplugin-id-ldap\u003c/artifactId\u003e \u003c!-- Tool plugin artifact-id, must start with \"plugin-\" --\u003e\n\t\u003cversion\u003e1.1.3-SNAPSHOT\u003c/version\u003e       \u003c!-- Tool plugin version --\u003e\n\t\u003cpackaging\u003ejar\u003c/packaging\u003e\n\n    \u003c!-- Feature dependency --\u003e\n    \u003cdependencyManagement\u003e\n        \u003cdependencies\u003e\n            \u003cdependency\u003e\n                \u003cgroupId\u003eorg.ligoj.plugin\u003c/groupId\u003e\n                \u003cartifactId\u003eplugin-id\u003c/artifactId\u003e        \u003c!-- Service plugin artifact-id --\u003e\n                \u003cversion\u003e[2.2.0-SNAPSHOT,2.3.0)\u003c/version\u003e \u003c!-- Service plugin version range --\u003e\n                \u003cscope\u003eprovided\u003c/scope\u003e                   \u003c!-- Always provided --\u003e\n            \u003c/dependency\u003e\n        \u003c/dependencies\u003e\n    \u003c/dependencyManagement\u003e\n\u003c/project\u003e\n```\n\n# Build a plugin\n\nProduced artifacts for a plugin named `plugin-id-ldap` are:\n- Main jar file: `plugin-id-ldap-1.0.0.jar`\n- Javadoc jar file: `plugin-id-ldap-1.0.0-javadoc.jar`. Optional, but when deployed, contributes to generated OpenAPI JSON file.\n- Sources jar file: `plugin-id-ldap-1.0.0-sources.jar`. Optional.\n- Test sources jar file: `plugin-id-ldap-1.0.0-test-sources.jar`. Optional.\n- Jacoco coverage result\n\nThe following command generate all artifacts and run UTs and Its\n```bash\nmvn package -Pjavadoc,jacoco,sources\n```\n\n# Install a plugin\n\n## From the UI\n\nThe common steps:\n- Login to application\n- Go to the `Administration` page\n- Choose the `Plugin` section\n\n\n### Install a local plugin\n\nThe specific steps:\n- Click on `Install \u003e Install from file`\n- In the modal, fill the inputs accordingly to your plugin\n- Upload it\n- Restart the application\n\n### Install a deployed Maven plugin\n\nThe specific steps:\n- Click on `Install \u003e Install from repository`\n- In the modal, type the artifact name\n- Choose one or many plugins\n- Confirm\n- Restart the application\n\n\n## From the Ligoj CLI\n\nThe [Ligoj CLI](https://github.com/ligoj/cli) is an administration tool for all Ligoj API operations.\n\nSee all command options with `ligoj plugin`\n\n### Install a local plugin\n\nThe command is:\n\n```bash\nligoj plugin upload --id \"plugin-id-ldap\" --version \"1.1.4\" --from \"/path/to/plugin-id-ldap-1.1.4.jar\"\n```\n\n### Install a deployed Maven plugin\n\nThe command is:\n\n```bash\nligoj plugin install --id \"plugin-id-ldap\" --version \"1.1.4\"  --repository \"central\" --javadoc\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fligoj%2Fligoj-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fligoj%2Fligoj-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fligoj%2Fligoj-api/lists"}