Documents API
25 endpoints, generated from packages/core/openapi/v1.snapshot.json (OpenAPI 3.1.0, contract version 1.0). Conventions for lists, errors, money and authentication are on the API conventions page.
GET/api/v1/documents
Documents the member may see (`mine=true`, `employeeId`, `categoryId`, `expiry`)
Parameters
| Name | In | Type | Required |
|---|---|---|---|
employeeId | query | string (uuid) | no |
categoryId | query | string (uuid) | no |
mine | query | enum | no |
expiry | query | enum | no |
deleted | query | enum | no |
Responses
200 Success. object
itemsarray of objectrequiredidstring (uuid)requiredemployeeIdstring (uuid)requiredemployeeNamestringrequiredemployeeNumberstringrequiredcategoryobjectrequiredidstring (uuid)requirednamestringrequiredsensitivityenumrequiredone of "normal", "medical"
titlestringrequirednotesstring | nullrequiredexpiresOnstring | nullrequiredexpiryenum or nullrequiredone of "valid", "expiring", "expired"
sourceenumrequiredone of "upload", "generated"
currentobject or nullrequiredidstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
previousVersionsarray of objectrequiredSuperseded versions (HR only).
idstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
acknowledgementobject or nullrequiredidstring (uuid)requiredstatusenumrequiredone of "requested", "acknowledged"
requestedAtstringrequiredacknowledgedAtstring | nullrequiredfileSha256string | nullrequiredcurrentbooleanrequiredFalse when a newer version needs a new acknowledgement.
viewedbooleanrequiredcreatedAtstringrequireddeletedAtstring | nullrequiredcanManagebooleanrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required
GET/api/v1/documents/{id}
A document with its versions and acknowledgement
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Responses
200 Success. object
idstring (uuid)requiredemployeeIdstring (uuid)requiredemployeeNamestringrequiredemployeeNumberstringrequiredcategoryobjectrequiredidstring (uuid)requirednamestringrequiredsensitivityenumrequiredone of "normal", "medical"
titlestringrequirednotesstring | nullrequiredexpiresOnstring | nullrequiredexpiryenum or nullrequiredone of "valid", "expiring", "expired"
sourceenumrequiredone of "upload", "generated"
currentobject or nullrequiredidstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
previousVersionsarray of objectrequiredSuperseded versions (HR only).
idstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
acknowledgementobject or nullrequiredidstring (uuid)requiredstatusenumrequiredone of "requested", "acknowledged"
requestedAtstringrequiredacknowledgedAtstring | nullrequiredfileSha256string | nullrequiredcurrentbooleanrequiredFalse when a newer version needs a new acknowledgement.
viewedbooleanrequiredcreatedAtstringrequireddeletedAtstring | nullrequiredcanManagebooleanrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required - 404
not_found
PATCH/api/v1/documents/{id}
Rename, re-note or re-file a document
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Request body
application/json, object, required
titlestringmin length 1 · max length 120
notesstring or nullmax length 1000
categoryIdstring (uuid)
Responses
200 Success. object
idstring (uuid)requiredemployeeIdstring (uuid)requiredemployeeNamestringrequiredemployeeNumberstringrequiredcategoryobjectrequiredidstring (uuid)requirednamestringrequiredsensitivityenumrequiredone of "normal", "medical"
titlestringrequirednotesstring | nullrequiredexpiresOnstring | nullrequiredexpiryenum or nullrequiredone of "valid", "expiring", "expired"
sourceenumrequiredone of "upload", "generated"
currentobject or nullrequiredidstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
previousVersionsarray of objectrequiredSuperseded versions (HR only).
idstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
acknowledgementobject or nullrequiredidstring (uuid)requiredstatusenumrequiredone of "requested", "acknowledged"
requestedAtstringrequiredacknowledgedAtstring | nullrequiredfileSha256string | nullrequiredcurrentbooleanrequiredFalse when a newer version needs a new acknowledgement.
viewedbooleanrequiredcreatedAtstringrequireddeletedAtstring | nullrequiredcanManagebooleanrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required
DELETE/api/v1/documents/{id}
Delete a document (soft: hidden, kept and audited)
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
reason | query | string | no |
Responses
204 No content.
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required
POST/api/v1/documents/{id}/acknowledge
Acknowledge the document (employee; open it first). Records time, IP, user agent and the file's SHA-256
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Responses
200 Success. object
idstring (uuid)requiredemployeeIdstring (uuid)requiredemployeeNamestringrequiredemployeeNumberstringrequiredcategoryobjectrequiredidstring (uuid)requirednamestringrequiredsensitivityenumrequiredone of "normal", "medical"
titlestringrequirednotesstring | nullrequiredexpiresOnstring | nullrequiredexpiryenum or nullrequiredone of "valid", "expiring", "expired"
sourceenumrequiredone of "upload", "generated"
currentobject or nullrequiredidstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
previousVersionsarray of objectrequiredSuperseded versions (HR only).
idstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
acknowledgementobject or nullrequiredidstring (uuid)requiredstatusenumrequiredone of "requested", "acknowledged"
requestedAtstringrequiredacknowledgedAtstring | nullrequiredfileSha256string | nullrequiredcurrentbooleanrequiredFalse when a newer version needs a new acknowledgement.
viewedbooleanrequiredcreatedAtstringrequireddeletedAtstring | nullrequiredcanManagebooleanrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required - 409
conflict,not_viewed
POST/api/v1/documents/{id}/acknowledgements
Ask the employee to read and acknowledge the current version
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Responses
200 Success. object
idstring (uuid)requiredemployeeIdstring (uuid)requiredemployeeNamestringrequiredemployeeNumberstringrequiredcategoryobjectrequiredidstring (uuid)requirednamestringrequiredsensitivityenumrequiredone of "normal", "medical"
titlestringrequirednotesstring | nullrequiredexpiresOnstring | nullrequiredexpiryenum or nullrequiredone of "valid", "expiring", "expired"
sourceenumrequiredone of "upload", "generated"
currentobject or nullrequiredidstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
previousVersionsarray of objectrequiredSuperseded versions (HR only).
idstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
acknowledgementobject or nullrequiredidstring (uuid)requiredstatusenumrequiredone of "requested", "acknowledged"
requestedAtstringrequiredacknowledgedAtstring | nullrequiredfileSha256string | nullrequiredcurrentbooleanrequiredFalse when a newer version needs a new acknowledgement.
viewedbooleanrequiredcreatedAtstringrequireddeletedAtstring | nullrequiredcanManagebooleanrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required - 409
conflict
GET/api/v1/documents/{id}/file
Download (or view) the document; records the first view and audits medical and identity views
Served with the detected type, `Content-Disposition: attachment` (images and PDFs may be viewed inline with `inline=1`), `X-Content-Type-Options: nosniff` and a sandbox CSP. 404 for anyone who may not see it.
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
version | query | string (uuid) | no |
inline | query | enum | no |
Responses
200 The file application/octet-stream
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required - 404
not_found
POST/api/v1/documents/{id}/purge
Permanently remove a deleted document and its files (owners only)
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Request body
application/json, object, required
reasonstringrequiredmin length 1 · max length 300
Responses
204 No content.
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required,reauth_required - 409
conflict
POST/api/v1/documents/{id}/versions
Replace the file (raw bytes in the body): a new version; the old one is kept for HR
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
expiresOn | query | string | no |
fileName | query | string | no |
Responses
201 Success. object
idstring (uuid)requiredemployeeIdstring (uuid)requiredemployeeNamestringrequiredemployeeNumberstringrequiredcategoryobjectrequiredidstring (uuid)requirednamestringrequiredsensitivityenumrequiredone of "normal", "medical"
titlestringrequirednotesstring | nullrequiredexpiresOnstring | nullrequiredexpiryenum or nullrequiredone of "valid", "expiring", "expired"
sourceenumrequiredone of "upload", "generated"
currentobject or nullrequiredidstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
previousVersionsarray of objectrequiredSuperseded versions (HR only).
idstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
acknowledgementobject or nullrequiredidstring (uuid)requiredstatusenumrequiredone of "requested", "acknowledged"
requestedAtstringrequiredacknowledgedAtstring | nullrequiredfileSha256string | nullrequiredcurrentbooleanrequiredFalse when a newer version needs a new acknowledgement.
viewedbooleanrequiredcreatedAtstringrequireddeletedAtstring | nullrequiredcanManagebooleanrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required - 404
not_found - 413
file_too_large - 415
unsupported_file_type
GET/api/v1/documents/acknowledgements
Outstanding and completed acknowledgements (`format=csv` to download)
Parameters
| Name | In | Type | Required |
|---|---|---|---|
status | query | enum | no |
documentId | query | string (uuid) | no |
employeeId | query | string (uuid) | no |
format | query | enum | no |
Responses
200 Success. object
itemsarray of objectrequiredidstring (uuid)requireddocumentIdstring (uuid)requireddocumentTitlestringrequiredemployeeIdstring (uuid)requiredemployeeNamestringrequiredemployeeNumberstringrequiredversionintegerrequiredmin -9007199254740991
requestedAtstringrequiredacknowledgedAtstring | nullrequiredfileSha256string | nullrequiredipstring | nullrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required
GET/api/v1/documents/categories
Document categories with their access flags
Responses
200 Success. object
itemsarray of objectrequiredidstring (uuid)requiredsystemKeystring | nullrequirednamestringrequiredsensitivityenumrequiredone of "normal", "medical"
employeeVisiblebooleanrequiredmanagerVisiblebooleanrequiredpayrollVisiblebooleanrequiredemployeeUploadablebooleanrequiredexpiryRequiredbooleanrequiredauditViewsbooleanrequiredretentionMonthsAfterExitinteger or nullrequiredmin -9007199254740991
positionintegerrequiredmin -9007199254740991
documentCountintegerrequiredmin -9007199254740991
- 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required
POST/api/v1/documents/categories
Add a document category
Request body
application/json, object, required
namestringrequiredmin length 1 · max length 60
sensitivityenumone of "normal", "medical" · default "normal"
employeeVisiblebooleandefault false
managerVisiblebooleandefault false
payrollVisiblebooleandefault false
employeeUploadablebooleandefault false
expiryRequiredbooleandefault false
auditViewsbooleandefault false
retentionMonthsAfterExitinteger or nullmin 0 · max 1200
Responses
201 Success. object
idstring (uuid)requiredsystemKeystring | nullrequirednamestringrequiredsensitivityenumrequiredone of "normal", "medical"
employeeVisiblebooleanrequiredmanagerVisiblebooleanrequiredpayrollVisiblebooleanrequiredemployeeUploadablebooleanrequiredexpiryRequiredbooleanrequiredauditViewsbooleanrequiredretentionMonthsAfterExitinteger or nullrequiredmin -9007199254740991
positionintegerrequiredmin -9007199254740991
documentCountintegerrequiredmin -9007199254740991
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required - 409
conflict
PATCH/api/v1/documents/categories/{id}
Change a category (medical categories can't be visible to managers)
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Request body
application/json, object, required
namestringmin length 1 · max length 60
sensitivityenumone of "normal", "medical"
employeeVisiblebooleanmanagerVisiblebooleanpayrollVisiblebooleanemployeeUploadablebooleanexpiryRequiredbooleanauditViewsbooleanretentionMonthsAfterExitinteger or nullmin 0 · max 1200
Responses
200 Success. object
idstring (uuid)requiredsystemKeystring | nullrequirednamestringrequiredsensitivityenumrequiredone of "normal", "medical"
employeeVisiblebooleanrequiredmanagerVisiblebooleanrequiredpayrollVisiblebooleanrequiredemployeeUploadablebooleanrequiredexpiryRequiredbooleanrequiredauditViewsbooleanrequiredretentionMonthsAfterExitinteger or nullrequiredmin -9007199254740991
positionintegerrequiredmin -9007199254740991
documentCountintegerrequiredmin -9007199254740991
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required
DELETE/api/v1/documents/categories/{id}
Delete an empty category
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Responses
204 No content.
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required - 409
in_use
GET/api/v1/documents/fields
The merge fields a letter template may use
Responses
200 Success. object
itemsarray of objectrequiredidstringrequiredlabelstringrequiredgroupstringrequiredsensitivitystringwherestringrequiredperDocumentboolean
- 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required
POST/api/v1/documents/generate
Generate a letter from a template for an employee (or preview it with `dryRun`)
Every merge field is resolved as at `asAt`. Missing values block generation (422 `missing_fields`, with where to fill each). Templates with salary fields need salary read for the employee (403 otherwise).
Request body
application/json, object, required
templateIdstring (uuid)requiredemployeeIdstring (uuid)requiredasAtstringtitlestringmin length 1 · max length 120
signatoryNamestringmin length 1 · max length 120
overridesobjectdefault {}
requestAcknowledgementbooleandefault false
dryRunbooleandefault false
Responses
200 Success. object
documentIdstring (uuid) or nullrequiredmissingarray of objectrequiredidstringrequiredlabelstringrequiredwherestringrequired
valuesobjectrequiredblocksarray of objectrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required - 404
not_found - 422
missing_fields
GET/api/v1/documents/requests
My letter requests
Responses
200 Success. object
itemsarray of objectrequiredidstring (uuid)requiredkindenumrequiredone of "offer", "ket", "confirmation", "promotion", "salary_adjustment", "resignation_acceptance", "employment_certificate", "custom"
purposestring | nullrequiredstatusenumrequiredone of "pending", "approved", "rejected", "withdrawn"
documentIdstring (uuid) or nullrequiredcreatedAtstringrequired
- 401
session_expired,session_revoked,unauthenticated - 403
mfa_enrolment_required
POST/api/v1/documents/requests
Ask HR for an employment letter; on approval it is generated and filed in your documents
Request body
application/json, object, required
kind"employment_certificate"requiredpurposestringrequiredmin length 1 · max length 200
Responses
201 Success. object
idstring (uuid)requiredstatus"pending"required
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,mfa_enrolment_required
GET/api/v1/documents/retention
Documents flagged for a retention review (nothing is deleted without a decision)
Responses
200 Success. object
itemsarray of objectrequiredidstring (uuid)requireddocumentIdstring (uuid)requireddocumentTitlestringrequiredcategorystringrequiredemployeeIdstring (uuid)requiredemployeeNamestringrequiredreasonstringrequiredreviewFromstringrequiredflaggedAtstringrequired
- 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required
POST/api/v1/documents/retention/{id}/resolve
Keep a flagged document for longer, or delete it (soft; an owner can then purge it)
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Request body
application/json, object | object, required
Responses
204 No content.
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required - 409
already_decided
GET/api/v1/documents/templates
Letter templates
Responses
200 Success. object
itemsarray of objectrequiredidstring (uuid)requiredkindenumrequiredone of "offer", "ket", "confirmation", "promotion", "salary_adjustment", "resignation_acceptance", "employment_certificate", "custom"
namestringrequiredbodyMdstringrequiredversionintegerrequiredmin -9007199254740991
activebooleanrequiredtargetCategoryIdstring (uuid)requiredfieldsarray of stringrequiredusesSalarybooleanrequiredupdatedAtstringrequired
- 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required
POST/api/v1/documents/templates
Create a letter template
Request body
application/json, object, required
kindenumrequiredone of "offer", "ket", "confirmation", "promotion", "salary_adjustment", "resignation_acceptance", "employment_certificate", "custom"
namestringrequiredmin length 1 · max length 80
bodyMdstringrequiredmax length 50000
targetCategoryIdstring (uuid)activebooleandefault true
Responses
201 Success. object
idstring (uuid)requiredkindenumrequiredone of "offer", "ket", "confirmation", "promotion", "salary_adjustment", "resignation_acceptance", "employment_certificate", "custom"
namestringrequiredbodyMdstringrequiredversionintegerrequiredmin -9007199254740991
activebooleanrequiredtargetCategoryIdstring (uuid)requiredfieldsarray of stringrequiredusesSalarybooleanrequiredupdatedAtstringrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required - 409
conflict
PUT/api/v1/documents/templates/{id}
Update a letter template (a new version)
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Request body
application/json, object, required
kindenumone of "offer", "ket", "confirmation", "promotion", "salary_adjustment", "resignation_acceptance", "employment_certificate", "custom"
namestringmin length 1 · max length 80
bodyMdstringmax length 50000
targetCategoryIdstring (uuid)activeboolean
Responses
200 Success. object
idstring (uuid)requiredkindenumrequiredone of "offer", "ket", "confirmation", "promotion", "salary_adjustment", "resignation_acceptance", "employment_certificate", "custom"
namestringrequiredbodyMdstringrequiredversionintegerrequiredmin -9007199254740991
activebooleanrequiredtargetCategoryIdstring (uuid)requiredfieldsarray of stringrequiredusesSalarybooleanrequiredupdatedAtstringrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required
POST/api/v1/documents/templates/check
Check a template body without saving: unknown fields, disallowed Markdown, KET items
Request body
application/json, object, required
kindenumrequiredone of "offer", "ket", "confirmation", "promotion", "salary_adjustment", "resignation_acceptance", "employment_certificate", "custom"
bodyMdstringrequiredmax length 50000
Responses
200 Success. object
issuesarray of objectrequiredlineintegerrequiredmin -9007199254740991
messagestringrequired
fieldsarray of stringrequiredblocksarray of objectrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required
POST/api/v1/documents/upload
Upload a document for an employee (raw bytes in the body; PDF, JPEG, PNG, WebP, DOCX or XLSX, at most 20 MB)
The file type is detected from its content. DOCX and XLSX must be valid OOXML packages; macro-enabled files are refused. Employees may upload only to their own employee-uploadable categories.
Parameters
| Name | In | Type | Required |
|---|---|---|---|
employeeId | query | string (uuid) | yes |
categoryId | query | string (uuid) | yes |
title | query | string | yes |
expiresOn | query | string | no |
notes | query | string | no |
fileName | query | string | no |
Responses
201 Success. object
idstring (uuid)requiredemployeeIdstring (uuid)requiredemployeeNamestringrequiredemployeeNumberstringrequiredcategoryobjectrequiredidstring (uuid)requirednamestringrequiredsensitivityenumrequiredone of "normal", "medical"
titlestringrequirednotesstring | nullrequiredexpiresOnstring | nullrequiredexpiryenum or nullrequiredone of "valid", "expiring", "expired"
sourceenumrequiredone of "upload", "generated"
currentobject or nullrequiredidstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
previousVersionsarray of objectrequiredSuperseded versions (HR only).
idstring (uuid)requiredversionintegerrequiredmin -9007199254740991
fileNamestring | nullrequiredmimestring | nullrequiredsizeBytesinteger or nullrequiredmin -9007199254740991
sha256stringrequiredexpiresOnstring | nullrequiredsourceenumrequiredone of "upload", "generated"
templateIdstring (uuid) or nullrequiredtemplateVersioninteger or nullrequiredmin -9007199254740991
asAtstring | nullrequiredcreatedAtstringrequiredsupersededbooleanrequired
acknowledgementobject or nullrequiredidstring (uuid)requiredstatusenumrequiredone of "requested", "acknowledged"
requestedAtstringrequiredacknowledgedAtstring | nullrequiredfileSha256string | nullrequiredcurrentbooleanrequiredFalse when a newer version needs a new acknowledgement.
viewedbooleanrequiredcreatedAtstringrequireddeletedAtstring | nullrequiredcanManagebooleanrequired
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,forbidden,mfa_enrolment_required - 404
not_found - 413
file_too_large - 415
unsupported_file_type