MDMbox Docs

API reference

The full OpenAPI specification is available at /api/openapi.json. The interactive Swagger UI is at /api/docs.

Infrastructure

MethodPathDescription
GET/healthzLiveness check
GET/readyzReadiness check (database and FHIR engine)
GET/api/docsSwagger UI
GET/api/openapi.jsonOpenAPI specification

Matching models

MethodPathDescription
GET/api/modelsList all models (optional ?resource=Patient)
POST/api/modelsCreate a model
GET/api/models/:idGet model by ID
PUT/api/models/:idUpdate model
DELETE/api/models/:idDelete model

Both MatchingModel and BulkMatchingModel are managed through this endpoint. The resourceType field in the request body determines the type.

Users and clients

User and Client resources can be managed through the IAM endpoints. These endpoints require normal API authentication. MDMbox currently has no role split, so any valid authenticated User or Client can call them. Responses omit User.password and Client.secret.

MethodPathDescription
GET/api/iam/UserList users
POST/api/iam/UserCreate user
GET/api/iam/User/:idGet user by ID
PUT/api/iam/User/:idUpdate user
PATCH/api/iam/User/:idPatch user
DELETE/api/iam/User/:idDelete user
GET/api/iam/ClientList clients
POST/api/iam/ClientCreate client
GET/api/iam/Client/:idGet client by ID
PUT/api/iam/Client/:idUpdate client
PATCH/api/iam/Client/:idPatch client
DELETE/api/iam/Client/:idDelete client

FHIR operations

FHIR storage API proxy

MethodPathDescription
GET/fhir-server-api/*pathRead FHIR metadata, resources, searches, and history
POST/fhir-server-apiSubmit a FHIR batch or transaction Bundle
POST/fhir-server-api/$loadRun synchronous FHIR bulk load
POST/fhir-server-api/$importStart asynchronous FHIR bulk import
POST/fhir-server-api/$fhir-package-installInstall FHIR packages such as US Core

Use $fhir-package-install before sending resources that declare profiles from external ImplementationGuide packages, such as US Core. The endpoint accepts a FHIR Parameters body with a package valueString, for example hl7.fhir.us.core@6.1.0.

$match

MethodPathDescription
POST/api/fhir/:resource/$matchMatch a resource (FHIR Parameters body)
POST/api/fhir/:resource/:id/$matchMatch existing resource by ID
POST/api/fhir/r4/:resource/$matchMatch a resource using the R4 operation implementation
POST/api/fhir/r4/:resource/:id/$matchMatch an existing resource by ID using the R4 operation implementation
POST/api/fhir/r6/:resource/$matchMatch a resource using the R6 operation implementation
POST/api/fhir/r6/:resource/:id/$matchMatch an existing resource by ID using the R6 operation implementation

The unversioned routes use the release selected by MDMBOX_DEFAULT_FHIR_RELEASE.

For body-based $match, MDMbox validates the input resource before running matching. If the resource declares meta.profile, the referenced profile must be available in the FHIR package registry and the resource must satisfy it. Validation failures return 422 Unprocessable Entity with an OperationOutcome.

See Find duplicates: $match.

$merge

MethodPathDescription
POST/api/fhir/$mergeExecute or preview a merge

See Merge operation.

$unmerge

MethodPathDescription
POST/api/fhir/$unmergeReverse a previous merge from its merge Task

$mark-not-a-match

MethodPathDescription
POST/api/fhir/$mark-not-a-matchRecord that two resources are not the same real-world entity

$referencing

MethodPathDescription
POST/api/fhir/:resource/:id/$referencingFind resources referencing a given resource

See Referencing operation.

Bulk matching

All bulk match endpoints are scoped to a BulkMatchingModel by ID.

MethodPathDescription
POST/api/bulk-match/:model-id/preparePrepare flat table (?force=true to recreate)
GET/api/bulk-match/:model-id/statusGet flat table preparation status
POST/api/bulk-match/:model-id/startStart bulk match job (body: {batchSize, workersCount})
POST/api/bulk-match/:model-id/stopStop job (?force=true for immediate cancellation)
POST/api/bulk-match/:model-id/continueResume a stopped job
POST/api/bulk-match/:model-id/archiveArchive a completed or stopped job
GET/api/bulk-match/:model-id/download/:job-idDownload results as CSV

See Bulk matching.

Admin UI

The admin interface is available at /admin. It provides:

  • /admin — model management (create, edit, delete MatchingModel and BulkMatchingModel)
  • /admin/bulk-match — bulk match pipeline (prepare, start, monitor, download, stop)

The Admin UI uses server-sent events for real-time updates. No separate frontend deployment is required.

Last updated: