Employment Hero LogoEmployment Hero

Policy

This endpoint retrieves a list of all policies for a specific organisation.

GET
https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies

Path Parameters

organisation_iduuidrequired

The ID of the organisation to retrieve

Query Parameters

page_indexnumber

Current page index

Default1
Min1
item_per_pagenumber

Number of items per page

Default20
Max100

Response Body

A hash with a data property that contains an array of up to the limit of policy records. Each entry in the array is a separate policy object. If there is no more policies, the resulting array will be empty.

dataobject
itemsobject[]
iduuid

The policy id

namestring

The name of policy

inductionboolean

Determine policy is mandatory or not

created_atdatetime

Time at which the policy was created

page_indexnumber

Current page index

Default1
Min1
item_per_pagenumber

Number of items per page

Default20
Max100
total_itemsnumber

Total items

total_pagesnumber

Total pages

Example

curl -X GET \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

{  "data": {    "items": [      {        "id": "1d25a390-7b0e-0135-0209-061f87a4b1b6",        "name": "Wonderful Company - Full-Disk Encryption Policy",        "induction": true,        "created_at": "2017-09-14T10:03:51+10:00"      },      {        "id": "91216a90-f3cb-0133-ec72-4a8f8c38fb42",        "name": "Wonderful Company - Working From Home Agreement",        "induction": false,        "created_at": "2016-05-04T12:12:25+10:00"      }    ],    "page_index": 1,    "item_per_page": 20,    "total_items": 2,    "total_pages": 1  }}

Retrieve the full details of a single policy by its UUID. The response includes sharing configuration, responsible owner, and timestamps.

GET
https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/:policy_id

Path Parameters

organisation_iduuidrequired

The ID of the organisation.

policy_iduuidrequired

The ID of the policy to retrieve.

Response Body

The full policy object for the requested policy ID.

dataobject
iduuid

Unique identifier of the policy.

namestring

Name of the policy.

statusenum<string>

Publication status of the policy.

inductionboolean

Whether acknowledgement of this policy is mandatory for assigned members.

archivedboolean

Whether the policy is archived.

uploaded_policyboolean

Whether the policy content is an uploaded document.

renewal_typestring

How often members must acknowledge the policy: one_off (once) or yearly (every year).

due_date_settingstring

Due date configuration for this policy.

shared_toobject

Full sharing configuration — which member types, members, teams, locations, and employing entities this policy is assigned to.

responsible_ownerobject

Member responsible for maintaining this policy.

created_atdatetime

ISO 8601 timestamp when the policy was created.

updated_atdatetime

ISO 8601 timestamp when the policy was last updated.

Example

curl -X GET \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/:policy_id" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

{  "data": {    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "name": "Full-Disk Encryption Policy",    "status": "Published",    "induction": true,    "archived": false,    "uploaded_policy": true,    "renewal_type": "yearly",    "due_date_setting": null,    "shared_to": {      "all_employees": true,      "all_contractors": false,      "all_volunteers": false,      "member_ids": [],      "group_ids": [],      "location_ids": [],      "employing_entity_ids": []    },    "responsible_owner": {      "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",      "name": "Jane Smith"    },    "created_at": "2025-01-15T09:00:00.000Z",    "updated_at": "2025-06-01T14:30:00.000Z"  }}

Upload a file and create a new policy for the organisation in Draft status. The policy is not assigned to any members until you call the Share endpoint.

POST
https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies

Path Parameters

organisation_iduuidrequired

The ID of the organisation.

Request Body

namestringrequired

Name of the policy. Must be unique within the organisation.

filefilerequired

Policy document to upload. Accepted formats: .pdf, .doc, .docx, .png. Maximum size: 10 MB.

inductionboolean

Whether acknowledgement is mandatory for assigned members. Defaults to false.

Response Body

The newly created policy object in Draft status with no members assigned yet.

dataobject
iduuid

Unique identifier of the policy.

namestring

Name of the policy.

statusenum<string>

Publication status of the policy.

inductionboolean

Whether acknowledgement of this policy is mandatory for assigned members.

archivedboolean

Whether the policy is archived.

uploaded_policyboolean

Whether the policy content is an uploaded document.

renewal_typestring

How often members must acknowledge the policy: one_off (once) or yearly (every year).

due_date_settingstring

Due date configuration for this policy.

shared_toobject

Full sharing configuration — which member types, members, teams, locations, and employing entities this policy is assigned to.

responsible_ownerobject

Member responsible for maintaining this policy.

created_atdatetime

ISO 8601 timestamp when the policy was created.

updated_atdatetime

ISO 8601 timestamp when the policy was last updated.

Example

curl -X POST \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -F "name=Remote Work Policy" \  -F "file=@(binary file)" \  -F "induction=false"

Response

{  "data": {    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "name": "Remote Work Policy",    "status": "Draft",    "induction": false,    "archived": false,    "uploaded_policy": true,    "renewal_type": "one_off",    "due_date_setting": null,    "shared_to": {      "all_employees": false,      "all_contractors": false,      "all_volunteers": false,      "member_ids": [],      "group_ids": [],      "location_ids": [],      "employing_entity_ids": []    },    "responsible_owner": null,    "created_at": "2025-06-01T14:30:00.000Z",    "updated_at": "2025-06-01T14:30:00.000Z"  }}

Share and publish a policy with selected members, teams, work locations, employing entities, or all workers of a given employment type. Sharing a policy publishes it — the policy status changes from Draft to Published. At least one sharing option must be provided.

POST
https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/:policy_id/share

Path Parameters

organisation_iduuidrequired

The ID of the organisation.

policy_iduuidrequired

The ID of the policy to share.

Request Body

all_employeesboolean

Share with all employees. Defaults to false.

all_contractorsboolean

Share with all contractors. Defaults to false.

all_volunteersboolean

Share with all volunteers. Defaults to false.

member_idsuuid[]

UUIDs of specific members to share the policy with.

group_idsuuid[]

UUIDs of groups to share the policy with.

location_idsuuid[]

UUIDs of work locations to share the policy with.

employing_entity_idsuuid[]

UUIDs of employing entities to share the policy with.

Response Body

The updated policy object. Status is set to Published after sharing. Newly assigned members receive a notification.

dataobject
iduuid

Unique identifier of the policy.

namestring

Name of the policy.

statusenum<string>

Publication status of the policy.

inductionboolean

Whether acknowledgement of this policy is mandatory for assigned members.

archivedboolean

Whether the policy is archived.

uploaded_policyboolean

Whether the policy content is an uploaded document.

renewal_typestring

How often members must acknowledge the policy: one_off (once) or yearly (every year).

due_date_settingstring

Due date configuration for this policy.

shared_toobject

Full sharing configuration — which member types, members, teams, locations, and employing entities this policy is assigned to.

responsible_ownerobject

Member responsible for maintaining this policy.

created_atdatetime

ISO 8601 timestamp when the policy was created.

updated_atdatetime

ISO 8601 timestamp when the policy was last updated.

Example

curl -X POST \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/:policy_id/share" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -H "Content-Type: application/json" \  -d '{    "all_employees": true,    "all_contractors": false,    "all_volunteers": false,    "member_ids": [],    "group_ids": [],    "location_ids": [],    "employing_entity_ids": []  }'

Response

{  "data": {    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "name": "Full-Disk Encryption Policy",    "status": "Published",    "induction": true,    "archived": false,    "uploaded_policy": true,    "renewal_type": "yearly",    "due_date_setting": null,    "shared_to": {      "all_employees": true,      "all_contractors": false,      "all_volunteers": false,      "member_ids": [],      "group_ids": [],      "location_ids": [],      "employing_entity_ids": []    },    "responsible_owner": {      "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",      "name": "Jane Smith"    },    "created_at": "2025-01-15T09:00:00.000Z",    "updated_at": "2025-06-01T14:30:00.000Z"  }}

Archive a policy. Archiving does not change the publication status — a Published policy remains Published. This operation is idempotent: archiving an already-archived policy returns 200 with no error.

POST
https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/:policy_id/archive

Path Parameters

organisation_iduuidrequired

The ID of the organisation.

policy_iduuidrequired

The ID of the policy to archive.

Response Body

The updated policy object with archived set to true. Idempotent — archiving an already-archived policy returns 200 with no error.

dataobject
iduuid

Unique identifier of the policy.

namestring

Name of the policy.

statusenum<string>

Publication status of the policy.

inductionboolean

Whether acknowledgement of this policy is mandatory for assigned members.

archivedboolean

Whether the policy is archived.

uploaded_policyboolean

Whether the policy content is an uploaded document.

renewal_typestring

How often members must acknowledge the policy: one_off (once) or yearly (every year).

due_date_settingstring

Due date configuration for this policy.

shared_toobject

Full sharing configuration — which member types, members, teams, locations, and employing entities this policy is assigned to.

responsible_ownerobject

Member responsible for maintaining this policy.

created_atdatetime

ISO 8601 timestamp when the policy was created.

updated_atdatetime

ISO 8601 timestamp when the policy was last updated.

Example

curl -X POST \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/:policy_id/archive" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

{  "data": {    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "name": "Full-Disk Encryption Policy",    "status": "Published",    "induction": true,    "archived": true,    "uploaded_policy": true,    "renewal_type": "yearly",    "due_date_setting": null,    "shared_to": {      "all_employees": true,      "all_contractors": false,      "all_volunteers": false,      "member_ids": [],      "group_ids": [],      "location_ids": [],      "employing_entity_ids": []    },    "responsible_owner": {      "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",      "name": "Jane Smith"    },    "created_at": "2025-01-15T09:00:00.000Z",    "updated_at": "2025-06-01T14:30:00.000Z"  }}

Restore an archived policy. Returns 422 if the policy is not currently archived.

POST
https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/:policy_id/unarchive

Path Parameters

organisation_iduuidrequired

The ID of the organisation.

policy_iduuidrequired

The ID of the policy to restore.

Response Body

The updated policy object with archived set to false.

dataobject
iduuid

Unique identifier of the policy.

namestring

Name of the policy.

statusenum<string>

Publication status of the policy.

inductionboolean

Whether acknowledgement of this policy is mandatory for assigned members.

archivedboolean

Whether the policy is archived.

uploaded_policyboolean

Whether the policy content is an uploaded document.

renewal_typestring

How often members must acknowledge the policy: one_off (once) or yearly (every year).

due_date_settingstring

Due date configuration for this policy.

shared_toobject

Full sharing configuration — which member types, members, teams, locations, and employing entities this policy is assigned to.

responsible_ownerobject

Member responsible for maintaining this policy.

created_atdatetime

ISO 8601 timestamp when the policy was created.

updated_atdatetime

ISO 8601 timestamp when the policy was last updated.

Example

curl -X POST \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/:policy_id/unarchive" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

{  "data": {    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "name": "Full-Disk Encryption Policy",    "status": "Published",    "induction": true,    "archived": false,    "uploaded_policy": true,    "renewal_type": "yearly",    "due_date_setting": null,    "shared_to": {      "all_employees": true,      "all_contractors": false,      "all_volunteers": false,      "member_ids": [],      "group_ids": [],      "location_ids": [],      "employing_entity_ids": []    },    "responsible_owner": {      "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",      "name": "Jane Smith"    },    "created_at": "2025-01-15T09:00:00.000Z",    "updated_at": "2025-06-01T14:30:00.000Z"  }}

Permanently delete a policy. Both Draft and Published policies can be deleted. Returns 422 if any member has acknowledged the policy.

DELETE
https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/:policy_id

Path Parameters

organisation_iduuidrequired

The ID of the organisation.

policy_iduuidrequired

The ID of the policy to permanently delete.

Response Body

Returns HTTP 204 No Content on success. The policy is permanently deleted and cannot be recovered.

Example

curl -X DELETE \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/:policy_id" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

This endpoint does not return a response body.

Query the policy compliance report across the organisation. Returns a paginated list of member–policy pairs with their acknowledgement status. Supports filtering by status, specific policies, members, groups, or work locations, passed as query parameters (for example group_ids[]=<uuid>).

GET
https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/acknowledgements

Path Parameters

organisation_iduuidrequired

The ID of the organisation.

Query Parameters

page_indexnumber

Current page index

Default1
Min1
item_per_pagenumber

Number of items per page

Default20
Max100
statusenum<string>

Filter by acknowledgement status. Omit to return all three statuses.

policy_idsuuid[]

Limit results to specific policy UUIDs. Maximum 30.

member_idsuuid[]

Limit results to specific member UUIDs. Maximum 30.

group_idsuuid[]

Filter by group UUIDs. Maximum 30.

location_idsuuid[]

Filter by work location UUIDs. Maximum 30.

Response Body

A paginated list of member–policy acknowledgement records matching the supplied filters.

dataobject
itemsobject[]
policy_iduuid

UUID of the policy.

policy_namestring

Name of the policy.

member_iduuid

UUID of the member.

member_namestring

Display name of the member.

statusenum<string>

Acknowledgement status of this member–policy pair.

acknowledged_atdatetime

ISO 8601 timestamp when the member acknowledged the policy.

due_datestring

Due date for acknowledgement in YYYY-MM-DD format.

page_indexnumber

Current page index

Default1
Min1
item_per_pagenumber

Number of items per page

Default20
Max100
total_itemsnumber

Total items

total_pagesnumber

Total pages

Example

curl -X GET \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/acknowledgements" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

{  "data": {    "items": [      {        "policy_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",        "policy_name": "Full-Disk Encryption Policy",        "member_id": "d4e5f6a7-b8c9-0123-defa-234567890123",        "member_name": "Alex Johnson",        "status": "acknowledged",        "acknowledged_at": "2025-05-20T08:45:00.000Z",        "due_date": "2025-06-01"      }    ],    "page_index": 1,    "item_per_page": 20,    "total_items": 1,    "total_pages": 1  }}

Sends acknowledgement reminder emails for specific member–policy pairs. Each pair comes back with a status:

  • queued: a reminder email was sent to the member.
  • skipped: no email was sent, and reason says why:
    • not_assigned: the policy isn't assigned to the member.
    • already_acknowledged: the member has already acknowledged the policy.
    • recently_reminded: the member was already reminded about this policy in the last 24 hours.
  • failed: the reminder couldn't be queued for this pair, and reason is internal_error. Other pairs in the request are still processed, and it's safe to retry the failed pair.
POST
https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/remind

Path Parameters

organisation_iduuidrequired

The ID of the organisation.

Request Body

itemsobject[]required

One or more policy–member pairs to send reminders for. Maximum 100.

Response Body

Returns HTTP 202 Accepted with one result per policy–member pair, showing whether a reminder email was queued, skipped or failed and, if skipped, why.

dataobject
itemsobject[]

One result per unique policy–member pair, in request order. A pair sent more than once in the request is returned once.

Example

curl -X POST \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/remind" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -H "Content-Type: application/json" \  -d '{    "items": [      {        "policy_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",        "member_id": "d4e5f6a7-b8c9-0123-defa-234567890123"      }    ]  }'

Response

{  "data": {    "items": [      {        "policy_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",        "member_id": "d4e5f6a7-b8c9-0123-defa-234567890123",        "status": "queued",        "reason": null      },      {        "policy_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",        "member_id": "e5f6a7b8-c9d0-1234-efab-345678901234",        "status": "skipped",        "reason": "already_acknowledged"      }    ]  }}

Queue acknowledgement reminder emails for all outstanding or overdue members across the organisation. Optionally filter to specific policies or a specific acknowledgement state. Returns immediately — reminders are processed asynchronously in the background. Members who were already reminded about a policy in the last 24 hours, through this endpoint or Remind Policy, aren't emailed again for that policy.

POST
https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/remind_all

Path Parameters

organisation_iduuidrequired

The ID of the organisation.

Request Body

policy_idsuuid[]

Limit reminders to specific policy UUIDs. Omit to include all active policies. Maximum 100.

statusenum<string>

Filter members by acknowledgement state. Omit to remind both outstanding and overdue members.

Response Body

Returns HTTP 202 Accepted on success. No response body is included. Reminder emails are sent to the matching outstanding and overdue members shortly afterwards.

Example

curl -X POST \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/policies/remind_all" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -H "Content-Type: application/json" \  -d '{    "policy_ids": [      "a1b2c3d4-e5f6-7890-abcd-ef1234567890"    ],    "status": "outstanding"  }'

Response

This endpoint does not return a response body.