Changelog
v1.1.0
Released date: 2026-07-01
Motivation
The CQRS pattern (/write/ and /read/ prefixes) is an internal implementation detail that shouldn't be exposed to API consumers. Additionally, automatic API documentation via Swagger improves developer experience.
Changes
- All v2 endpoints unified under
/v2/prefix, hiding the internal/write/and/read/CQRS separation GET /write/plan/{id}renamed toGET /v2/plan/{id}/$latest- Swagger UI available at
/swagger/ 409 Conflictresponses includeLocationheader pointing to the plan's$latestendpoint
v1.0.0
Released date: 2026-06-30
Motivation
The API has been rewritten with CQRS to separate mutations from queries and added an approval workflow for plan governance.
Changes
- All mutations moved under
/write/plan, all queries under/read/plan - Single
PUT /plan/{id}replaced with dedicated endpoints:$update-content,$draft,$activate,$revoke - New approval workflow:
$approval-requested,$approval-given,$approval-rejected - Read response includes
approval_status,rejection_reason,revoke_reasonfields - Search endpoint supports
approval_statusquery parameter (pending,approved,rejected) - Mutation endpoints return minimal response (
{id, version}); use GET to retrieve full plan - Added
GET /write/plan/{id}for reading from the write model - Documentation moved to
Endpoints_v2.md
v0.4.0
Released date: 2026-06-15
Motivation
Clients need to retrieve a specific historical version of a plan, not just the latest one. This complements the History endpoint (which returns metadata only) by returning the full plan object at a given version.
Changes
- Added
GET /plan/{id}/version/{version}endpoint returning fullResponseobject - Returns
400for invalid UUID or version format,404for plan or version not found
v0.3.0
Released date: 2026-06-12
Motivation
The API now supports retrieving the full version history of a plan, enabling audit trail use cases. Additionally, the Search endpoint now requires the patient parameter to prevent unintended broad queries.
Changes
- Added
GET /plan/{id}/historyendpoint returning[]HistoryResponse - Added
HistoryResponsemodel with fields:version,status,updated_at,updated_by,comment patientquery parameter is now mandatory inSearchendpoint (returns400when missing)
v0.2.0
Released date: 2026-06-12
Motivation
The API model has been refactored to separate request and response. This provides a cleaner public API where server-assigned fields (id, version, updated_at) are not exposed in request bodies, and consumers receive dedicated response objects.
Additionally, the API now enforces optimistic locking via version checking on updates.
Changes
- Split single
Requestmodel intoCreateRequest,UpdateRequest, andResponse - Renamed
planfield toclinical_contentin all requests and responses - Renamed
Planmodel toContent/Clinical Content CreateRequestno longer acceptsversion— assigned by serverUpdateRequestrequiresversion— must match current server version for optimistic lockingUpdateendpoint returns409 Conflicton version mismatch,422 Unprocessable Entityon missing version- Updated
activestatus description to clarify it does NOT imply the plan is approved
v0.1.0
Released date: 2026-06-12
Motivation
Based of the feedback from work meeting 2026-06-11, we have revised which FHIR statuses to include as of now.
Furthermore, we have updated the documentation for the active status
to not imply the plan is approved. This does not currently cause any behavioural changes in the API.
Changes
- Added
Request.statusoptionrevoked - Removed
Request.statusoptionscompletedandon-hold