1.0.0 on the /v1 base path.
2026-09-02 - 1.0.0
Incidents
POST /incidentsnow returns422 EMPLOYEE_NOT_ACTIVATEDwhen the referenced employee exists in the authorized scope but has not completed activation.- The error message is
The referenced employee is not activated. - No incident is created when this validation fails.
Client impact
Do not retry the same create request until employee activation has completed. After activation, submit a new request with a newX-Request-ID.
2026-08-28 - 1.0.0
Orders
- Removed
tenantanddivisionIdfrom theOrderresponse schema. - Replaced
hrReviewDecisionandOrderHrReviewDecisionwithhrHistoryandOrderHrHistory. hrHistory.decisionBynow contains a nullable 24-character user ID. It isnullfor automated and API-key decisions.- Replaced the
OrderProductmodel returned inproducts[]byGET /orders,GET /orders/{id}, andPOST /orders/{id}/decision. - Added
model,vatRate,manufacturerName,articleGroupName,grossAmount,netAmount,service,grossService, andnetServicetoOrderProduct. - Removed
description,rateInCents, andserviceRateInCentsfromOrderProduct. model,manufacturerName,articleGroupName,service,grossService, andnetServiceare nullable.vatRateandgrossAmountare decimal strings with two decimal places;netAmountuses four decimal places.grossServiceandnetServiceare nullable decimal strings with two decimal places.
Order queries
- Removed
tenantanddivisionIdfrom the supported filter and sort fields ofGET /orders. - Use
X-Tenant-IDto restrict an order query to one authorized tenant where required.
Divisions
- Changed
Division.order,DivisionCreate.order, andDivisionPatch.orderfrom OpenAPI typeintegertonumber. - Removed the previous integer-only
multipleOf: 1constraint.
Client impact
The API version remains1.0.0 and the production base URL remains https://api.jobhandy.io/v1. Clients that deserialize order responses must update their models, DTOs, mappings, decimal handling, mocks, and contract tests. Do not infer tenant or division from fields that are no longer present in the Order response.
Initial public scope
Available resources
- Employees: list, create, get, update
- Orders: list, get, HR decision, attachment download
- Incidents: list, create, get, update, attachment upload
- Divisions: list, create, get, update
- Payroll export documents: list, get, download
- Health: public availability check
Cross-cutting behavior
X-API-Keyauthentication- optional
X-Tenant-IDtenant selection where documented - UUID v4/v7
X-Request-IDcorrelation - page-based collection pagination
- one-field sorting
- filter expression language
- dry-run validation on supported writes
- common structured error envelope
- rate-limit response headers
The OpenAPI document does not encode a publication date for this baseline. Future entries should include an explicit release date and migration impact.
Future entry format
Client responsibility
Before adopting a new OpenAPI file:- Compare it with the version currently used by the client.
- Identify request, response, schema, enum, endpoint, and error changes.
- Regenerate or update client types.
- Run contract and acceptance tests.
- Record the adopted version and checksum.
Versioning policy
Review which changes are additive and which require migration.
