Certificate
A Certificate represents a document proving that a resource (person, equipment, work environment, substance, role, work group, office, PPE, or supplier) has fulfilled a compliance requirement.
Certificates are the proof of compliance: each certificate documents that a resource has completed a requirement (training course, medical examination, maintenance, etc.).
Use this API to:
- Find certificates for a person (filter by
resource_idwith theperson_id) - Find certificates by requirement type (filter by
action_type) - Create a new certificate to document the completion of a requirement
Creating a certificate does not automatically update the compliance schedule. To update the compliance status, you must create a CertificateAction that links the certificate to the specific action. Without the CertificateAction, the certificate exists but has no effect on the compliance schedule.
- Version
- 2.0.0
- OpenAPI version
- 3.0.0
Authentication
Section titled “ Authentication ”OAuth2
Section titled “OAuth2 ”Security scheme type: oauth2
Flow type: password
Token URL: https://auth.4hse.com/realms/4hse/protocol/openid-connect/token
AccessToken
Section titled “AccessToken ”Security scheme type: apiKey
Query parameter name: access-token
Operations
Section titled “Operations” POST /v2/certificate/index
Returns a paginated list of certificates.
Most useful filters:
resource_id(person_id): all certificates for a personaction_type: certificates by requirement type (e.g.TRAININGfor training)tenant_id(project_id): all certificates in a company
The response includes the name and type of the resource the certificate is issued to, and the project name.
Authorizations
Section titled “Authorizations ”Request Body
Section titled “Request Body ”Parameters for searching certificates
object
object
Unique identifier of the certificate.
Issue date of the certificate.
Expiration date. May be inherited from the linked action’s validity settings.
Descriptive name of the certificate.
Free-text notes.
Type of requirement this certificate relates to.
The ID of the resource this certificate is issued to.
The type of the resource this certificate is issued to.
Display name of the resource this certificate is issued to.
Additional structured data. Content varies by action_type.
object
Whether the certificate has an active warning.
The project (company) this certificate belongs to.
The office associated with this certificate, derived from the linked action.
Type of the associated office.
Unit for the certificate validity period.
Number of validity units.
Name of the project (company).
Field to sort by. Prefix with minus for descending order (e.g. “-date_expire”).
Example
{ "filter": { "resource_id": "e3a1f5d2-8c4b-4e7a-9f6d-2b1c3d4e5f6a", "action_type": "TRAINING" }, "per-page": 20, "page": 1, "sort": "-date_expire"}Responses
Section titled “ Responses ”List of certificates
object
Unique identifier of the certificate.
Issue date of the certificate.
Expiration date. May be inherited from the linked action’s validity settings.
Descriptive name of the certificate.
Free-text notes.
Type of requirement this certificate relates to.
The ID of the resource this certificate is issued to.
The type of the resource this certificate is issued to.
Display name of the resource this certificate is issued to.
Additional structured data. Content varies by action_type.
object
Whether the certificate has an active warning.
The project (company) this certificate belongs to.
The office associated with this certificate, derived from the linked action.
Type of the associated office.
Unit for the certificate validity period.
Number of validity units.
Name of the project (company).
Example
[ { "certificate_id": "f6a7b8c9-d0e1-2f3a-4b5c-6d7e8f9a0b1c", "date_release": "2024-01-15", "date_expire": "2029-01-15", "name": "Fire Safety Training Certificate", "action_type": "TRAINING", "resource_id": "e3a1f5d2-8c4b-4e7a-9f6d-2b1c3d4e5f6a", "resource_type": "PERSON", "resource_name": "Smith John", "warning": 0, "tenant_id": "b5a7d602-3fc9-4e2a-9d1a-6e5b4c8f7a01", "subtenant_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "validity_unit": "YEAR", "validity": 5, "project_name": "Acme Construction Ltd" }]Headers
Section titled “Headers ”Current page
Total number of pages
Number of items per page
Total number of items
GET /v2/certificate/view/{id}
Retrieves a single certificate by its ID.
Authorizations
Section titled “Authorizations ”Path Parameters
Section titled “Path Parameters ”The certificate_id to retrieve.
Responses
Section titled “ Responses ”Certificate found
object
Unique identifier of the certificate.
Issue date of the certificate.
Expiration date. May be inherited from the linked action’s validity settings.
Descriptive name of the certificate.
Free-text notes.
Type of requirement this certificate relates to.
The ID of the resource this certificate is issued to.
The type of the resource this certificate is issued to.
Display name of the resource this certificate is issued to.
Additional structured data. Content varies by action_type.
object
Whether the certificate has an active warning.
The project (company) this certificate belongs to.
The office associated with this certificate, derived from the linked action.
Type of the associated office.
Unit for the certificate validity period.
Number of validity units.
Name of the project (company).
Example
{ "certificate_id": "f6a7b8c9-d0e1-2f3a-4b5c-6d7e8f9a0b1c", "date_release": "2024-01-15", "date_expire": "2029-01-15", "name": "Fire Safety Training Certificate", "action_type": "TRAINING", "resource_id": "e3a1f5d2-8c4b-4e7a-9f6d-2b1c3d4e5f6a", "resource_type": "PERSON", "resource_name": "Smith John", "warning": 0, "tenant_id": "b5a7d602-3fc9-4e2a-9d1a-6e5b4c8f7a01", "subtenant_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "validity_unit": "YEAR", "validity": 5, "project_name": "Acme Construction Ltd"}Certificate not found
create
Section titled “create” POST /v2/certificate/create
Creates a new certificate.
Requires date_release, name, action_type, resource_id, and tenant_id (project_id).
The certificate_id is auto-generated if not provided.
The resource_id is the ID of the resource the certificate is issued to.
What to pass depends on the action_type:
- For
TRAINING,HEALTH,PER: pass theperson_id - For
MAINTENANCE: pass theoffice_equipment_id,office_work_environment_id, or other resource ID - For
CHECK: any resource type
After creating the certificate, create a CertificateAction to link it to the specific action. Without this link, the certificate exists but has no effect on the compliance schedule.
To attach a file (e.g. the PDF of the certificate), upload the file via the Attachment API and then create an EntityAttachment to link it to the certificate.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”Certificate object to be created
object
Unique identifier of the certificate. Auto-generated if not provided on creation.
Issue date of the certificate.
Expiration date of the certificate. If not specified, the certificate does not expire. When linked to an action via CertificateAction, the expiration can be inherited from the action’s validity settings.
Descriptive name of the certificate.
Free-text notes.
The type of requirement this certificate relates to:
TRAINING: training courseHEALTH: medical surveillancePER: personal protective equipmentCHECK: check procedureMAINTENANCE: maintenance
The ID of the resource this certificate is issued to. What to pass depends on the action_type:
- For
TRAINING,HEALTH,PER: pass theperson_id - For
EQUIPMENT: pass theoffice_equipment_id - For
WORK_ENVIRONMENT: pass theoffice_work_environment_id - For
SUBSTANCE: pass theoffice_substance_id - For
ROLE: pass theoffice_role_id - For
WORK_GROUP: pass thework_group_id - For
OFFICE: pass theoffice_id - For
PPE: pass thematerial_item_id - For
UNIT: pass theunit_id(supplier) If unknown, search via the corresponding API (e.g. Person index for people).
Additional structured data in JSON format. The content varies depending on the action_type of the certificate (e.g. medical examination results for HEALTH, course details for TRAINING, etc.).
object
1: the certificate has an active warning0: no warning
The project (company) this certificate belongs to. Pass the project_id obtained from the Project API.
Unit for the certificate validity period. Used together with validity.
Number of validity units. Together with validity_unit, defines the certificate validity period.
Example
{ "date_release": "2024-01-15", "date_expire": "2029-01-15", "name": "Fire Safety Training Certificate", "action_type": "TRAINING", "resource_id": "e3a1f5d2-8c4b-4e7a-9f6d-2b1c3d4e5f6a", "tenant_id": "b5a7d602-3fc9-4e2a-9d1a-6e5b4c8f7a01", "validity_unit": "YEAR", "validity": 5}Responses
Section titled “ Responses ”Certificate created successfully
object
Unique identifier of the certificate. Auto-generated if not provided on creation.
Issue date of the certificate.
Expiration date of the certificate. If not specified, the certificate does not expire. When linked to an action via CertificateAction, the expiration can be inherited from the action’s validity settings.
Descriptive name of the certificate.
Free-text notes.
The type of requirement this certificate relates to:
TRAINING: training courseHEALTH: medical surveillancePER: personal protective equipmentCHECK: check procedureMAINTENANCE: maintenance
The ID of the resource this certificate is issued to. What to pass depends on the action_type:
- For
TRAINING,HEALTH,PER: pass theperson_id - For
EQUIPMENT: pass theoffice_equipment_id - For
WORK_ENVIRONMENT: pass theoffice_work_environment_id - For
SUBSTANCE: pass theoffice_substance_id - For
ROLE: pass theoffice_role_id - For
WORK_GROUP: pass thework_group_id - For
OFFICE: pass theoffice_id - For
PPE: pass thematerial_item_id - For
UNIT: pass theunit_id(supplier) If unknown, search via the corresponding API (e.g. Person index for people).
Additional structured data in JSON format. The content varies depending on the action_type of the certificate (e.g. medical examination results for HEALTH, course details for TRAINING, etc.).
object
1: the certificate has an active warning0: no warning
The project (company) this certificate belongs to. Pass the project_id obtained from the Project API.
Unit for the certificate validity period. Used together with validity.
Number of validity units. Together with validity_unit, defines the certificate validity period.
Example
{ "certificate_id": "f6a7b8c9-d0e1-2f3a-4b5c-6d7e8f9a0b1c", "date_release": "2024-01-15", "date_expire": "2029-01-15", "name": "Fire Safety Training Certificate", "action_type": "TRAINING", "resource_id": "e3a1f5d2-8c4b-4e7a-9f6d-2b1c3d4e5f6a", "tenant_id": "b5a7d602-3fc9-4e2a-9d1a-6e5b4c8f7a01", "validity_unit": "YEAR", "validity": 5}update
Section titled “update” PUT /v2/certificate/update/{id}
Updates an existing certificate.
Authorizations
Section titled “Authorizations ”Path Parameters
Section titled “Path Parameters ”The certificate_id to update.
Request Body required
Section titled “Request Body required ”Certificate fields to update
object
Unique identifier of the certificate. Auto-generated if not provided on creation.
Issue date of the certificate.
Expiration date of the certificate. If not specified, the certificate does not expire. When linked to an action via CertificateAction, the expiration can be inherited from the action’s validity settings.
Descriptive name of the certificate.
Free-text notes.
The type of requirement this certificate relates to:
TRAINING: training courseHEALTH: medical surveillancePER: personal protective equipmentCHECK: check procedureMAINTENANCE: maintenance
The ID of the resource this certificate is issued to. What to pass depends on the action_type:
- For
TRAINING,HEALTH,PER: pass theperson_id - For
EQUIPMENT: pass theoffice_equipment_id - For
WORK_ENVIRONMENT: pass theoffice_work_environment_id - For
SUBSTANCE: pass theoffice_substance_id - For
ROLE: pass theoffice_role_id - For
WORK_GROUP: pass thework_group_id - For
OFFICE: pass theoffice_id - For
PPE: pass thematerial_item_id - For
UNIT: pass theunit_id(supplier) If unknown, search via the corresponding API (e.g. Person index for people).
Additional structured data in JSON format. The content varies depending on the action_type of the certificate (e.g. medical examination results for HEALTH, course details for TRAINING, etc.).
object
1: the certificate has an active warning0: no warning
The project (company) this certificate belongs to. Pass the project_id obtained from the Project API.
Unit for the certificate validity period. Used together with validity.
Number of validity units. Together with validity_unit, defines the certificate validity period.
Example
{ "name": "Fire Safety Training Certificate - Renewed", "date_expire": "2030-01-15"}Responses
Section titled “ Responses ”Certificate updated successfully
object
Unique identifier of the certificate. Auto-generated if not provided on creation.
Issue date of the certificate.
Expiration date of the certificate. If not specified, the certificate does not expire. When linked to an action via CertificateAction, the expiration can be inherited from the action’s validity settings.
Descriptive name of the certificate.
Free-text notes.
The type of requirement this certificate relates to:
TRAINING: training courseHEALTH: medical surveillancePER: personal protective equipmentCHECK: check procedureMAINTENANCE: maintenance
The ID of the resource this certificate is issued to. What to pass depends on the action_type:
- For
TRAINING,HEALTH,PER: pass theperson_id - For
EQUIPMENT: pass theoffice_equipment_id - For
WORK_ENVIRONMENT: pass theoffice_work_environment_id - For
SUBSTANCE: pass theoffice_substance_id - For
ROLE: pass theoffice_role_id - For
WORK_GROUP: pass thework_group_id - For
OFFICE: pass theoffice_id - For
PPE: pass thematerial_item_id - For
UNIT: pass theunit_id(supplier) If unknown, search via the corresponding API (e.g. Person index for people).
Additional structured data in JSON format. The content varies depending on the action_type of the certificate (e.g. medical examination results for HEALTH, course details for TRAINING, etc.).
object
1: the certificate has an active warning0: no warning
The project (company) this certificate belongs to. Pass the project_id obtained from the Project API.
Unit for the certificate validity period. Used together with validity.
Number of validity units. Together with validity_unit, defines the certificate validity period.
Example
{ "certificate_id": "f6a7b8c9-d0e1-2f3a-4b5c-6d7e8f9a0b1c", "name": "Fire Safety Training Certificate - Renewed", "date_expire": "2030-01-15"}Certificate not found
delete
Section titled “delete” DELETE /v2/certificate/delete/{id}
Deletes a certificate.
If force=false (default), the response lists child entities (CertificateAction links, EntityAttachment links).
If force=true, the certificate and all related entities are deleted.
Authorizations
Section titled “Authorizations ”Path Parameters
Section titled “Path Parameters ”The certificate_id to delete.
Query Parameters
Section titled “Query Parameters ”If true, deletes the certificate and all child entities. If false, returns a preview of affected entities.
Responses
Section titled “ Responses ”Certificate deleted successfully
Preview of entities that would be deleted (returned when force=false)
Webhooks
Section titled “Webhooks”CERTIFICATE::CREATE
Section titled “CERTIFICATE::CREATE”Triggered when a new certificate is created.
Request Body
Section titled “Request Body ”The newly created certificate
object
Unique identifier of the certificate. Auto-generated if not provided on creation.
Issue date of the certificate.
Expiration date of the certificate. If not specified, the certificate does not expire. When linked to an action via CertificateAction, the expiration can be inherited from the action’s validity settings.
Descriptive name of the certificate.
Free-text notes.
The type of requirement this certificate relates to:
TRAINING: training courseHEALTH: medical surveillancePER: personal protective equipmentCHECK: check procedureMAINTENANCE: maintenance
The ID of the resource this certificate is issued to. What to pass depends on the action_type:
- For
TRAINING,HEALTH,PER: pass theperson_id - For
EQUIPMENT: pass theoffice_equipment_id - For
WORK_ENVIRONMENT: pass theoffice_work_environment_id - For
SUBSTANCE: pass theoffice_substance_id - For
ROLE: pass theoffice_role_id - For
WORK_GROUP: pass thework_group_id - For
OFFICE: pass theoffice_id - For
PPE: pass thematerial_item_id - For
UNIT: pass theunit_id(supplier) If unknown, search via the corresponding API (e.g. Person index for people).
Additional structured data in JSON format. The content varies depending on the action_type of the certificate (e.g. medical examination results for HEALTH, course details for TRAINING, etc.).
object
1: the certificate has an active warning0: no warning
The project (company) this certificate belongs to. Pass the project_id obtained from the Project API.
Unit for the certificate validity period. Used together with validity.
Number of validity units. Together with validity_unit, defines the certificate validity period.
Example
{ "certificate_id": "f6a7b8c9-d0e1-2f3a-4b5c-6d7e8f9a0b1c", "date_release": "2024-01-15", "date_expire": "2029-01-15", "name": "Fire Safety Training Certificate", "action_type": "TRAINING", "resource_id": "e3a1f5d2-8c4b-4e7a-9f6d-2b1c3d4e5f6a", "tenant_id": "b5a7d602-3fc9-4e2a-9d1a-6e5b4c8f7a01", "validity_unit": "YEAR", "validity": 5}Responses
Section titled “ Responses ”Acknowledgment of the webhook event
CERTIFICATE::UPDATE
Section titled “CERTIFICATE::UPDATE”Triggered when a certificate is updated. Provides the certificate ID and old/new values for each updated field.
Request Body
Section titled “Request Body ”Updated certificate with old and new values for changed fields
object
The certificate_id of the updated certificate.
Each key is an updated field name, with its old and new values.
object
object
Example
{ "entity_id": "f6a7b8c9-d0e1-2f3a-4b5c-6d7e8f9a0b1c", "updated_fields": { "date_expire": { "old": "2029-01-15", "new": "2030-01-15" } }}Responses
Section titled “ Responses ”Acknowledgment of the webhook event
CERTIFICATE::DELETE
Section titled “CERTIFICATE::DELETE”Triggered when a certificate is deleted.
Request Body
Section titled “Request Body ”The deleted certificate
object
Unique identifier of the certificate. Auto-generated if not provided on creation.
Issue date of the certificate.
Expiration date of the certificate. If not specified, the certificate does not expire. When linked to an action via CertificateAction, the expiration can be inherited from the action’s validity settings.
Descriptive name of the certificate.
Free-text notes.
The type of requirement this certificate relates to:
TRAINING: training courseHEALTH: medical surveillancePER: personal protective equipmentCHECK: check procedureMAINTENANCE: maintenance
The ID of the resource this certificate is issued to. What to pass depends on the action_type:
- For
TRAINING,HEALTH,PER: pass theperson_id - For
EQUIPMENT: pass theoffice_equipment_id - For
WORK_ENVIRONMENT: pass theoffice_work_environment_id - For
SUBSTANCE: pass theoffice_substance_id - For
ROLE: pass theoffice_role_id - For
WORK_GROUP: pass thework_group_id - For
OFFICE: pass theoffice_id - For
PPE: pass thematerial_item_id - For
UNIT: pass theunit_id(supplier) If unknown, search via the corresponding API (e.g. Person index for people).
Additional structured data in JSON format. The content varies depending on the action_type of the certificate (e.g. medical examination results for HEALTH, course details for TRAINING, etc.).
object
1: the certificate has an active warning0: no warning
The project (company) this certificate belongs to. Pass the project_id obtained from the Project API.
Unit for the certificate validity period. Used together with validity.
Number of validity units. Together with validity_unit, defines the certificate validity period.
Example
{ "certificate_id": "f6a7b8c9-d0e1-2f3a-4b5c-6d7e8f9a0b1c", "name": "Fire Safety Training Certificate", "action_type": "TRAINING", "resource_id": "e3a1f5d2-8c4b-4e7a-9f6d-2b1c3d4e5f6a", "tenant_id": "b5a7d602-3fc9-4e2a-9d1a-6e5b4c8f7a01"}Responses
Section titled “ Responses ”Acknowledgment of the webhook event