API 2.0.0: active contract required
POST /incidents requires a contract with status active. Status approved is insufficient. Without an active contract, the request fails with HTTP 422 and EMPLOYEE_HAS_NO_ACTIVE_CONTRACT, including when dryRun=true; no incident is created. Resolve the contract state through the responsible business process before submitting a new request with a new X-Request-ID.
Existing incidents remain editable under their existing lifecycle and field restrictions. This new prerequisite applies to creation. The employee activation prerequisite remains documented separately; no precedence between validation errors is specified.
API 2.0.0: blocking changes and active contracts
ForPATCH /employees/{id}, an active contract prohibits both blocked: true and blocked: false. If blocked is included, the API rejects the entire patch with HTTP 422 and EMPLOYEE_HAS_ACTIVE_CONTRACT, including when dryRun=true. Other fields in that rejected request are not applied. Sending the employee’s existing blocked value does not avoid this rule.
For profile-only updates, omit blocked entirely. Configure serializers and synchronization mappings so they do not add blocked: false as a default. For example:
Dry run versus separate environment
dryRun=true is a request mode on supported write operations. It is not a sandbox and does not use a separate database.
Safe test strategy
1
Use a dedicated key
Create a key with the minimum company and division scope required for development or acceptance testing.
2
Use agreed test records
Coordinate test employees, orders, incidents, divisions, and payroll periods with the responsible customer administrators.
3
Validate writes first
Use
dryRun=true on supported operations and inspect the projected resource and error behavior.4
Apply a controlled write
Perform one real request in the agreed scope and verify all persistence and side effects.
5
Test recovery
Exercise timeouts,
409, 422, 429, and credential deactivation before enabling automation.What health does and does not prove
GET /health proves that the public API is reachable and can return its health response. It does not prove:
- API-key validity
- tenant or division scope
- access to a specific resource
- availability of a downstream document file
- correctness of a write payload
