API Documentation
MERV exposes a REST API under the base path /api/v1. Use JWT (from login) or API key in the Authorization header. For interactive docs, use Swagger UI when the API is running.
Swagger UI: When the API is running, open
http://<host>:7777/swagger-ui.html
(e.g. http://localhost:7777/swagger-ui.html) for try-it-out requests.
Authentication
- Login:
POST /api/v1/login— Returns access + refresh tokens. - Refresh:
POST /api/v1/refreshToken— Get new access token. - API Key: Send
X-API-Key: <your-key>or use the API Keys endpoints to manage keys.
Users
-
POST /api/v1/save Register new user
-
POST /api/v1/login Login (returns JWT)
-
POST /api/v1/refreshToken Refresh access token
-
GET /api/v1/profile Get current user profile
-
PUT /api/v1/profile Update profile
-
PUT /api/v1/change-password Change password
-
GET /api/v1/users List users (admin)
-
GET /api/v1/check-username Check username availability
-
GET /api/v1/check-email Check email availability
-
GET /api/v1/pending-users List pending users (admin)
-
PUT /api/v1/approve-user/{userId} Approve user (admin)
-
PUT /api/v1/reject-user/{userId} Reject user (admin)
-
DELETE /api/v1/users/{userId} Delete user (admin)
-
POST /api/v1/password-reset-request Request password reset
-
GET /api/v1/password-reset-requests List reset requests (admin)
-
PUT /api/v1/approve-password-reset/{requestId} Approve password reset (admin)
-
PUT /api/v1/reject-password-reset/{requestId} Reject password reset (admin)
-
GET /api/v1/my-password-reset-requests My reset requests
Test Suites
Base path: /api/v1/testsuites
- POST/api/v1/testsuitesCreate test suite
- GET/api/v1/testsuitesList all test suites
- GET/api/v1/testsuites/{id}Get test suite by ID
- PUT/api/v1/testsuites/{id}Update test suite
- PATCH/api/v1/testsuites/{id}/statusUpdate suite status
- PATCH/api/v1/testsuites/{id}Partial update
- DELETE/api/v1/testsuites/{id}Delete test suite
- GET/api/v1/testsuites/alias/{alias}Get suite by alias
- POST/api/v1/testsuites/with-alias-confirmationCreate with alias conflict check
- PUT/api/v1/testsuites/{id}/with-alias-confirmationUpdate with alias conflict check
- POST/api/v1/testsuites/transfer-testcasesTransfer test cases to another suite
Test Cases
Base path: /api/v1
- POST/api/v1/testcasesCreate test case
- GET/api/v1/testcasesList all test cases
- GET/api/v1/testcases/{id}Get test case by ID
- GET/api/v1/testcases/suite/{testSuiteId}Get test cases by suite
- PUT/api/v1/testcases/{id}Update test case
- PUT/api/v1/testcases/{id}/finishMark test case finished
- PUT/api/v1/testcases/{id}/restartRestart test case
- DELETE/api/v1/testcases/{id}Delete test case
Test Steps
Base path: /api/v1
- POST/api/v1/teststepsCreate test step
- POST/api/v1/teststeps/with-filesCreate step with file upload (multipart)
- GET/api/v1/teststepsList test steps
- GET/api/v1/teststeps/{id}Get test step by ID
- GET/api/v1/teststeps/testcase/{testCaseId}Get steps by test case
- PUT/api/v1/teststeps/{id}Update test step
- PATCH/api/v1/teststeps/{id}Partial update
- POST/api/v1/teststeps/{id}/screenshotUpload screenshot
- GET/api/v1/teststeps/{id}/screenshotGet screenshot
- DELETE/api/v1/teststeps/{id}Delete test step
File Attachments (Test Steps)
- POST/api/v1/teststeps/{testStepId}/filesUpload file(s)
- GET/api/v1/teststeps/{testStepId}/filesList files for step
- GET/api/v1/teststeps/{testStepId}/files/{fileType}Get files by type
- GET/api/v1/files/{fileId}/downloadDownload file
- PUT/api/v1/files/{fileId}/descriptionUpdate file description
- DELETE/api/v1/files/{fileId}Delete file
- DELETE/api/v1/teststeps/{testStepId}/filesDelete all files for step
Hierarchy
- POST/api/v1/hierarchyCreate hierarchy
- GET/api/v1/hierarchyList hierarchies
- GET/api/v1/hierarchy/{id}Get hierarchy by ID
- PUT/api/v1/hierarchy/{id}Update hierarchy
- GET/api/v1/hierarchy/{id}/childrenGet child hierarchies
- DELETE/api/v1/hierarchy/{id}Delete hierarchy
API Keys
Base path: /api/v1/api-keys
- POST/api/v1/api-keysCreate API key
- GET/api/v1/api-keysList API keys
- GET/api/v1/api-keys/{id}Get API key
- PUT/api/v1/api-keys/{id}/revokeRevoke API key
- DELETE/api/v1/api-keys/{id}Delete API key
Example: Get test cases by suite
GET /api/v1/testcases/suite/39c6ac17-1930-4278-8e9e-cb5a1822c795
Authorization: Bearer <access_token>
MERV