{ "openapi": "3.0.0", "paths": { "/metrics": { "get": { "operationId": "PrometheusController_index", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Prometheus" ] } }, "/health": { "get": { "operationId": "HealthController_check", "parameters": [], "responses": { "200": { "description": "The Health Check is successful", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "ok" }, "info": { "type": "object", "example": { "database": { "status": "up" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "error": { "type": "object", "example": {}, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "details": { "type": "object", "example": { "database": { "status": "up" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true } } } } } } }, "503": { "description": "The Health Check is not successful", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "error" }, "info": { "type": "object", "example": { "database": { "status": "up" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "error": { "type": "object", "example": { "redis": { "status": "down", "message": "Could not connect" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "details": { "type": "object", "example": { "database": { "status": "up" }, "redis": { "status": "down", "message": "Could not connect" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true } } } } } } } }, "tags": [ "Health" ] } }, "/ready": { "get": { "operationId": "HealthController_ready", "parameters": [], "responses": { "200": { "description": "The Health Check is successful", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "ok" }, "info": { "type": "object", "example": { "database": { "status": "up" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "error": { "type": "object", "example": {}, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "details": { "type": "object", "example": { "database": { "status": "up" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true } } } } } } }, "503": { "description": "The Health Check is not successful", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "example": "error" }, "info": { "type": "object", "example": { "database": { "status": "up" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "error": { "type": "object", "example": { "redis": { "status": "down", "message": "Could not connect" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true }, "nullable": true }, "details": { "type": "object", "example": { "database": { "status": "up" }, "redis": { "status": "down", "message": "Could not connect" } }, "additionalProperties": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string" } }, "additionalProperties": true } } } } } } } }, "tags": [ "Health" ] } }, "/api/dicom-web/studies": { "post": { "operationId": "DicomController_stowStudies", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "DICOMweb" ] }, "get": { "operationId": "DicomController_getStudies", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "DICOMweb" ] } }, "/api/dicom-web/studies/{studyUID}/series": { "get": { "operationId": "DicomController_getSeries", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "DICOMweb" ] } }, "/api/dicom-web/studies/{studyUID}/series/{seriesUID}/instances": { "get": { "operationId": "DicomController_getInstances", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "DICOMweb" ] } }, "/api/worklist": { "get": { "operationId": "WorklistController_getWorklist", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Worklist" ] } }, "/api/worklist/{id}": { "get": { "operationId": "WorklistController_getWorklistItem", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Worklist" ] } }, "/api/worklist/{id}/status": { "patch": { "operationId": "WorklistController_transitionStatus", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Worklist" ] } }, "/api/worklist/{id}/assign": { "patch": { "operationId": "WorklistController_assign", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Worklist" ] } }, "/api/worklist/{id}/unclaim": { "patch": { "operationId": "WorklistController_unclaim", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Worklist" ] } }, "/api/reports": { "post": { "operationId": "ReportController_create", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Reports" ] }, "get": { "operationId": "ReportController_list", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Reports" ] } }, "/api/reports/{id}": { "put": { "operationId": "ReportController_update", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Reports" ] }, "get": { "operationId": "ReportController_getById", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Reports" ] } }, "/api/reports/{id}/sign": { "post": { "operationId": "ReportController_sign", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Reports" ] } }, "/api/reports/{id}/amend": { "post": { "operationId": "ReportController_amend", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Reports" ] } }, "/api/auth/login": { "post": { "operationId": "AuthController_login", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Authentication" ] } }, "/api/auth/refresh": { "post": { "operationId": "AuthController_refresh", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Authentication" ] } }, "/api/auth/logout": { "post": { "operationId": "AuthController_logout", "parameters": [], "responses": { "204": { "description": "" } }, "tags": [ "Authentication" ] } }, "/api/auth/me": { "get": { "operationId": "AuthController_me", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Authentication" ] } }, "/api/users": { "get": { "operationId": "UsersController_list", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Users" ] }, "post": { "operationId": "UsersController_create", "parameters": [], "responses": { "201": { "description": "" } }, "tags": [ "Users" ] } }, "/api/users/{id}": { "patch": { "operationId": "UsersController_update", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Users" ] } }, "/api/audit-logs": { "get": { "operationId": "AuditController_list", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Audit" ] } }, "/internal/orthanc/tokens/validate": { "post": { "description": "Called by Orthanc on every WADO-RS request. Validates JWT, enforces role-based access, logs audit events, and returns grant decision.", "operationId": "OrthancCallbackController_validate", "parameters": [], "responses": { "200": { "description": "" } }, "summary": "Orthanc authorization plugin callback", "tags": [ "Internal" ] } }, "/internal/orthanc/user/get-profile": { "post": { "operationId": "OrthancCallbackController_getProfile", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Internal" ] } }, "/api/events/ingest": { "get": { "operationId": "EventsController_studyIngested", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "Events" ] } } }, "info": { "title": "RadVault PACS API", "description": "Medical imaging PACS system API — DICOMweb, Worklist, Reporting, Auth", "version": "0.1.0", "contact": {} }, "tags": [], "servers": [], "components": { "securitySchemes": { "bearer": { "scheme": "bearer", "bearerFormat": "JWT", "type": "http" } }, "schemas": {} } }