Skip to content

Organisation API

17 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/organisation/allowance-types

List recurring allowance types

Access
Permission org_structure:read

Responses

200 Success. object

  • itemsarray of objectrequired
    • idstringrequired
    • codestringrequired
    • namestringrequired
    • archivedbooleanrequired
  • 401 session_expired, session_revoked, unauthenticated
  • 403 forbidden, mfa_enrolment_required

POST/api/v1/organisation/allowance-types

Create an allowance type

Access
Permission compensation:create

Request body

application/json, object, required

  • codestringrequired

    min length 1 · max length 30

  • namestringrequired

    min length 1 · max length 80

Responses

201 Success. object

  • idstringrequired
  • codestringrequired
  • namestringrequired
  • archivedbooleanrequired
  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 csrf_rejected, forbidden, mfa_enrolment_required
  • 409 conflict

GET/api/v1/organisation/checklist-templates

List onboarding and offboarding checklist templates

Access
Permission employment:update

Responses

200 Success. object

  • itemsarray of objectrequired
    • idstringrequired
    • kindenumrequired

      one of "onboarding", "offboarding"

    • namestringrequired
    • isDefaultbooleanrequired
    • itemsarray of objectrequired
      • titlestringrequired
      • assigneeRoleenumrequired

        one of "hr_admin", "payroll_admin", "manager", "employee"

      • dueOffsetDaysintegerrequired

        min -9007199254740991

  • 401 session_expired, session_revoked, unauthenticated
  • 403 forbidden, mfa_enrolment_required

POST/api/v1/organisation/checklist-templates

Create a checklist template

Access
Permission employment:update

Request body

application/json, object, required

  • kindenumrequired

    one of "onboarding", "offboarding"

  • namestringrequired

    min length 1 · max length 80

  • isDefaultboolean
  • itemsarray of objectrequired
    • titlestringrequired

      min length 1 · max length 160

    • assigneeRoleenumrequired

      one of "hr_admin", "payroll_admin", "manager", "employee"

    • dueOffsetDaysintegerrequired

      min -365 · max 365

Responses

201 Success. object

  • idstringrequired
  • kindenumrequired

    one of "onboarding", "offboarding"

  • namestringrequired
  • isDefaultbooleanrequired
  • itemsarray of objectrequired
    • titlestringrequired
    • assigneeRoleenumrequired

      one of "hr_admin", "payroll_admin", "manager", "employee"

    • dueOffsetDaysintegerrequired

      min -9007199254740991

  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 csrf_rejected, forbidden, mfa_enrolment_required

GET/api/v1/organisation/profile

Get the company profile (legal entity)

Access
Permission org_structure:read

Responses

200 Success. object

  • profileobject or nullrequired
    • legalNamestringrequired
    • tradingNamestring | nullrequired
    • uenstringrequired
    • csnstring | nullrequired
    • addressobjectrequired
      • blockstring | nullrequired
      • streetstring | nullrequired
      • unitstring | nullrequired
      • buildingstring | nullrequired
      • postalCodestring | nullrequired
    • hasLogobooleanrequired
    • timeZone"Asia/Singapore"required
    • currency"SGD"required
    • payrollReadybooleanrequired
    • missingForPayrollarray of stringrequired
    • updatedAtstringrequired
  • 401 session_expired, session_revoked, unauthenticated
  • 403 forbidden, mfa_enrolment_required

PUT/api/v1/organisation/profile

Save the company profile

Legal name, UEN (ACRA formats), CSN (UEN + payment type + serial) and registered address.

Access
Permission org_structure:update

Request body

application/json, object, required

  • legalNamestringrequired

    min length 1 · max length 200

  • tradingNamestring or null

    max length 200

  • uenstringrequired
  • csnstring | null
  • addressBlockstring or null

    max length 200

  • addressStreetstring or null

    max length 200

  • addressUnitstring or null

    max length 200

  • addressBuildingstring or null

    max length 200

  • postalCodestring | null

Responses

200 Success. object

  • profileobjectrequired
    • legalNamestringrequired
    • tradingNamestring | nullrequired
    • uenstringrequired
    • csnstring | nullrequired
    • addressobjectrequired
      • blockstring | nullrequired
      • streetstring | nullrequired
      • unitstring | nullrequired
      • buildingstring | nullrequired
      • postalCodestring | nullrequired
    • hasLogobooleanrequired
    • timeZone"Asia/Singapore"required
    • currency"SGD"required
    • payrollReadybooleanrequired
    • missingForPayrollarray of stringrequired
    • updatedAtstringrequired
  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 csrf_rejected, forbidden, mfa_enrolment_required
  • 409 conflict

Download the company logo

Access
Permission org_structure:read

Responses

200 The logo image image/png

  • 401 session_expired, session_revoked, unauthenticated
  • 403 forbidden, mfa_enrolment_required
  • 404 not_found

Upload the company logo (PNG, at most 1 MB)

Access
Permission org_structure:update

Request body

application/json, object, required

  • contentTypestringrequired
  • dataBase64stringrequired

    max length 1500000

Responses

204 No content.

  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 csrf_rejected, forbidden, mfa_enrolment_required
  • 409 conflict

GET/api/v1/organisation/setup-checklist

Organisation setup progress (derived from data)

Access
Permission org_structure:update

Responses

200 Success. object

  • completebooleanrequired
  • stepsarray of objectrequired
    • idenumrequired

      one of "company_profile", "department", "work_schedule", "employee"

    • titlestringrequired
    • donebooleanrequired
    • hrefstringrequired
  • 401 session_expired, session_revoked, unauthenticated
  • 403 forbidden, mfa_enrolment_required

GET/api/v1/organisation/structure/{kind}

List departments, teams, locations or cost centres

Access
Permission org_structure:read

Parameters

NameInTypeRequired
kindpathenumyes

Responses

200 Success. object

  • itemsarray of objectrequired
    • idstringrequired
    • namestringrequired
    • codestring | null
    • departmentIdstring | null
    • addressstring | null
    • postalCodestring | null
    • archivedbooleanrequired
    • archivedAtstring | nullrequired
    • employeeCountintegerrequired

      min -9007199254740991

  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 forbidden, mfa_enrolment_required

POST/api/v1/organisation/structure/{kind}

Create a department, team, location or cost centre

Access
Permission org_structure:create

Parameters

NameInTypeRequired
kindpathenumyes

Request body

application/json, object, required

Responses

201 Success. object

  • idstringrequired
  • namestringrequired
  • codestring | null
  • departmentIdstring | null
  • addressstring | null
  • postalCodestring | null
  • archivedbooleanrequired
  • archivedAtstring | nullrequired
  • employeeCountintegerrequired

    min -9007199254740991

  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 csrf_rejected, forbidden, mfa_enrolment_required
  • 409 conflict

PATCH/api/v1/organisation/structure/{kind}/{id}

Rename or edit a structure entry

Access
Permission org_structure:update

Parameters

NameInTypeRequired
kindpathenumyes
idpathstring (uuid)yes

Request body

application/json, object, required

Responses

200 Success. object

  • idstringrequired
  • namestringrequired
  • codestring | null
  • departmentIdstring | null
  • addressstring | null
  • postalCodestring | null
  • archivedbooleanrequired
  • archivedAtstring | nullrequired
  • employeeCountintegerrequired

    min -9007199254740991

  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 csrf_rejected, forbidden, mfa_enrolment_required
  • 404 not_found
  • 409 conflict

POST/api/v1/organisation/structure/{kind}/{id}/archive

Archive or restore a structure entry

Archiving an entry used by current employees fails with 409 in_use, the count and a link to the filtered employee list.

Access
Permission org_structure:archive

Parameters

NameInTypeRequired
kindpathenumyes
idpathstring (uuid)yes

Request body

application/json, object, required

  • archivedbooleanrequired

Responses

200 Success. object

  • idstringrequired
  • namestringrequired
  • codestring | null
  • departmentIdstring | null
  • addressstring | null
  • postalCodestring | null
  • archivedbooleanrequired
  • archivedAtstring | nullrequired
  • employeeCountintegerrequired

    min -9007199254740991

  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 csrf_rejected, forbidden, mfa_enrolment_required
  • 404 not_found
  • 409 conflict, in_use

GET/api/v1/organisation/work-schedules

List work schedules with their versions

Access
Permission org_structure:read

Responses

200 Success. object

  • itemsarray of objectrequired
    • idstringrequired
    • namestringrequired
    • kindenumrequired

      one of "fixed", "shift"

    • isDefaultbooleanrequired
    • archivedbooleanrequired
    • currentobject or nullrequired
      • effectiveFromstringrequired
      • daysarray of object or nullrequired
        • typeenumrequired

          one of "working", "half", "off", "rest"

        • minutesintegerrequired

          min -9007199254740991

      • weeklyMinutesintegerrequired

        min -9007199254740991

    • versionsarray of objectrequired
      • effectiveFromstringrequired
      • effectiveTostring | nullrequired
      • daysarray of object or nullrequired
        • typeenumrequired

          one of "working", "half", "off", "rest"

        • minutesintegerrequired

          min -9007199254740991

      • weeklyMinutesintegerrequired

        min -9007199254740991

  • 401 session_expired, session_revoked, unauthenticated
  • 403 forbidden, mfa_enrolment_required

POST/api/v1/organisation/work-schedules

Create a work schedule

Access
Permission org_structure:create

Request body

application/json, object | object, required

Responses

201 Success. object

  • idstringrequired
  • namestringrequired
  • kindenumrequired

    one of "fixed", "shift"

  • isDefaultbooleanrequired
  • archivedbooleanrequired
  • currentobject or nullrequired
    • effectiveFromstringrequired
    • daysarray of object or nullrequired
      • typeenumrequired

        one of "working", "half", "off", "rest"

      • minutesintegerrequired

        min -9007199254740991

    • weeklyMinutesintegerrequired

      min -9007199254740991

  • versionsarray of objectrequired
    • effectiveFromstringrequired
    • effectiveTostring | nullrequired
    • daysarray of object or nullrequired
      • typeenumrequired

        one of "working", "half", "off", "rest"

      • minutesintegerrequired

        min -9007199254740991

    • weeklyMinutesintegerrequired

      min -9007199254740991

  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 csrf_rejected, forbidden, mfa_enrolment_required
  • 409 conflict

PUT/api/v1/organisation/work-schedules/{id}

Change a work schedule from a date (new effective-dated version)

Access
Permission org_structure:update

Parameters

NameInTypeRequired
idpathstring (uuid)yes

Request body

application/json, object | object, required

Responses

200 Success. object

  • idstringrequired
  • namestringrequired
  • kindenumrequired

    one of "fixed", "shift"

  • isDefaultbooleanrequired
  • archivedbooleanrequired
  • currentobject or nullrequired
    • effectiveFromstringrequired
    • daysarray of object or nullrequired
      • typeenumrequired

        one of "working", "half", "off", "rest"

      • minutesintegerrequired

        min -9007199254740991

    • weeklyMinutesintegerrequired

      min -9007199254740991

  • versionsarray of objectrequired
    • effectiveFromstringrequired
    • effectiveTostring | nullrequired
    • daysarray of object or nullrequired
      • typeenumrequired

        one of "working", "half", "off", "rest"

      • minutesintegerrequired

        min -9007199254740991

    • weeklyMinutesintegerrequired

      min -9007199254740991

  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 csrf_rejected, forbidden, mfa_enrolment_required
  • 404 not_found
  • 409 conflict

POST/api/v1/organisation/work-schedules/{id}/default

Make a work schedule the organisation default

Access
Permission org_structure:update

Parameters

NameInTypeRequired
idpathstring (uuid)yes

Responses

200 Success. object

  • idstringrequired
  • namestringrequired
  • kindenumrequired

    one of "fixed", "shift"

  • isDefaultbooleanrequired
  • archivedbooleanrequired
  • currentobject or nullrequired
    • effectiveFromstringrequired
    • daysarray of object or nullrequired
      • typeenumrequired

        one of "working", "half", "off", "rest"

      • minutesintegerrequired

        min -9007199254740991

    • weeklyMinutesintegerrequired

      min -9007199254740991

  • versionsarray of objectrequired
    • effectiveFromstringrequired
    • effectiveTostring | nullrequired
    • daysarray of object or nullrequired
      • typeenumrequired

        one of "working", "half", "off", "rest"

      • minutesintegerrequired

        min -9007199254740991

    • weeklyMinutesintegerrequired

      min -9007199254740991

  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 csrf_rejected, forbidden, mfa_enrolment_required
  • 404 not_found
  • 409 conflict