This plugin generates OpenAPI 3.0 specifications for any OpenMRS module's REST resources. The plugin uses JUnit 5 Jupiter framework with Spring web context to introspect and analyze REST resources.
- Minimum Required: OpenMRS Platform 2.4.0+
- Recommended: OpenMRS Platform 2.4.6-SNAPSHOT or later
- Reason: JUnit 5 Jupiter support requires OpenMRS 2.4+
Add these dependencies to your module's omod/pom.xml file:
<dependencies>
<!-- OpenMRS Web Test Support (required for Jupiter web context) -->
<dependency>
<groupId>org.openmrs.web</groupId>
<artifactId>openmrs-web</artifactId>
<version>${openmrsPlatformVersion}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
<!-- OpenMRS API Test Support (required for domain model access) -->
<dependency>
<groupId>org.openmrs.api</groupId>
<artifactId>openmrs-api</artifactId>
<version>${openmrsPlatformVersion}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
<!-- OpenMRS Test Framework (JUnit 5 Jupiter support) -->
<dependency>
<groupId>org.openmrs.test</groupId>
<artifactId>openmrs-test</artifactId>
<version>${openmrsPlatformVersion}</version>
<type>pom</type>
<scope>test</scope>
</dependency>
<!-- Servlet API (required for web context initialization) -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>test</scope>
</dependency>
</dependencies>Add this to your module's omod/pom.xml plugins section:
<plugin>
<groupId>org.openmrs.plugin</groupId>
<artifactId>openmrs-rest-analyzer</artifactId>
<version>1.0.0-SNAPSHOT</version>
<executions>
<execution>
<id>generate-openapi-spec</id>
<phase>process-classes</phase>
<goals>
<goal>analyze-representations</goal>
</goals>
<configuration>
<!-- Optional: Specify packages to scan -->
<scanPackages>
<scanPackage>org.openmrs.module.yourmodule.web.resources</scanPackage>
</scanPackages>
</configuration>
</execution>
</executions>
</plugin>mvn clean process-classesThe generated OpenAPI specification will be created at:
target/openapi/[module-name]-openapi-spec.json
-
ClassNotFoundException: BaseModuleWebContextSensitiveTest
- Solution: Ensure OpenMRS Platform version is 2.4.0 or later
- Add: openmrs-test dependency with type=pom
-
NoClassDefFoundError: javax.servlet.SessionCookieConfig
- Solution: Add javax.servlet-api dependency with scope=test
-
Spring context initialization fails
- Solution: Ensure openmrs-web tests dependency is present
- Verify: All test dependencies have scope=test
| OpenMRS Platform | Plugin Version | Status |
|---|---|---|
| 2.3.x and below | Not Supported | ❌ |
| 2.4.0 - 2.4.5 | 1.0.0-SNAPSHOT | ✅ |
| 2.4.6-SNAPSHOT+ | 1.0.0-SNAPSHOT | ✅ Recommended |
See openmrs-module-queue for a complete example of successful integration.
See openmrs-module-webservices.rest omod-2.4 and omod-2.5 for reference implementations.
For issues or questions, please check the troubleshooting section above or examine the working examples in the supported modules.