RestProvider is a multi-integration automation API server for test orchestration and utility workflows. The Java server under java-server now provides native implementations for every controller with defined routes.
- Java server: java-server
- Data files and templates: data_files
RestProvider/
├── java-server/ # Java Spring Boot API server
│ ├── pom.xml # Maven build descriptor
│ ├── README.md # Server-specific documentation
│ ├── MIGRATION_STATUS.md # Controller implementation status
│ ├── install/
│ │ ├── install.ps1 # Windows install script
│ │ └── install.sh # Linux/macOS install script
│ └── src/
│ ├── main/
│ │ ├── java/com/restprovider/
│ │ │ ├── App.java # Application entry point
│ │ │ ├── controllers/ # One class per integration controller
│ │ │ ├── core/ # Server bootstrap, registry, dispatcher
│ │ │ ├── domain/ # DTOs and service layer (azure, business, common, security)
│ │ │ └── util/ # Shared utilities (JsonUtil)
│ │ └── resources/
│ │ └── log4j2.xml # Logging configuration
│ └── test/
│ └── java/com/restprovider/
│ └── integration/ # Integration tests per controller
├── data_files/ # Sample properties and response templates
│ ├── variable.properties
│ ├── sample_var.properties
│ └── templates/ # Example request/response payloads
├── scripts/
│ └── sync-controller-status.ps1 # Utility to sync controller status docs
├── CONTRIBUTING.md
├── LICENSE.md
└── README.md
CSV sorting, column projection, and Log Analytics querying are implemented directly in the Java server.
All controllers currently shipped in the Java server are implemented natively.
| Controller | Status |
|---|---|
| AZPipeline | Complete |
| Azure | Complete |
| CosmosDB | Complete |
| Databricks | Complete |
| DataFactory | Complete |
| Dataverse | Complete |
| FHIR | Complete |
| StorageAccount | Complete |
| Synapse | Complete |
| Controller | Status |
|---|---|
| BrowserStack | Complete |
| Jenkins | Complete |
| JMeter | Complete |
| Postman | Complete |
| SonarQube | Complete |
| Controller | Status |
|---|---|
| MSD | Complete |
| Oracle | Complete |
| PowerBI | Complete |
| Snowflake | Complete |
| SQLServer | Complete |
| Controller | Status |
|---|---|
| Business | Complete |
| File | Complete |
| LogAnalytics | Complete |
| Misc | Complete |
| Office | Complete |
| OS | Complete |
| Sequence | Complete |
| String | Complete |
| Wait | Complete |
Detailed controller notes are maintained in java-server/MIGRATION_STATUS.md.
- Validate service availability and request wiring.
- Call a String echo endpoint and verify the returned payload.
- Perform assertions in test pipelines.
- Use String endpoints to check numeric content, comparisons, hashes, and matching behavior.
- Execute environment and file automation.
- Use OS, File, and Wait endpoints for directory management, scheduling, polling, and local utility flows.
- Orchestrate external platforms behind one REST surface.
- Use Azure, Jenkins, PowerBI, CosmosDB, BrowserStack, Databricks, Oracle, SQLServer, and related controllers from a single API host.
- Temporarily disable risky integrations without changing deployments.
- Use the admin controller-toggle endpoints to enable or disable individual controllers at runtime.
Deployment recommendation:
- Run RestProvider Server on an isolated host, such as a dedicated VM or Docker container.
- This is recommended because several controllers can interact with the local operating system, files, processes, and other environment-level resources.
- Avoid running the server directly on shared developer workstations or sensitive hosts unless access is tightly controlled.
Prerequisites:
- Java 17+
- Maven 3.9+
Build and run:
- Install dependencies and package the server.
- Windows PowerShell:
cd java-server\install./install.ps1
- Linux or macOS:
cd java-server/installchmod +x install.sh./install.sh
- Windows PowerShell:
- Start the server.
cd java-serverjava -jar target/restprovider-java-server-1.0.0.jar
Port configuration:
- Default port is
8080. - Set
RESTPROVIDER_PORTto override the listener port.
Route shape:
/api/{controller}/...- Example:
/api/azure
Route conventions:
- Most generalized controllers accept request inputs from headers, query parameters, or both.
- Protected routes typically accept either
passCodeorpasscode. - Alias routes are preserved for backward compatibility while newer, clearer route forms are added.
Representative routes:
- Platform and cloud:
GET|POST /api/azure/az/commandGET /api/azpipeline/pipeline/runs,POST /api/azpipeline/pipeline/runGET|POST /api/cosmosdbandGET /api/cosmosdb/container/detailsGET|POST /api/databricks/sql/query,GET /api/databricks/jobsGET /api/datafactory/pipeline/status,POST /api/datafactory/pipeline/runGET|POST|PUT|DELETE /api/fhirand/api/fhir/{resourceType}/{id...}GET /api/storageaccount/directories,GET|POST /api/synapse/query
- DevOps and tooling:
GET /api/browserstack/build/list,GET /api/browserstack/appium/session/listGET|POST|PUT|DELETE /api/jenkinsGET /api/jmeter/version,GET|POST /api/postman/run/idGET|POST /api/sonarqube/graphql
- Data and analytics:
GET|POST /api/dataverse/query,PUT /api/dataverse/dmlGET|POST /api/msd/queryGET /api/office/excel/all,GET /api/office/excel/rangeGET|POST /api/oracle/query,GET /api/oracle/blobGET|POST|PUT|DELETE /api/powerbi/requestGET|POST /api/snowflake/oauth/tokenGET|POST /api/sqlserver/query,GET /api/sqlserver/blob
- System and utility:
GET /api/business/healthGET /api/file/exists,POST /api/file/upload/localGET /api/loganalytics/message,GET /api/loganalytics/message/startswithGET /api/misc/check/vpn,GET /api/misc/account/namesPOST /api/os/session/schedule,GET /api/os/env/variablePOST /api/sequence/create,GET /api/sequence/currentGET /api/string/echo/{echoMe},GET /api/string/sha256GET /api/wait/sleep/{seconds},POST /api/wait/wait/until/state/synchronous
Route details and controller-specific aliases are documented in java-server/README.md.
The Java server includes one central control method in java-server/src/main/java/com/restprovider/core/ControllerRegistry.java:
setControllerEnabled(String name, boolean isEnabled)
Operational admin endpoints:
- List all controller states.
GET /admin/controllers
- Enable one controller.
PUT /admin/controllers/{name}/enabled?value=true
- Disable one controller.
PUT /admin/controllers/{name}/enabled?value=false
Default startup state:
- All registered controllers are disabled by default when the Java server starts.
- Enable only the controllers you need using the admin endpoints above.
Expected behavior:
- Enabled controllers continue to serve requests normally.
- Disabled controllers return HTTP
403with a controller-disabled message.
Core components:
- Controller registry and dispatcher.
- Native controller implementations.
- Domain services and DTO layers.
- Unified Log4j2 logging configuration.
Build and test the Java server:
cd java-servermvn -q clean testmvn -q clean package
Useful integration test entry points include:
- java-server/src/test/java/com/restprovider/integration/AdminToggleIntegrationTest.java
- java-server/src/test/java/com/restprovider/integration/RoutingParityIntegrationTest.java
- java-server/src/test/java/com/restprovider/integration/AzureControllerIntegrationTest.java
- Every controller with defined routes is implemented natively in Java.
- Controllers with no defined route surface have been removed from the shipped Java controller set.
- The root controller coverage table and java-server/MIGRATION_STATUS.md are aligned with the current controller set.