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:
Access and API keys
How do I create an API key?
How do I create an API key?
Which portal permissions can manage keys?
Which portal permissions can manage keys?
Can I create multiple keys?
Can I create multiple keys?
Can one key access multiple companies?
Can one key access multiple companies?
Can I change an existing key name or scope?
Can I change an existing key name or scope?
Can I see the complete key again?
Can I see the complete key again?
What is the difference between deactivation and deletion?
What is the difference between deactivation and deletion?
Environments and testing
Is there a public sandbox or stage base URL?
Is there a public sandbox or stage base URL?
https://api.jobhandy.io/v1. Internal development hosts are not part of customer configuration.Is dryRun=true a test environment?
Is dryRun=true a test environment?
Does dry run guarantee the real write will succeed?
Does dry run guarantee the real write will succeed?
Tenant and scope
What is the difference between Company and Tenant?
What is the difference between Company and Tenant?
When is X-Tenant-ID required?
When is X-Tenant-ID required?
Can X-Tenant-ID grant additional access?
Can X-Tenant-ID grant additional access?
How do I obtain a tenant ID?
How do I obtain a tenant ID?
Can I move an existing employee to another tenant?
Can I move an existing employee to another tenant?
PATCH /employees/{id}. The endpoint can change or clear divisionId only within the same tenant.Requests and retries
Is X-Request-ID required?
Is X-Request-ID required?
Is X-Request-ID an idempotency key?
Is X-Request-ID an idempotency key?
What should I do after a write timeout?
What should I do after a write timeout?
Are unknown request fields ignored?
Are unknown request fields ignored?
Can I retry GET requests?
Can I retry GET requests?
Retry-After on 429.Collections and filters
What is the maximum page size?
What is the maximum page size?
pageSize accepts values from 1 through 1000; the server default is 100.Can I sort by multiple fields?
Can I sort by multiple fields?
- for descending order.Are string filters case-sensitive?
Are string filters case-sensitive?
How do I filter names with spaces or apostrophes?
How do I filter names with spaces or apostrophes?
\'. URL-encode the complete filter value.Are collection pages a snapshot?
Are collection pages a snapshot?
Resources
Can I delete an employee?
Can I delete an employee?
blocked state for account blocking and handle deletion through the applicable business process.Can I change an employee's work email?
Can I change an employee's work email?
Can an order decision be changed?
Can an order decision be changed?
under_review. A final decision can return ORDER_ALREADY_DECIDED; re-read and reconcile rather than attempting to overwrite it.Can I create an incident for an employee who is not activated?
Can I create an incident for an employee who is not activated?
POST /incidents may return 422 EMPLOYEE_NOT_ACTIVATED and does not create the incident. Complete the employee activation first, then send a new request with a new X-Request-ID.When can incident attachments be uploaded?
When can incident attachments be uploaded?
Why can a payroll export have fileName = null?
Why can a payroll export have fileName = null?
null when no file was produced. Do not call the download operation blindly.Operations
What are the numeric rate limits?
What are the numeric rate limits?
RateLimit-Policy, RateLimit, and Retry-After headers rather than one global fixed quota. Read the effective values from responses.Does the API provide webhooks?
Does the API provide webhooks?
Are official SDKs available?
Are official SDKs available?
What information is needed for support?
What information is needed for support?
