Skip to main content

PrimeForge HR API (1.0)

Download OpenAPI specification:Download

The PrimeForge HR Service provides comprehensive human resources management capabilities for the PrimeForge platform.

Features

  • Employee management
  • Organization structure management
  • HR rates and payroll calculations
  • Department and job management
  • People administration
  • Company hierarchy management

Authentication

Most endpoints require JWT authentication. Include the access token in the Authorization header: Authorization: Bearer <your_access_token>

Rate Limiting

  • General endpoints: 100 requests per minute per user
  • Admin endpoints: 50 requests per minute per admin user

Multi-tenancy

This service supports multi-tenancy. The tenant context is automatically extracted from the JWT token.

Organization - Companies

Company management and hierarchy

Create a new company

Roles: HR_MANAGER, HR_SPECIALIST, ADMIN, OWNER

Authorizations:
JWT-auth
Request Body schema: application/json
required
name
required
string

Company name

company_number
required
string

Company registration number

company_type
string
Default: "LIMITED"
Enum: "LIMITED" "PLC" "LLP" "SOLE_TRADER" "CHARITY"

Company type

company_status
string
Default: "ACTIVE"
Enum: "ACTIVE" "DISSOLVED" "LIQUIDATION" "DORMANT"

Company status

incorporation_date
string

Incorporation date

registered_office_address
string

Registered office address

company_director
string

Company director name

company_secretary
string

Company secretary name

shareholders
object

Shareholders information as JSON

utr_number
string

UTR number

vat_number
string

VAT number

paye_reference
string

PAYE reference

account_office_reference
string

Account office reference

sic_code
string

SIC code

website
string

Company website URL

email
string

Company email address

phone
string

Company phone number

Responses

Request samples

Content type
application/json
{
  • "name": "Acme Corporation Ltd",
  • "company_number": "12345678",
  • "company_type": "LIMITED",
  • "company_status": "ACTIVE",
  • "incorporation_date": "2020-01-01",
  • "registered_office_address": "string",
  • "company_director": "string",
  • "company_secretary": "string",
  • "shareholders": { },
  • "utr_number": "string",
  • "vat_number": "string",
  • "paye_reference": "string",
  • "account_office_reference": "string",
  • "sic_code": "string",
  • "website": "string",
  • "email": "string",
  • "phone": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "company_number": "string",
  • "company_type": "LIMITED",
  • "company_status": "ACTIVE",
  • "incorporation_date": { },
  • "registered_office_address": { },
  • "company_director": { },
  • "company_secretary": { },
  • "shareholders": { },
  • "utr_number": { },
  • "vat_number": { },
  • "paye_reference": { },
  • "account_office_reference": { },
  • "sic_code": { },
  • "website": { },
  • "email": { },
  • "phone": { },
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z"
}

Get all companies with optional pagination

Authorizations:
JWT-auth
query Parameters
sortOrder
string
Enum: "asc" "desc"

Sort order

sortBy
string

Field to sort by (name, companyNumber, type, status, created, updated)

search
string

Search term for company name, number, director, or email

limit
number

Number of items per page (max 100)

page
number

Page number for pagination (starts from 1)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get company by ID

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Company ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "company_number": "string",
  • "company_type": "LIMITED",
  • "company_status": "ACTIVE",
  • "incorporation_date": { },
  • "registered_office_address": { },
  • "company_director": { },
  • "company_secretary": { },
  • "shareholders": { },
  • "utr_number": { },
  • "vat_number": { },
  • "paye_reference": { },
  • "account_office_reference": { },
  • "sic_code": { },
  • "website": { },
  • "email": { },
  • "phone": { },
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z"
}

Update company

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Company ID

Request Body schema: application/json
required
name
string

Company name

company_number
string

Company registration number (Be careful when updating)

company_type
string
Enum: "LIMITED" "PLC" "LLP" "SOLE_TRADER" "CHARITY"

Company type

company_status
string
Enum: "ACTIVE" "DISSOLVED" "LIQUIDATION" "DORMANT"

Company status

incorporation_date
string

Incorporation date

registered_office_address
string

Registered office address

company_director
string

Company director name

company_secretary
string

Company secretary name

shareholders
object

Shareholders information as JSON

utr_number
string

UTR number

vat_number
string

VAT number

paye_reference
string

PAYE reference

account_office_reference
string

Account office reference

sic_code
string

SIC code

website
string

Company website URL

email
string

Company email address

phone
string

Company phone number

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "company_number": "12345678",
  • "company_type": "LIMITED",
  • "company_status": "ACTIVE",
  • "incorporation_date": "string",
  • "registered_office_address": "string",
  • "company_director": "string",
  • "company_secretary": "string",
  • "shareholders": { },
  • "utr_number": "string",
  • "vat_number": "string",
  • "paye_reference": "string",
  • "account_office_reference": "string",
  • "sic_code": "string",
  • "website": "string",
  • "email": "string",
  • "phone": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "company_number": "string",
  • "company_type": "LIMITED",
  • "company_status": "ACTIVE",
  • "incorporation_date": { },
  • "registered_office_address": { },
  • "company_director": { },
  • "company_secretary": { },
  • "shareholders": { },
  • "utr_number": { },
  • "vat_number": { },
  • "paye_reference": { },
  • "account_office_reference": { },
  • "sic_code": { },
  • "website": { },
  • "email": { },
  • "phone": { },
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z"
}

Delete company

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Company ID

query Parameters
force_delete
boolean

Force delete without checking for associated data (OWNER role only)

Responses

Get company by company number

Authorizations:
JWT-auth
path Parameters
companyNumber
required
string

Company registration number

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "company_number": "string",
  • "company_type": "LIMITED",
  • "company_status": "ACTIVE",
  • "incorporation_date": { },
  • "registered_office_address": { },
  • "company_director": { },
  • "company_secretary": { },
  • "shareholders": { },
  • "utr_number": { },
  • "vat_number": { },
  • "paye_reference": { },
  • "account_office_reference": { },
  • "sic_code": { },
  • "website": { },
  • "email": { },
  • "phone": { },
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z"
}

Get company statistics

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Company ID

Responses

Response samples

Content type
application/json
{
  • "departmentCount": 0,
  • "jobCount": 0,
  • "employeeCount": 0
}

Check company usage before deletion

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Company ID

Responses

Response samples

Content type
application/json
{
  • "canDelete": true,
  • "usage": {
    }
}

Organization - Departments

Department structure and management

Create a new department

Authorizations:
None
Request Body schema: application/json
required
name
required
string

Department name

company_id
required
string <uuid>

Company ID

department_function
required
string
Enum: "EXECUTIVE_MANAGEMENT" "HR" "FINANCE" "ACCOUNTING" "PAYROLL" "LEGAL" "COMPLIANCE" "RISK_MANAGEMENT" "SALES" "BUSINESS_DEVELOPMENT" "MARKETING" "DIGITAL_MARKETING" "PRODUCT_MANAGEMENT" "OPERATIONS" "CUSTOMER_SUPPORT" "CUSTOMER_SUCCESS" "PUBLIC_RELATIONS" "R_D" "IT" "SOFTWARE_DEVELOPMENT" "DATA_SCIENCE" "CYBERSECURITY" "TECHNICAL_SUPPORT" "PROCUREMENT" "SUPPLY_CHAIN_MANAGEMENT" "LOGISTICS" "WAREHOUSE" "MANUFACTURING" "QUALITY_ASSURANCE" "HEALTH_AND_SAFETY" "FACILITIES_MANAGEMENT" "TRAINING_AND_DEVELOPMENT" "CORPORATE_STRATEGY" "INVESTOR_RELATIONS" "CORPORATE_SOCIAL_RESPONSIBILITY" "OTHER"

Department function

head_of_department_id
string <uuid>

Head of department employee ID

parent_department_id
string <uuid>

Parent department ID

Responses

Request samples

Content type
application/json
{
  • "name": "Software Development",
  • "company_id": "123e4567-e89b-12d3-a456-426614174000",
  • "department_function": "SOFTWARE_DEVELOPMENT",
  • "head_of_department_id": "123e4567-e89b-12d3-a456-426614174000",
  • "parent_department_id": "123e4567-e89b-12d3-a456-426614174000"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "company_id": "string",
  • "department_function": "EXECUTIVE_MANAGEMENT",
  • "head_of_department_id": { },
  • "parent_department_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Get all departments with pagination

Authorizations:
None
query Parameters
company_id
required
string
Example: company_id=550e8400-e29b-41d4-a716-446655440000

Company ID to filter departments

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get department by ID

Authorizations:
None
path Parameters
id
required
string
Example: 123e4567-e89b-12d3-a456-426614174000

Department ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "company_id": "string",
  • "department_function": "EXECUTIVE_MANAGEMENT",
  • "head_of_department_id": { },
  • "parent_department_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update department

Authorizations:
None
path Parameters
id
required
string

Department ID

Request Body schema: application/json
required
name
string

Department name

company_id
string <uuid>

Company ID

department_function
string
Enum: "EXECUTIVE_MANAGEMENT" "HR" "FINANCE" "ACCOUNTING" "PAYROLL" "LEGAL" "COMPLIANCE" "RISK_MANAGEMENT" "SALES" "BUSINESS_DEVELOPMENT" "MARKETING" "DIGITAL_MARKETING" "PRODUCT_MANAGEMENT" "OPERATIONS" "CUSTOMER_SUPPORT" "CUSTOMER_SUCCESS" "PUBLIC_RELATIONS" "R_D" "IT" "SOFTWARE_DEVELOPMENT" "DATA_SCIENCE" "CYBERSECURITY" "TECHNICAL_SUPPORT" "PROCUREMENT" "SUPPLY_CHAIN_MANAGEMENT" "LOGISTICS" "WAREHOUSE" "MANUFACTURING" "QUALITY_ASSURANCE" "HEALTH_AND_SAFETY" "FACILITIES_MANAGEMENT" "TRAINING_AND_DEVELOPMENT" "CORPORATE_STRATEGY" "INVESTOR_RELATIONS" "CORPORATE_SOCIAL_RESPONSIBILITY" "OTHER"

Department function

head_of_department_id
string <uuid>

Head of department employee ID

parent_department_id
string <uuid>

Parent department ID

Responses

Request samples

Content type
application/json
{
  • "name": "Software Development",
  • "company_id": "123e4567-e89b-12d3-a456-426614174000",
  • "department_function": "SOFTWARE_DEVELOPMENT",
  • "head_of_department_id": "123e4567-e89b-12d3-a456-426614174000",
  • "parent_department_id": "123e4567-e89b-12d3-a456-426614174000"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "company_id": "string",
  • "department_function": "EXECUTIVE_MANAGEMENT",
  • "head_of_department_id": { },
  • "parent_department_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete department

Authorizations:
None
path Parameters
id
required
string

Department ID

Responses

Get department with all relations

Authorizations:
None
path Parameters
id
required
string
Example: 123e4567-e89b-12d3-a456-426614174000

Department ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "company_id": "string",
  • "department_function": "EXECUTIVE_MANAGEMENT",
  • "head_of_department_id": { },
  • "parent_department_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "head_of_department": { },
  • "parent_department": { },
  • "sub_departments": [
    ],
  • "assignments_count": 0
}

Get department statistics

Authorizations:
None
path Parameters
id
required
string

Department ID

Responses

Get all departments for a specific company

Authorizations:
None
path Parameters
companyId
required
string

Company ID

query Parameters
includeRelations
boolean

Include related data (company, head, parent, sub-departments)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Organization - Jobs

Job positions and role definitions

Create a new job

Authorizations:
None
Request Body schema: application/json
required
company_id
required
string

Company ID

name
required
string

Job title

soc_2020_code
string

SOC 2020 code

employment_type
string
Default: "PERMANENT"
Enum: "PERMANENT" "TEMPORARY" "CONTRACT" "INTERNSHIP" "PART_TIME" "ZERO_HOUR" "OTHER"

Employment type

job_level
string
Default: "ENTRY"
Enum: "ENTRY" "JUNIOR" "MID" "SENIOR" "LEAD" "MANAGER" "DIRECTOR" "EXECUTIVE" "OTHER"

Job level

salary_grade
string

Salary grade

minimum_salary
number >= 0

Minimum salary

maximum_salary
number >= 0

Maximum salary

salary_currency
string
Default: "GBP"

Salary currency

pay_frequency
string
Default: "MONTHLY"
Enum: "WEEKLY" "BIWEEKLY" "MONTHLY" "YEARLY" "HOURLY"

Pay frequency

work_pattern
string
Default: "FULL_TIME"
Enum: "FULL_TIME" "PART_TIME" "FLEXIBLE" "OTHER"

Work pattern

work_location
string
Default: "ON_SITE"
Enum: "ON_SITE" "REMOTE" "HYBRID" "OTHER"

Work location

weekly_hours
number >= 0
Default: 37.5

Weekly hours

job_description
string

Job description

job_responsibilities
string

Job responsibilities

job_requirements
string

Job requirements

job_benefits
string

Job benefits

job_status
string
Default: "ACTIVE"
Enum: "ACTIVE" "INACTIVE" "FROZEN" "DISCONTINUED"

Job status

Responses

Request samples

Content type
application/json
{
  • "company_id": "550e8400-e29b-41d4-a716-446655440000",
  • "name": "string",
  • "soc_2020_code": "string",
  • "employment_type": "PERMANENT",
  • "job_level": "ENTRY",
  • "salary_grade": "string",
  • "minimum_salary": 30000,
  • "maximum_salary": 60000,
  • "salary_currency": "GBP",
  • "pay_frequency": "WEEKLY",
  • "work_pattern": "FULL_TIME",
  • "work_location": "ON_SITE",
  • "weekly_hours": 37.5,
  • "job_description": "string",
  • "job_responsibilities": "string",
  • "job_requirements": "string",
  • "job_benefits": "string",
  • "job_status": "ACTIVE"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "name": "string",
  • "soc_2020_code": { },
  • "employment_type": "PERMANENT",
  • "job_level": "ENTRY",
  • "salary_grade": { },
  • "minimum_salary": { },
  • "maximum_salary": { },
  • "salary_currency": { },
  • "pay_frequency": "WEEKLY",
  • "work_pattern": "FULL_TIME",
  • "work_location": "ON_SITE",
  • "weekly_hours": { },
  • "job_description": { },
  • "job_responsibilities": { },
  • "job_requirements": { },
  • "job_benefits": { },
  • "job_status": "ACTIVE"
}

Get all jobs with pagination

Authorizations:
None
query Parameters
company_id
required
string
Example: company_id=550e8400-e29b-41d4-a716-446655440000

Company ID to filter jobs

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get job by ID

Authorizations:
None
path Parameters
id
required
string
Example: 123e4567-e89b-12d3-a456-426614174000

Job ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "name": "string",
  • "soc_2020_code": { },
  • "employment_type": "PERMANENT",
  • "job_level": "ENTRY",
  • "salary_grade": { },
  • "minimum_salary": { },
  • "maximum_salary": { },
  • "salary_currency": { },
  • "pay_frequency": "WEEKLY",
  • "work_pattern": "FULL_TIME",
  • "work_location": "ON_SITE",
  • "weekly_hours": { },
  • "job_description": { },
  • "job_responsibilities": { },
  • "job_requirements": { },
  • "job_benefits": { },
  • "job_status": "ACTIVE"
}

Update job

Authorizations:
None
path Parameters
id
required
string

Job ID

Request Body schema: application/json
required
company_id
string

Company ID

name
string

Job title

soc_2020_code
string

SOC 2020 code

employment_type
string
Default: "PERMANENT"
Enum: "PERMANENT" "TEMPORARY" "CONTRACT" "INTERNSHIP" "PART_TIME" "ZERO_HOUR" "OTHER"

Employment type

job_level
string
Default: "ENTRY"
Enum: "ENTRY" "JUNIOR" "MID" "SENIOR" "LEAD" "MANAGER" "DIRECTOR" "EXECUTIVE" "OTHER"

Job level

salary_grade
string

Salary grade

minimum_salary
number >= 0

Minimum salary

maximum_salary
number >= 0

Maximum salary

salary_currency
string
Default: "GBP"

Salary currency

pay_frequency
string
Default: "MONTHLY"
Enum: "WEEKLY" "BIWEEKLY" "MONTHLY" "YEARLY" "HOURLY"

Pay frequency

work_pattern
string
Default: "FULL_TIME"
Enum: "FULL_TIME" "PART_TIME" "FLEXIBLE" "OTHER"

Work pattern

work_location
string
Default: "ON_SITE"
Enum: "ON_SITE" "REMOTE" "HYBRID" "OTHER"

Work location

weekly_hours
number >= 0
Default: 37.5

Weekly hours

job_description
string

Job description

job_responsibilities
string

Job responsibilities

job_requirements
string

Job requirements

job_benefits
string

Job benefits

job_status
string
Default: "ACTIVE"
Enum: "ACTIVE" "INACTIVE" "FROZEN" "DISCONTINUED"

Job status

Responses

Request samples

Content type
application/json
{
  • "company_id": "550e8400-e29b-41d4-a716-446655440000",
  • "name": "string",
  • "soc_2020_code": "string",
  • "employment_type": "PERMANENT",
  • "job_level": "ENTRY",
  • "salary_grade": "string",
  • "minimum_salary": 30000,
  • "maximum_salary": 60000,
  • "salary_currency": "GBP",
  • "pay_frequency": "WEEKLY",
  • "work_pattern": "FULL_TIME",
  • "work_location": "ON_SITE",
  • "weekly_hours": 37.5,
  • "job_description": "string",
  • "job_responsibilities": "string",
  • "job_requirements": "string",
  • "job_benefits": "string",
  • "job_status": "ACTIVE"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "name": "string",
  • "soc_2020_code": { },
  • "employment_type": "PERMANENT",
  • "job_level": "ENTRY",
  • "salary_grade": { },
  • "minimum_salary": { },
  • "maximum_salary": { },
  • "salary_currency": { },
  • "pay_frequency": "WEEKLY",
  • "work_pattern": "FULL_TIME",
  • "work_location": "ON_SITE",
  • "weekly_hours": { },
  • "job_description": { },
  • "job_responsibilities": { },
  • "job_requirements": { },
  • "job_benefits": { },
  • "job_status": "ACTIVE"
}

Delete job

Authorizations:
None
path Parameters
id
required
string

Job ID

Responses

Get job statistics

Authorizations:
None
path Parameters
id
required
string

Job ID

Responses

Get all jobs for a specific company

Authorizations:
None
path Parameters
companyId
required
string

Company ID

query Parameters
includeRelations
boolean

Include related data (company, assignment counts)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

People - Employees

Employee records and information management

Create a new employee

Authorizations:
JWT-auth
Request Body schema: application/json
required
employee_no
required
string

Employee number

first_name
required
string

First name

last_name
required
string

Last name

email
required
string

Email address

national_insurance_no
required
string

National Insurance number

address
required
string

Address

hire_date
required
string

Hire date

title
string

Title (Mr/Mrs/Dr/etc)

preferred_name
string

Preferred name

avatar
string

Avatar URL

phone
string

Phone number

dob
string

Date of birth

gender
string
Enum: "MALE" "FEMALE" "OTHER" "PREFER_NOT_TO_SAY"
right_to_work_status
string
Enum: "VERIFIED" "PENDING" "EXPIRED" "FAILED" "NOT_PROVIDED"
employment_status
string
Default: "ACTIVE"
Enum: "ACTIVE" "PROBATION" "LEAVE_PAID" "LEAVE_UNPAID" "SUSPENDED" "NOTICE_PERIOD" "RESIGNED" "TERMINATED" "RETIRED" "CONTRACT_ENDED" "INACTIVE"
contract_type
string
Enum: "PERMANENT" "FIXED_TERM" "ZERO_HOURS" "APPRENTICE" "CONTRACTOR"
contract_start_date
string

Contract start date

contract_end_date
string

Contract end date

working_hours
number

Working hours per week

salary_type
string
Enum: "ANNUAL" "MONTHLY" "WEEKLY" "BIWEEKLY" "DAILY" "HOURLY" "COMMISSION" "PROJECT_BASED"
salary_amount
number

Salary amount

tax_code
string

Tax code

nic_table_letter
string
Default: "A"
Enum: "A" "B" "C" "H" "J" "M" "Z"
user_id
string <uuid>

User ID from auth system

Responses

Request samples

Content type
application/json
{
  • "employee_no": "EMP001",
  • "first_name": "string",
  • "last_name": "string",
  • "email": "string",
  • "national_insurance_no": "AB123456C",
  • "address": "string",
  • "hire_date": "2024-01-01",
  • "title": "string",
  • "preferred_name": "string",
  • "avatar": "string",
  • "phone": "07912345678",
  • "dob": "1990-01-01",
  • "gender": "MALE",
  • "right_to_work_status": "VERIFIED",
  • "employment_status": "ACTIVE",
  • "contract_type": "PERMANENT",
  • "contract_start_date": "string",
  • "contract_end_date": "string",
  • "working_hours": 37.5,
  • "salary_type": "ANNUAL",
  • "salary_amount": 50000,
  • "tax_code": "1257L",
  • "nic_table_letter": "A",
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_no": "string",
  • "title": { },
  • "first_name": "string",
  • "preferred_name": { },
  • "last_name": "string",
  • "email": "string",
  • "avatar": { },
  • "phone": { },
  • "dob": { },
  • "gender": "MALE",
  • "national_insurance_no": "string",
  • "right_to_work_status": "VERIFIED",
  • "address": "string",
  • "hire_date": "2019-08-24T14:15:22Z",
  • "termination_date": { },
  • "employment_status": "ACTIVE",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "default_company": { }
}

Get all employees with optional search filters and pagination

Authorizations:
JWT-auth
query Parameters
company_id
required
string <uuid>

Company ID (required)

employment_status
string
Enum: "ACTIVE" "PROBATION" "LEAVE_PAID" "LEAVE_UNPAID" "SUSPENDED" "NOTICE_PERIOD" "RESIGNED" "TERMINATED" "RETIRED" "CONTRACT_ENDED" "INACTIVE"
department_id
string

Department ID

include_terminated
boolean
Default: false

Include terminated employees

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get employee statistics by department

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get employee count by employment status

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get employees without any assignments

Returns a paginated list of employees who do not have any assignments

Authorizations:
JWT-auth
query Parameters
page
number

Page number (default: 1)

limit
number

Items per page (default: 10)

sortBy
string

Field to sort by

sortOrder
string
Enum: "asc" "desc"

Sort order (asc or desc)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get an employee by ID

Authorizations:
JWT-auth
path Parameters
id
required
string

Employee ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_no": "string",
  • "title": { },
  • "first_name": "string",
  • "preferred_name": { },
  • "last_name": "string",
  • "email": "string",
  • "avatar": { },
  • "phone": { },
  • "dob": { },
  • "gender": "MALE",
  • "national_insurance_no": "string",
  • "right_to_work_status": "VERIFIED",
  • "address": "string",
  • "hire_date": "2019-08-24T14:15:22Z",
  • "termination_date": { },
  • "employment_status": "ACTIVE",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "default_company": { }
}

Update an employee

Authorizations:
JWT-auth
path Parameters
id
required
string

Employee ID

Request Body schema: application/json
required
title
string

Title

first_name
string

First name

last_name
string

Last name

preferred_name
string

Preferred name

email
string

Email address

phone
string

Phone number

dob
string

Date of birth

gender
string
Enum: "MALE" "FEMALE" "OTHER" "PREFER_NOT_TO_SAY"
national_insurance_no
string

National Insurance number

right_to_work_status
string
Enum: "VERIFIED" "PENDING" "EXPIRED" "FAILED" "NOT_PROVIDED"
address
string

Address

employment_status
string
Enum: "ACTIVE" "PROBATION" "LEAVE_PAID" "LEAVE_UNPAID" "SUSPENDED" "NOTICE_PERIOD" "RESIGNED" "TERMINATED" "RETIRED" "CONTRACT_ENDED" "INACTIVE"
termination_date
string

Termination date

contract_type
string
Enum: "PERMANENT" "FIXED_TERM" "ZERO_HOURS" "APPRENTICE" "CONTRACTOR"
contract_start_date
string

Contract start date

contract_end_date
string

Contract end date

working_hours
string

Working hours per week

salary_type
string
Enum: "ANNUAL" "MONTHLY" "WEEKLY" "BIWEEKLY" "DAILY" "HOURLY" "COMMISSION" "PROJECT_BASED"
salary_amount
string

Salary amount

tax_code
string

Tax code

nic_table_letter
string
Enum: "A" "B" "C" "H" "J" "M" "Z"

Responses

Request samples

Content type
application/json
{
  • "title": "Mr",
  • "first_name": "string",
  • "last_name": "string",
  • "preferred_name": "string",
  • "email": "string",
  • "phone": "07912345678",
  • "dob": "1990-01-15",
  • "gender": "MALE",
  • "national_insurance_no": "AB123456C",
  • "right_to_work_status": "VERIFIED",
  • "address": "string",
  • "employment_status": "ACTIVE",
  • "termination_date": "string",
  • "contract_type": "PERMANENT",
  • "contract_start_date": "string",
  • "contract_end_date": "string",
  • "working_hours": 37.5,
  • "salary_type": "ANNUAL",
  • "salary_amount": "string",
  • "tax_code": "1257L",
  • "nic_table_letter": "A"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_no": "string",
  • "title": { },
  • "first_name": "string",
  • "preferred_name": { },
  • "last_name": "string",
  • "email": "string",
  • "avatar": { },
  • "phone": { },
  • "dob": { },
  • "gender": "MALE",
  • "national_insurance_no": "string",
  • "right_to_work_status": "VERIFIED",
  • "address": "string",
  • "hire_date": "2019-08-24T14:15:22Z",
  • "termination_date": { },
  • "employment_status": "ACTIVE",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "default_company": { }
}

Delete an employee (hard delete)

Permanently deletes an employee. Only allowed for employees without assignments.

Authorizations:
JWT-auth
path Parameters
id
required
string

Employee ID

Responses

Get employee details with relations

Authorizations:
JWT-auth
path Parameters
id
required
string

Employee ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_no": "string",
  • "title": { },
  • "first_name": "string",
  • "preferred_name": { },
  • "last_name": "string",
  • "email": "string",
  • "avatar": { },
  • "phone": { },
  • "dob": { },
  • "gender": "MALE",
  • "national_insurance_no": "string",
  • "right_to_work_status": "VERIFIED",
  • "address": "string",
  • "hire_date": "2019-08-24T14:15:22Z",
  • "termination_date": { },
  • "employment_status": "ACTIVE",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "default_company": { },
  • "contract_type": "PERMANENT",
  • "contract_start_date": { },
  • "contract_end_date": { },
  • "working_hours": { },
  • "salary_type": "ANNUAL",
  • "salary_amount": { },
  • "tax_code": { },
  • "nic_table_letter": "A",
  • "assignments": [
    ],
  • "manage_departments": [
    ]
}

Get an employee by employee number

Authorizations:
JWT-auth
path Parameters
employeeNumber
required
string

Employee number

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_no": "string",
  • "title": { },
  • "first_name": "string",
  • "preferred_name": { },
  • "last_name": "string",
  • "email": "string",
  • "avatar": { },
  • "phone": { },
  • "dob": { },
  • "gender": "MALE",
  • "national_insurance_no": "string",
  • "right_to_work_status": "VERIFIED",
  • "address": "string",
  • "hire_date": "2019-08-24T14:15:22Z",
  • "termination_date": { },
  • "employment_status": "ACTIVE",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "default_company": { }
}

Terminate an employee (soft delete)

Authorizations:
JWT-auth
path Parameters
id
required
string

Employee ID

query Parameters
terminationDate
string

Termination date (ISO string)

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_no": "string",
  • "title": { },
  • "first_name": "string",
  • "preferred_name": { },
  • "last_name": "string",
  • "email": "string",
  • "avatar": { },
  • "phone": { },
  • "dob": { },
  • "gender": "MALE",
  • "national_insurance_no": "string",
  • "right_to_work_status": "VERIFIED",
  • "address": "string",
  • "hire_date": "2019-08-24T14:15:22Z",
  • "termination_date": { },
  • "employment_status": "ACTIVE",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "default_company": { }
}

Check if employee number is duplicate and get suggestion

Checks if the provided employee number already exists and suggests an alternative if it does

Authorizations:
JWT-auth
Request Body schema: application/json
required
employee_no
required
string

Employee number to check for duplicates

Responses

Request samples

Content type
application/json
{
  • "employee_no": "EMP001"
}

Response samples

Content type
application/json
{
  • "is_duplicate": true,
  • "suggested_employee_no": "EMP002"
}

People - Assignments

Job assignments and position management

Create a new assignment

Authorizations:
JWT-auth
Request Body schema: application/json
required
employee_id
required
string <uuid>

Employee ID

company_id
required
string <uuid>

Company ID

job_id
required
string <uuid>

Job ID

department_id
required
string <uuid>

Department ID

start_date
required
string

Assignment start date

end_date
string

Assignment end date

is_primary
boolean
Default: true

Is this the primary assignment for the employee

employment_type
string
Default: "PERMANENT"
Enum: "PERMANENT" "TEMPORARY" "CONTRACT" "INTERNSHIP" "PART_TIME" "ZERO_HOUR" "OTHER"

Employment type

Responses

Request samples

Content type
application/json
{
  • "employee_id": "df4fd699-0854-488d-9cc2-15e751a80ee3",
  • "company_id": "b2e6a1c3-1a5e-44ae-a8fd-81f76fd715cf",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "department_id": "094fb5f1-8160-46ea-8cec-010c4b44e054",
  • "start_date": "2024-01-01",
  • "end_date": "2024-12-31",
  • "is_primary": true,
  • "employment_type": "PERMANENT"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "company_id": "string",
  • "job_id": "string",
  • "department_id": "string",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": { },
  • "is_primary": true,
  • "employment_type": "PERMANENT",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Get all assignments with pagination and optional search filters

Authorizations:
JWT-auth
query Parameters
start_date_to
any

Filter by start date to

start_date_from
any

Filter by start date from

include_ended
any

Include ended assignments

job_id
any

Filter by job ID

department_id
any

Filter by department ID

employee_id
any

Filter by employee ID

sortOrder
string
Enum: "asc" "desc"

Sort order

sortBy
string

Field to sort by

limit
number

Number of items per page (max 100)

page
number

Page number for pagination (starts from 1)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get assignment statistics

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "active": 0,
  • "ended": 0
}

Get current assignments for an employee

Authorizations:
JWT-auth
path Parameters
employeeId
required
string

Employee ID

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get assignment history for an employee

Authorizations:
JWT-auth
path Parameters
employeeId
required
string

Employee ID

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get assignments by department

Authorizations:
JWT-auth
path Parameters
departmentId
required
string

Department ID

query Parameters
include_ended
boolean

Include ended assignments

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get an assignment by ID

Authorizations:
JWT-auth
path Parameters
id
required
string

Assignment ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "company_id": "string",
  • "job_id": "string",
  • "department_id": "string",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": { },
  • "is_primary": true,
  • "employment_type": "PERMANENT",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Update an assignment

Authorizations:
JWT-auth
path Parameters
id
required
string

Assignment ID

Request Body schema: application/json
required
company_id
string <uuid>

Company ID

job_id
string <uuid>

Job ID

department_id
string <uuid>

Department ID

end_date
string

Assignment end date

is_primary
boolean

Is this the primary assignment for the employee

employment_type
string
Enum: "PERMANENT" "TEMPORARY" "CONTRACT" "INTERNSHIP" "PART_TIME" "ZERO_HOUR" "OTHER"

Employment type

Responses

Request samples

Content type
application/json
{
  • "company_id": "b2e6a1c3-1a5e-44ae-a8fd-81f76fd715cf",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "department_id": "094fb5f1-8160-46ea-8cec-010c4b44e054",
  • "end_date": "2024-12-31",
  • "is_primary": true,
  • "employment_type": "PERMANENT"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "company_id": "string",
  • "job_id": "string",
  • "department_id": "string",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": { },
  • "is_primary": true,
  • "employment_type": "PERMANENT",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Delete an assignment

Permanently deletes an assignment record

Authorizations:
JWT-auth
path Parameters
id
required
string

Assignment ID

Responses

Get assignment details with relations

Authorizations:
JWT-auth
path Parameters
id
required
string

Assignment ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "company_id": "string",
  • "job_id": "string",
  • "department_id": "string",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": { },
  • "is_primary": true,
  • "employment_type": "PERMANENT",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "job": { },
  • "department": { },
  • "company": { }
}

End an assignment

Authorizations:
JWT-auth
path Parameters
id
required
string

Assignment ID

query Parameters
endDate
string

End date (ISO string)

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "company_id": "string",
  • "job_id": "string",
  • "department_id": "string",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": { },
  • "is_primary": true,
  • "employment_type": "PERMANENT",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Get all employees assigned to a company

Returns all employees currently assigned to a specific company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

query Parameters
includeEnded
boolean

Include employees with ended assignments

Responses

Get employee's primary company

Returns the company where the employee has a primary assignment

Authorizations:
JWT-auth
path Parameters
employeeId
required
string

Employee ID

Responses

Get all companies an employee is associated with

Returns all companies where the employee has assignments

Authorizations:
JWT-auth
path Parameters
employeeId
required
string

Employee ID

query Parameters
activeOnly
boolean

Only include active assignments

Responses

Handle employee job transfer

Ends current assignment and creates a new one for job transfer

Authorizations:
JWT-auth
Request Body schema: application/json
required
employeeId
required
string <uuid>
required
object (CreateAssignmentDto)
reason
string

Responses

Request samples

Content type
application/json
{
  • "employeeId": "b0e78c8f-8c8b-4410-8293-9239e39d9e17",
  • "newAssignment": {
    },
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "company_id": "string",
  • "job_id": "string",
  • "department_id": "string",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": { },
  • "is_primary": true,
  • "employment_type": "PERMANENT",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "job": { },
  • "department": { },
  • "company": { }
}

Create assignment with business rules

Creates an assignment while enforcing business rules (e.g., single primary assignment)

Authorizations:
JWT-auth
Request Body schema: application/json
required
employee_id
required
string <uuid>

Employee ID

company_id
required
string <uuid>

Company ID

job_id
required
string <uuid>

Job ID

department_id
required
string <uuid>

Department ID

start_date
required
string

Assignment start date

end_date
string

Assignment end date

is_primary
boolean
Default: true

Is this the primary assignment for the employee

employment_type
string
Default: "PERMANENT"
Enum: "PERMANENT" "TEMPORARY" "CONTRACT" "INTERNSHIP" "PART_TIME" "ZERO_HOUR" "OTHER"

Employment type

Responses

Request samples

Content type
application/json
{
  • "employee_id": "df4fd699-0854-488d-9cc2-15e751a80ee3",
  • "company_id": "b2e6a1c3-1a5e-44ae-a8fd-81f76fd715cf",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "department_id": "094fb5f1-8160-46ea-8cec-010c4b44e054",
  • "start_date": "2024-01-01",
  • "end_date": "2024-12-31",
  • "is_primary": true,
  • "employment_type": "PERMANENT"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "company_id": "string",
  • "job_id": "string",
  • "department_id": "string",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": { },
  • "is_primary": true,
  • "employment_type": "PERMANENT",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Recruitment - Job Postings

Job advertisements and postings

Create a new job posting

Authorizations:
None
Request Body schema: application/json
required
job_id
string
posting_title
required
string
posting_description
required
string
requirements
required
string
benefits
string
salary_range_min
number
salary_range_max
number
employment_type
required
string
location
string
remote_work_allowed
boolean
closing_date
string
hiring_manager_id
string
hr_contact_id
string
internal_only
boolean

Responses

Request samples

Content type
application/json
{
  • "job_id": "uuid",
  • "posting_title": "Senior Software Engineer",
  • "posting_description": "We are looking for a senior software engineer...",
  • "requirements": "5+ years experience in TypeScript...",
  • "benefits": "Health insurance, pension...",
  • "salary_range_min": 50000,
  • "salary_range_max": 80000,
  • "employment_type": "PERMANENT",
  • "location": "London",
  • "remote_work_allowed": true,
  • "closing_date": "2024-12-31",
  • "hiring_manager_id": "uuid",
  • "hr_contact_id": "uuid",
  • "internal_only": false
}

Get list of job postings with filters

Authorizations:
None
query Parameters
status
string
Enum: "DRAFT" "ACTIVE" "PAUSED" "CLOSED" "CANCELLED" "ARCHIVED"

Filter by posting status

hiring_manager_id
string
Example: hiring_manager_id=uuid

Filter by hiring manager ID

department_id
string
Example: department_id=uuid
location
string
Example: location=London

Filter by location (partial match)

remote_work_allowed
boolean
Example: remote_work_allowed=true

Filter by remote work availability

internal_only
boolean
Example: internal_only=true

Filter for internal only postings

limit
number
Example: limit=20

Number of items per page

offset
number
Example: offset=0

Number of items to skip

Responses

Update an existing job posting

Authorizations:
None
path Parameters
id
required
string <uuid>

Job posting ID

Request Body schema: application/json
required
job_id
string
posting_title
string
posting_description
string
requirements
string
employment_type
string
location
string
salary_min
number
salary_max
number
posted_date
string
closing_date
string
hiring_manager_id
string
hr_contact_id
string
remote_work_allowed
boolean
internal_only
boolean
posting_status
string
Enum: "DRAFT" "ACTIVE" "PAUSED" "CLOSED" "CANCELLED" "ARCHIVED"

Responses

Request samples

Content type
application/json
{
  • "job_id": "uuid",
  • "posting_title": "Senior Software Engineer",
  • "posting_description": "We are looking for a senior software engineer...",
  • "requirements": "5+ years experience in TypeScript...",
  • "employment_type": "FULL_TIME",
  • "location": "London, UK",
  • "salary_min": 50000,
  • "salary_max": 80000,
  • "posted_date": "2024-01-01",
  • "closing_date": "2024-03-01",
  • "hiring_manager_id": "uuid",
  • "hr_contact_id": "uuid",
  • "remote_work_allowed": true,
  • "internal_only": false,
  • "posting_status": "DRAFT"
}

Get a specific job posting by ID

Authorizations:
None
path Parameters
id
required
string <uuid>

Job posting ID

Responses

Publish a draft job posting

Authorizations:
None
path Parameters
id
required
string <uuid>

Job posting ID

Responses

Close an active job posting

Authorizations:
None
path Parameters
id
required
string <uuid>

Job posting ID

Responses

Reopen a closed job posting

Authorizations:
None
path Parameters
id
required
string <uuid>

Job posting ID

Responses

Archive a job posting

Authorizations:
None
path Parameters
id
required
string <uuid>

Job posting ID

Responses

Recruitment - Candidates

Candidate applications and profiles

Create a new candidate profile

Authorizations:
None
Request Body schema: application/json
required
first_name
required
string
last_name
required
string
email
required
string
phone
string
address
string
linkedin_profile
string
current_employer
string
current_position
string
expected_salary
number
availability_date
string
right_to_work_uk
boolean
visa_required
boolean
visa_type
string
source
required
string
Enum: "WEBSITE" "REFERRAL" "LINKEDIN" "AGENCY" "JOB_BOARD" "DIRECT_APPLICATION" "OTHER"
source_details
string
notes
string
gdpr_consent
required
boolean

Responses

Request samples

Content type
application/json
{
  • "first_name": "John",
  • "last_name": "Doe",
  • "email": "john.doe@example.com",
  • "phone": "07912345678",
  • "address": "SW1A 1AA",
  • "linkedin_profile": "https://linkedin.com/in/johndoe",
  • "current_employer": "Acme Corp",
  • "current_position": "Senior Developer",
  • "expected_salary": 65000,
  • "availability_date": "2024-02-01",
  • "right_to_work_uk": true,
  • "visa_required": false,
  • "visa_type": "Tier 2",
  • "source": "WEBSITE",
  • "source_details": "Referred by Jane Smith",
  • "notes": "Additional notes...",
  • "gdpr_consent": true
}

Get list of candidates with filters

Authorizations:
None
query Parameters
status
string
Enum: "APPLIED" "SCREENING" "INTERVIEW_SCHEDULED" "INTERVIEWED" "OFFERED" "HIRED" "REJECTED" "WITHDRAWN"

Filter by candidate status

source
string
Enum: "WEBSITE" "REFERRAL" "LINKEDIN" "AGENCY" "JOB_BOARD" "DIRECT_APPLICATION" "OTHER"

Filter by candidate source

search
string
Example: search=john

Search by name, email, or current employer

right_to_work_uk
boolean
Example: right_to_work_uk=true

Filter by UK right to work status

visa_required
boolean
Example: visa_required=false

Filter by visa requirement

limit
number
Example: limit=20

Number of items per page

offset
number
Example: offset=0

Number of items to skip

Responses

Get a specific candidate by ID

Authorizations:
None
path Parameters
id
required
string <uuid>

Candidate ID

Responses

Submit a job application for a candidate

Authorizations:
None
path Parameters
candidateId
required
string <uuid>

Candidate ID

Responses

Get all applications for a candidate

Authorizations:
None
path Parameters
candidateId
required
string <uuid>

Candidate ID

Responses

Update candidate status

Authorizations:
None
path Parameters
candidateId
required
string <uuid>

Candidate ID

Responses

Get all interviews for a candidate

Authorizations:
None
path Parameters
candidateId
required
string <uuid>

Candidate ID

Responses

Get all offers for a candidate

Authorizations:
None
path Parameters
candidateId
required
string <uuid>

Candidate ID

Responses

Recruitment - Interviews

Interview scheduling and management

Schedule a new interview

Authorizations:
None
Request Body schema: application/json
required
application_id
required
string
candidate_id
required
string
interview_type
required
string
interview_round
number
scheduled_date
required
string
scheduled_time
string
duration_minutes
number
location
string
video_meeting_link
string
meeting_link
string
interviewer_ids
required
Array of strings
interview_agenda
string
candidate_notes
string

Responses

Request samples

Content type
application/json
{
  • "application_id": "uuid",
  • "candidate_id": "uuid",
  • "interview_type": "phone",
  • "interview_round": 1,
  • "scheduled_date": "2024-01-15T10:00:00Z",
  • "scheduled_time": "10:00",
  • "duration_minutes": 60,
  • "location": "Office - Meeting Room 1",
  • "video_meeting_link": "https://zoom.us/j/123456789",
  • "interviewer_ids": [
    ],
  • "interview_agenda": "Technical discussion, culture fit",
  • "candidate_notes": "Prepare portfolio"
}

Get list of interviews with filters

Authorizations:
None
query Parameters
status
string
Enum: "SCHEDULED" "COMPLETED" "CANCELLED" "NO_SHOW" "RESCHEDULED"

Filter by interview status

date
string <date>
Example: date=2024-01-15

Filter by interview date (YYYY-MM-DD)

interviewer_id
string
Example: interviewer_id=uuid

Filter by interviewer ID

candidate_id
string
Example: candidate_id=uuid

Filter by candidate ID

limit
number
Example: limit=20

Number of items per page

offset
number
Example: offset=0

Number of items to skip

Responses

Get interviews assigned to the current user

Authorizations:
None
query Parameters
date
string <date>

Filter by interview date (YYYY-MM-DD)

status
string
Enum: "SCHEDULED" "COMPLETED" "CANCELLED" "NO_SHOW" "RESCHEDULED"

Filter by interview status

Responses

Submit interview feedback

Authorizations:
None
path Parameters
id
required
string <uuid>

Interview ID

Request Body schema: application/json
required
technical_score
number
communication_score
number
cultural_fit_score
number
overall_score
required
number
recommendation
required
string
Enum: "STRONG_HIRE" "HIRE" "MAYBE" "NO_HIRE" "STRONG_NO_HIRE"
strengths
string
weaknesses
string
detailed_feedback
string
concerns
string
questions_asked
string
additional_notes
string

Responses

Request samples

Content type
application/json
{
  • "technical_score": 4.5,
  • "communication_score": 4,
  • "cultural_fit_score": 4.5,
  • "overall_score": 4.3,
  • "recommendation": "STRONG_HIRE",
  • "strengths": "Strong technical skills...",
  • "weaknesses": "Could improve on...",
  • "detailed_feedback": "Detailed feedback...",
  • "concerns": "No major concerns",
  • "questions_asked": "Asked about experience with...",
  • "additional_notes": "Additional notes..."
}

Reschedule an interview

Authorizations:
None
path Parameters
id
required
string <uuid>

Interview ID

Responses

Cancel an interview

Authorizations:
None
path Parameters
id
required
string <uuid>

Interview ID

Responses

Get upcoming interviews for the next 7 days

Authorizations:
None

Responses

Get interviews pending feedback from current user

Authorizations:
None

Responses

Recruitment - Offers

Job offers and negotiations

Create a new job offer

Authorizations:
None
Request Body schema: application/json
required
application_id
required
string
offer_type
required
string
position_title
required
string
department_id
string
salary_amount
required
number
salary_frequency
string
benefits
object
start_date
string
contract_length
number
probation_period
number
working_hours
number
holiday_entitlement
number
response_deadline
string

Responses

Request samples

Content type
application/json
{
  • "application_id": "uuid",
  • "offer_type": "full_time",
  • "position_title": "Senior Software Engineer",
  • "department_id": "uuid",
  • "salary_amount": 65000,
  • "salary_frequency": "annual",
  • "benefits": { },
  • "start_date": "2024-02-01",
  • "contract_length": 12,
  • "probation_period": 6,
  • "working_hours": 37.5,
  • "holiday_entitlement": 28,
  • "response_deadline": "2024-01-20"
}

Send a draft offer to candidate

Authorizations:
None
path Parameters
id
required
string <uuid>

Offer ID

Responses

Accept a job offer

Authorizations:
None
path Parameters
id
required
string <uuid>

Offer ID

Request Body schema: application/json
required
accepted_terms
required
boolean
comments
string

Responses

Request samples

Content type
application/json
{
  • "accepted_terms": true,
  • "comments": "Additional comments..."
}

Decline a job offer

Authorizations:
None
path Parameters
id
required
string <uuid>

Offer ID

Request Body schema: application/json
required
decline_reason
required
string
feedback
string

Responses

Request samples

Content type
application/json
{
  • "decline_reason": "Better opportunity elsewhere",
  • "feedback": "Additional feedback..."
}

Withdraw a job offer

Authorizations:
None
path Parameters
id
required
string <uuid>

Offer ID

Responses

Extend offer expiry date

Authorizations:
None
path Parameters
id
required
string <uuid>

Offer ID

Responses

Update offer terms during negotiation

Authorizations:
None
path Parameters
id
required
string <uuid>

Offer ID

Responses

Get all pending offers

Authorizations:
None

Responses

Get offers expiring in next 7 days

Authorizations:
None

Responses

Recruitment - Publishing Platforms

Job publishing platform management

Create a new job publishing platform

Authorizations:
None
Request Body schema: application/json
required
platform_name
required
string
platform_code
required
string
platform_type
required
string
Enum: "social" "job_board" "internal" "agency" "government" "university" "other"
website_url
string
api_endpoint
string
api_key
string
api_secret
string
is_active
boolean
is_free
boolean
cost_per_posting
number
billing_period
string
Enum: "per_posting" "daily" "weekly" "monthly" "quarterly" "annual"
max_postings_per_period
number
features
object
integration_status
string
Enum: "manual" "api_integrated" "webhook"

Responses

Request samples

Content type
application/json
{
  • "platform_name": "LinkedIn Jobs",
  • "platform_code": "linkedin",
  • "platform_type": "social",
  • "api_key": "encrypted_api_key",
  • "api_secret": "encrypted_api_secret",
  • "is_active": true,
  • "is_free": false,
  • "cost_per_posting": 250,
  • "billing_period": "per_posting",
  • "max_postings_per_period": 100,
  • "features": {
    },
  • "integration_status": "api_integrated"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "platform_name": "string",
  • "platform_code": "string",
  • "platform_type": "string",
  • "website_url": "string",
  • "api_endpoint": "string",
  • "is_active": true,
  • "is_free": true,
  • "cost_per_posting": 0,
  • "billing_period": "string",
  • "max_postings_per_period": 0,
  • "features": { },
  • "integration_status": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by": "string",
  • "updated_by": "string",
  • "active_postings_count": 0,
  • "total_postings_count": 0
}

Get all job publishing platforms

Authorizations:
None
query Parameters
platform_type
string
is_active
boolean
limit
number
page
number

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get platform statistics

Authorizations:
None
query Parameters
platform_id
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get a job publishing platform by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "platform_name": "string",
  • "platform_code": "string",
  • "platform_type": "string",
  • "website_url": "string",
  • "api_endpoint": "string",
  • "is_active": true,
  • "is_free": true,
  • "cost_per_posting": 0,
  • "billing_period": "string",
  • "max_postings_per_period": 0,
  • "features": { },
  • "integration_status": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by": "string",
  • "updated_by": "string",
  • "active_postings_count": 0,
  • "total_postings_count": 0
}

Update a job publishing platform

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
platform_name
string
platform_type
string
Enum: "social" "job_board" "internal" "agency" "government" "university" "other"
website_url
string
api_endpoint
string
api_key
string
api_secret
string
is_active
boolean
is_free
boolean
cost_per_posting
number
billing_period
string
Enum: "per_posting" "daily" "weekly" "monthly" "quarterly" "annual"
max_postings_per_period
number
features
object
integration_status
string
Enum: "manual" "api_integrated" "webhook"

Responses

Request samples

Content type
application/json
{
  • "platform_name": "LinkedIn Jobs Premium",
  • "platform_type": "social",
  • "api_key": "string",
  • "api_secret": "string",
  • "is_active": true,
  • "is_free": false,
  • "cost_per_posting": 350,
  • "billing_period": "per_posting",
  • "max_postings_per_period": 150,
  • "features": { },
  • "integration_status": "manual"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "platform_name": "string",
  • "platform_code": "string",
  • "platform_type": "string",
  • "website_url": "string",
  • "api_endpoint": "string",
  • "is_active": true,
  • "is_free": true,
  • "cost_per_posting": 0,
  • "billing_period": "string",
  • "max_postings_per_period": 0,
  • "features": { },
  • "integration_status": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by": "string",
  • "updated_by": "string",
  • "active_postings_count": 0,
  • "total_postings_count": 0
}

Delete a job publishing platform

Authorizations:
None
path Parameters
id
required
string

Responses

Recruitment - Job Publications

Job posting publication tracking

Publish a job posting to a platform

Authorizations:
None
Request Body schema: application/json
required
job_posting_id
required
string
platform_id
required
string
publication_status
string
Enum: "pending" "published" "expired" "removed" "failed" "scheduled"
scheduled_publish_date
string
expiry_date
string
external_posting_id
string
external_posting_url
string
posting_cost
number
currency
string
auto_renew
boolean
publication_data
object

Responses

Request samples

Content type
application/json
{
  • "job_posting_id": "uuid",
  • "platform_id": "uuid",
  • "publication_status": "pending",
  • "scheduled_publish_date": "2024-01-15",
  • "expiry_date": "2024-02-15",
  • "external_posting_id": "EXT-123456",
  • "external_posting_url": "https://linkedin.com/jobs/view/123456",
  • "posting_cost": 250,
  • "currency": "GBP",
  • "auto_renew": false,
  • "publication_data": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "job_posting_id": "string",
  • "platform_id": "string",
  • "publication_status": "string",
  • "published_at": "2019-08-24T14:15:22Z",
  • "scheduled_publish_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "actual_expiry_date": "2019-08-24T14:15:22Z",
  • "external_posting_id": "string",
  • "external_posting_url": "string",
  • "posting_cost": 0,
  • "currency": "string",
  • "performance_metrics": { },
  • "publication_data": { },
  • "error_message": "string",
  • "auto_renew": true,
  • "renewal_count": 0,
  • "last_sync_at": "2019-08-24T14:15:22Z",
  • "view_count": 0,
  • "click_count": 0,
  • "application_count": 0,
  • "conversion_rate": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by": "string",
  • "updated_by": "string",
  • "platform": { },
  • "job_posting": { }
}

Get all job posting publications

Authorizations:
None
query Parameters
auto_renew
boolean
expiring_before
string
published_before
string
published_after
string
job_posting_id
string
platform_id
string
status
string
Enum: "pending" "published" "expired" "removed" "failed" "scheduled"
limit
number
page
number

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Publish a job posting to multiple platforms

Authorizations:
None
Request Body schema: application/json
required
job_posting_id
required
string
platform_ids
required
Array of strings

Array of platform IDs to publish to

scheduled_publish_date
string
expiry_date
string
auto_renew
boolean

Responses

Request samples

Content type
application/json
{
  • "job_posting_id": "uuid",
  • "platform_ids": [
    ],
  • "scheduled_publish_date": "2024-01-15",
  • "expiry_date": "2024-02-15",
  • "auto_renew": false
}

Response samples

Content type
application/json
[
  • {
    }
]

Get publication summary for a job posting

Authorizations:
None
path Parameters
jobPostingId
required
string

Responses

Response samples

Content type
application/json
{
  • "job_posting_id": "string",
  • "posting_title": "string",
  • "total_platforms": 0,
  • "active_platforms": 0,
  • "total_cost": 0,
  • "total_views": 0,
  • "total_clicks": 0,
  • "total_applications": 0,
  • "average_conversion_rate": 0,
  • "platform_breakdown": [
    ]
}

Get a job posting publication by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "job_posting_id": "string",
  • "platform_id": "string",
  • "publication_status": "string",
  • "published_at": "2019-08-24T14:15:22Z",
  • "scheduled_publish_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "actual_expiry_date": "2019-08-24T14:15:22Z",
  • "external_posting_id": "string",
  • "external_posting_url": "string",
  • "posting_cost": 0,
  • "currency": "string",
  • "performance_metrics": { },
  • "publication_data": { },
  • "error_message": "string",
  • "auto_renew": true,
  • "renewal_count": 0,
  • "last_sync_at": "2019-08-24T14:15:22Z",
  • "view_count": 0,
  • "click_count": 0,
  • "application_count": 0,
  • "conversion_rate": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by": "string",
  • "updated_by": "string",
  • "platform": { },
  • "job_posting": { }
}

Update a job posting publication

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
publication_status
string
Enum: "pending" "published" "expired" "removed" "failed" "scheduled"
published_at
string
expiry_date
string
actual_expiry_date
string
external_posting_id
string
external_posting_url
string
posting_cost
number
auto_renew
boolean
performance_metrics
object
publication_data
object
error_message
string

Responses

Request samples

Content type
application/json
{
  • "publication_status": "pending",
  • "published_at": "2024-01-20",
  • "expiry_date": "2024-02-20",
  • "actual_expiry_date": "2024-02-25",
  • "external_posting_id": "EXT-789012",
  • "external_posting_url": "https://indeed.com/viewjob?jk=789012",
  • "posting_cost": 300,
  • "auto_renew": true,
  • "performance_metrics": { },
  • "publication_data": { },
  • "error_message": "Failed to authenticate with platform API"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "job_posting_id": "string",
  • "platform_id": "string",
  • "publication_status": "string",
  • "published_at": "2019-08-24T14:15:22Z",
  • "scheduled_publish_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "actual_expiry_date": "2019-08-24T14:15:22Z",
  • "external_posting_id": "string",
  • "external_posting_url": "string",
  • "posting_cost": 0,
  • "currency": "string",
  • "performance_metrics": { },
  • "publication_data": { },
  • "error_message": "string",
  • "auto_renew": true,
  • "renewal_count": 0,
  • "last_sync_at": "2019-08-24T14:15:22Z",
  • "view_count": 0,
  • "click_count": 0,
  • "application_count": 0,
  • "conversion_rate": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by": "string",
  • "updated_by": "string",
  • "platform": { },
  • "job_posting": { }
}

Delete a job posting publication

Authorizations:
None
path Parameters
id
required
string

Responses

Update publication statistics

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
view_count
number
click_count
number
application_count
number
conversion_rate
number

Responses

Request samples

Content type
application/json
{
  • "view_count": 1500,
  • "click_count": 150,
  • "application_count": 25,
  • "conversion_rate": 1.67
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "job_posting_id": "string",
  • "platform_id": "string",
  • "publication_status": "string",
  • "published_at": "2019-08-24T14:15:22Z",
  • "scheduled_publish_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "actual_expiry_date": "2019-08-24T14:15:22Z",
  • "external_posting_id": "string",
  • "external_posting_url": "string",
  • "posting_cost": 0,
  • "currency": "string",
  • "performance_metrics": { },
  • "publication_data": { },
  • "error_message": "string",
  • "auto_renew": true,
  • "renewal_count": 0,
  • "last_sync_at": "2019-08-24T14:15:22Z",
  • "view_count": 0,
  • "click_count": 0,
  • "application_count": 0,
  • "conversion_rate": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by": "string",
  • "updated_by": "string",
  • "platform": { },
  • "job_posting": { }
}

Sync publication data with external platform

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "job_posting_id": "string",
  • "platform_id": "string",
  • "publication_status": "string",
  • "published_at": "2019-08-24T14:15:22Z",
  • "scheduled_publish_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "actual_expiry_date": "2019-08-24T14:15:22Z",
  • "external_posting_id": "string",
  • "external_posting_url": "string",
  • "posting_cost": 0,
  • "currency": "string",
  • "performance_metrics": { },
  • "publication_data": { },
  • "error_message": "string",
  • "auto_renew": true,
  • "renewal_count": 0,
  • "last_sync_at": "2019-08-24T14:15:22Z",
  • "view_count": 0,
  • "click_count": 0,
  • "application_count": 0,
  • "conversion_rate": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by": "string",
  • "updated_by": "string",
  • "platform": { },
  • "job_posting": { }
}

Time - Attendance

Clock in/out and attendance records

Create a new attendance record

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

shift_id
string

Scheduled shift ID

clock_in
required
string

Clock in time

clock_out
string

Clock out time

source
string
Default: "TERMINAL"
Enum: "MOBILE" "TERMINAL" "WEB" "MANUAL" "OTHER"

Attendance source

latitude
number

Latitude for location tracking

longitude
number

Longitude for location tracking

flagged
boolean

Whether the record is flagged for review

Responses

Request samples

Content type
application/json
{
  • "employee_id": "550e8400-e29b-41d4-a716-446655440000",
  • "shift_id": "550e8400-e29b-41d4-a716-446655440000",
  • "clock_in": "2024-01-15T09:00:00.000Z",
  • "clock_out": "2024-01-15T17:00:00.000Z",
  • "source": "MOBILE",
  • "latitude": 51.5074,
  • "longitude": -0.1278,
  • "flagged": false
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "shift_id": { },
  • "clock_in": "2019-08-24T14:15:22Z",
  • "clock_out": { },
  • "source": "MOBILE",
  • "latitude": { },
  • "longitude": { },
  • "flagged": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "scheduled_shift": { }
}

Get all attendance records with optional filters

Authorizations:
None
query Parameters
employeeId
string

Filter by employee ID

startDate
string

Filter by start date (ISO string)

endDate
string

Filter by end date (ISO string)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Clock in an employee

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

shift_id
string

Scheduled shift ID

source
string
Default: "TERMINAL"
Enum: "MOBILE" "TERMINAL" "WEB" "MANUAL" "OTHER"

Attendance source

latitude
number

Latitude for location tracking

longitude
number

Longitude for location tracking

Responses

Request samples

Content type
application/json
{
  • "employee_id": "550e8400-e29b-41d4-a716-446655440000",
  • "shift_id": "550e8400-e29b-41d4-a716-446655440000",
  • "source": "MOBILE",
  • "latitude": 51.5074,
  • "longitude": -0.1278
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "shift_id": { },
  • "clock_in": "2019-08-24T14:15:22Z",
  • "clock_out": { },
  • "source": "MOBILE",
  • "latitude": { },
  • "longitude": { },
  • "flagged": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "scheduled_shift": { }
}

Clock out an employee

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
latitude
number

Latitude for location tracking

longitude
number

Longitude for location tracking

Responses

Request samples

Content type
application/json
{
  • "latitude": 51.5074,
  • "longitude": -0.1278
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "shift_id": { },
  • "clock_in": "2019-08-24T14:15:22Z",
  • "clock_out": { },
  • "source": "MOBILE",
  • "latitude": { },
  • "longitude": { },
  • "flagged": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "scheduled_shift": { }
}

Get attendance records by employee ID

Authorizations:
None
path Parameters
employeeId
required
string
query Parameters
startDate
string

Filter by start date (ISO string)

endDate
string

Filter by end date (ISO string)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get an attendance record by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "shift_id": { },
  • "clock_in": "2019-08-24T14:15:22Z",
  • "clock_out": { },
  • "source": "MOBILE",
  • "latitude": { },
  • "longitude": { },
  • "flagged": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "scheduled_shift": { }
}

Update an attendance record

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
clock_in
string

Clock in time

clock_out
string

Clock out time

source
string
Enum: "MOBILE" "TERMINAL" "WEB" "MANUAL" "OTHER"

Attendance source

latitude
number

Latitude for location tracking

longitude
number

Longitude for location tracking

flagged
boolean

Whether the record is flagged for review

Responses

Request samples

Content type
application/json
{
  • "clock_in": "2024-01-15T09:00:00.000Z",
  • "clock_out": "2024-01-15T17:00:00.000Z",
  • "source": "MOBILE",
  • "latitude": 51.5074,
  • "longitude": -0.1278,
  • "flagged": false
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "shift_id": { },
  • "clock_in": "2019-08-24T14:15:22Z",
  • "clock_out": { },
  • "source": "MOBILE",
  • "latitude": { },
  • "longitude": { },
  • "flagged": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "scheduled_shift": { }
}

Delete an attendance record

Authorizations:
None
path Parameters
id
required
string

Responses

Test endpoint for attendance record module

Authorizations:
None

Responses

Time - Timesheets

Timesheet submission and approval

Create a new timesheet

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

period_start
required
string

Period start date

period_end
required
string

Period end date

total_work_hours
required
number >= 0

Total work hours

total_overtime_hours
required
number >= 0

Total overtime hours

total_leave_hours
required
number >= 0

Total leave hours

status
string
Default: "OPEN"
Enum: "OPEN" "SUBMITTED" "APPROVED" "LOCKED"

Timesheet status

Responses

Request samples

Content type
application/json
{
  • "employee_id": "550e8400-e29b-41d4-a716-446655440000",
  • "period_start": "2024-01-01T00:00:00.000Z",
  • "period_end": "2024-01-07T23:59:59.000Z",
  • "total_work_hours": 40,
  • "total_overtime_hours": 5,
  • "total_leave_hours": 8,
  • "status": "OPEN"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "total_work_hours": 0,
  • "total_overtime_hours": 0,
  • "total_leave_hours": 0,
  • "status": "OPEN",
  • "locked_at": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { }
}

Get all timesheets with optional filters

Authorizations:
None
query Parameters
employeeId
string

Filter by employee ID

status
string
Enum: "OPEN" "SUBMITTED" "APPROVED" "LOCKED"

Filter by status

startDate
string

Filter by start date (ISO string)

endDate
string

Filter by end date (ISO string)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Generate a timesheet from attendance records

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

period_start
required
string

Period start date

period_end
required
string

Period end date

Responses

Request samples

Content type
application/json
{
  • "employee_id": "550e8400-e29b-41d4-a716-446655440000",
  • "period_start": "2024-01-01T00:00:00.000Z",
  • "period_end": "2024-01-07T23:59:59.000Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "total_work_hours": 0,
  • "total_overtime_hours": 0,
  • "total_leave_hours": 0,
  • "status": "OPEN",
  • "locked_at": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { }
}

Get timesheets by employee ID

Authorizations:
None
path Parameters
employeeId
required
string
query Parameters
status
string
Enum: "OPEN" "SUBMITTED" "APPROVED" "LOCKED"

Filter by status

year
number

Filter by year

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get timesheet statistics for an employee

Authorizations:
None
path Parameters
employeeId
required
string
query Parameters
year
number

Year for statistics (default: current year)

Responses

Response samples

Content type
application/json
{
  • "totalTimesheets": 0,
  • "draftTimesheets": 0,
  • "submittedTimesheets": 0,
  • "approvedTimesheets": 0,
  • "rejectedTimesheets": 0,
  • "totalApprovedHours": 0,
  • "totalOvertimeHours": 0,
  • "averageHoursPerTimesheet": 0
}

Get a timesheet by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "total_work_hours": 0,
  • "total_overtime_hours": 0,
  • "total_leave_hours": 0,
  • "status": "OPEN",
  • "locked_at": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { }
}

Update a timesheet (only in DRAFT status)

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
period_start
string

Period start date

period_end
string

Period end date

total_work_hours
number >= 0

Total work hours

total_overtime_hours
number >= 0

Total overtime hours

total_leave_hours
number >= 0

Total leave hours

status
string
Enum: "OPEN" "SUBMITTED" "APPROVED" "LOCKED"

Timesheet status

Responses

Request samples

Content type
application/json
{
  • "period_start": "2024-01-01T00:00:00.000Z",
  • "period_end": "2024-01-07T23:59:59.000Z",
  • "total_work_hours": 40,
  • "total_overtime_hours": 5,
  • "total_leave_hours": 8,
  • "status": "OPEN"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "total_work_hours": 0,
  • "total_overtime_hours": 0,
  • "total_leave_hours": 0,
  • "status": "OPEN",
  • "locked_at": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { }
}

Delete a timesheet (only in DRAFT status)

Authorizations:
None
path Parameters
id
required
string

Responses

Submit a timesheet for approval

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
comments
string

Comments for submission

Responses

Request samples

Content type
application/json
{
  • "comments": "Ready for approval"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "total_work_hours": 0,
  • "total_overtime_hours": 0,
  • "total_leave_hours": 0,
  • "status": "OPEN",
  • "locked_at": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { }
}

Approve or reject a timesheet

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
status
required
string
Enum: "APPROVED" "LOCKED"

Approval status

comments
string

Approval comments

Responses

Request samples

Content type
application/json
{
  • "status": "APPROVED",
  • "comments": "Approved for payroll processing"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "total_work_hours": 0,
  • "total_overtime_hours": 0,
  • "total_leave_hours": 0,
  • "status": "OPEN",
  • "locked_at": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { }
}

Test endpoint for timesheet module

Authorizations:
None

Responses

Time - Leave Management

Leave requests, types, and balances

Create a new leave type

Authorizations:
JWT-auth
Request Body schema: application/json
required
code
required
string [ 1 .. 50 ] characters

Short code for the leave type

name
required
string [ 1 .. 255 ] characters

Human-readable name

statutory
boolean
Default: false

Whether the leave is statutory under UK law

max_days_per_year
number >= 0

Maximum entitlement in days per leave year

accrual_based
boolean
Default: false

Whether entitlement accrues over time

paid
boolean
Default: true

Whether the leave is normally paid

hr_rate_code
string <= 50 characters

Reference into HR_RATE table for pay calculation

description
string <= 1000 characters

Description of the leave type

template_id
string

Reference to the template it was created from

custom_rules
object
Default: {}

Custom rules specific to this tenant

is_active
boolean
Default: true

Whether the leave type is active

Responses

Request samples

Content type
application/json
{
  • "code": "ANNUAL",
  • "name": "Annual Leave",
  • "statutory": true,
  • "max_days_per_year": 28,
  • "accrual_based": true,
  • "paid": true,
  • "hr_rate_code": "SSP",
  • "description": "UK statutory annual leave entitlement",
  • "template_id": "123e4567-e89b-12d3-a456-426614174000",
  • "custom_rules": {
    },
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "tenant_id": "123e4567-e89b-12d3-a456-426614174000",
  • "template_id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "ANNUAL",
  • "name": "Annual Leave",
  • "statutory": true,
  • "max_days_per_year": 28,
  • "accrual_based": true,
  • "paid": true,
  • "hr_rate_code": "SSP",
  • "description": "UK statutory annual leave entitlement",
  • "custom_rules": { },
  • "is_active": true,
  • "created_at": "2024-01-01T00:00:00Z",
  • "updated_at": "2024-01-01T00:00:00Z",
  • "created_by_id": "123e4567-e89b-12d3-a456-426614174000",
  • "updated_by_id": "123e4567-e89b-12d3-a456-426614174000",
  • "created_by": "admin@example.com",
  • "updated_by": "admin@example.com"
}

Get all leave types

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get leave type by ID

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Leave type ID

Responses

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "tenant_id": "123e4567-e89b-12d3-a456-426614174000",
  • "template_id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "ANNUAL",
  • "name": "Annual Leave",
  • "statutory": true,
  • "max_days_per_year": 28,
  • "accrual_based": true,
  • "paid": true,
  • "hr_rate_code": "SSP",
  • "description": "UK statutory annual leave entitlement",
  • "custom_rules": { },
  • "is_active": true,
  • "created_at": "2024-01-01T00:00:00Z",
  • "updated_at": "2024-01-01T00:00:00Z",
  • "created_by_id": "123e4567-e89b-12d3-a456-426614174000",
  • "updated_by_id": "123e4567-e89b-12d3-a456-426614174000",
  • "created_by": "admin@example.com",
  • "updated_by": "admin@example.com"
}

Update a leave type

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Leave type ID

Request Body schema: application/json
required
name
string [ 1 .. 255 ] characters

Human-readable name

statutory
boolean

Whether the leave is statutory under UK law

max_days_per_year
number >= 0

Maximum entitlement in days per leave year

accrual_based
boolean

Whether entitlement accrues over time

paid
boolean

Whether the leave is normally paid

hr_rate_code
string <= 50 characters

Reference into HR_RATE table for pay calculation

description
string <= 1000 characters

Description of the leave type

custom_rules
object

Custom rules specific to this tenant

is_active
boolean

Whether the leave type is active

Responses

Request samples

Content type
application/json
{
  • "name": "Annual Leave",
  • "statutory": true,
  • "max_days_per_year": 28,
  • "accrual_based": true,
  • "paid": true,
  • "hr_rate_code": "SSP",
  • "description": "UK statutory annual leave entitlement",
  • "custom_rules": {
    },
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "tenant_id": "123e4567-e89b-12d3-a456-426614174000",
  • "template_id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "ANNUAL",
  • "name": "Annual Leave",
  • "statutory": true,
  • "max_days_per_year": 28,
  • "accrual_based": true,
  • "paid": true,
  • "hr_rate_code": "SSP",
  • "description": "UK statutory annual leave entitlement",
  • "custom_rules": { },
  • "is_active": true,
  • "created_at": "2024-01-01T00:00:00Z",
  • "updated_at": "2024-01-01T00:00:00Z",
  • "created_by_id": "123e4567-e89b-12d3-a456-426614174000",
  • "updated_by_id": "123e4567-e89b-12d3-a456-426614174000",
  • "created_by": "admin@example.com",
  • "updated_by": "admin@example.com"
}

Delete a leave type

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Leave type ID

Responses

Get leave type by code

Authorizations:
JWT-auth
path Parameters
code
required
string

Leave type code

Responses

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "tenant_id": "123e4567-e89b-12d3-a456-426614174000",
  • "template_id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "ANNUAL",
  • "name": "Annual Leave",
  • "statutory": true,
  • "max_days_per_year": 28,
  • "accrual_based": true,
  • "paid": true,
  • "hr_rate_code": "SSP",
  • "description": "UK statutory annual leave entitlement",
  • "custom_rules": { },
  • "is_active": true,
  • "created_at": "2024-01-01T00:00:00Z",
  • "updated_at": "2024-01-01T00:00:00Z",
  • "created_by_id": "123e4567-e89b-12d3-a456-426614174000",
  • "updated_by_id": "123e4567-e89b-12d3-a456-426614174000",
  • "created_by": "admin@example.com",
  • "updated_by": "admin@example.com"
}

Get leave type statistics

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Leave type ID

Responses

Response samples

Content type
application/json
{
  • "leaveRequestsCount": 0,
  • "totalDaysRequested": 0,
  • "approvedDaysCount": 0,
  • "pendingDaysCount": 0
}

Create a new leave request

Authorizations:
None
Request Body schema: application/json
required
leave_type_id
required
string
start_date
required
string
end_date
required
string
duration_hours
required
number
comments
string

Responses

Request samples

Content type
application/json
{
  • "leave_type_id": "uuid",
  • "start_date": "2024-03-15",
  • "end_date": "2024-03-17",
  • "duration_hours": 24,
  • "comments": "Family vacation"
}

Response samples

Content type
application/json
{
  • "id": "uuid",
  • "leave_type": "Annual Leave",
  • "start_date": "2024-03-15",
  • "end_date": "2024-03-17",
  • "duration_hours": 24,
  • "status": "PENDING",
  • "comments": "Family vacation",
  • "submitted_at": "2024-03-10T09:00:00Z",
  • "approved_at": "2024-03-11T14:30:00Z"
}

Get all leave requests with optional filters

Authorizations:
None
query Parameters
employeeId
string

Filter by employee ID

status
string
Enum: "PENDING" "APPROVED" "REJECTED" "CANCELLED"

Filter by status

startDate
string

Filter by start date (ISO string)

endDate
string

Filter by end date (ISO string)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get leave requests by employee ID

Authorizations:
None
path Parameters
employeeId
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get leave statistics for an employee

Authorizations:
None
path Parameters
employeeId
required
string
query Parameters
year
number

Year for statistics (default: current year)

Responses

Response samples

Content type
application/json
{
  • "totalRequests": 0,
  • "pendingRequests": 0,
  • "approvedRequests": 0,
  • "rejectedRequests": 0,
  • "totalApprovedHours": 0,
  • "totalPendingHours": 0
}

Get a leave request by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "uuid",
  • "leave_type": "Annual Leave",
  • "start_date": "2024-03-15",
  • "end_date": "2024-03-17",
  • "duration_hours": 24,
  • "status": "PENDING",
  • "comments": "Family vacation",
  • "submitted_at": "2024-03-10T09:00:00Z",
  • "approved_at": "2024-03-11T14:30:00Z"
}

Update a leave request (only in PENDING status)

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
start_datetime
string

Leave start date and time

end_datetime
string

Leave end date and time

duration_hours
number >= 0.1

Duration in hours

comments
string

Comments for the leave request

Responses

Request samples

Content type
application/json
{
  • "start_datetime": "2024-01-15T09:00:00.000Z",
  • "end_datetime": "2024-01-19T17:00:00.000Z",
  • "duration_hours": 40,
  • "comments": "Family vacation"
}

Response samples

Content type
application/json
{
  • "id": "uuid",
  • "leave_type": "Annual Leave",
  • "start_date": "2024-03-15",
  • "end_date": "2024-03-17",
  • "duration_hours": 24,
  • "status": "PENDING",
  • "comments": "Family vacation",
  • "submitted_at": "2024-03-10T09:00:00Z",
  • "approved_at": "2024-03-11T14:30:00Z"
}

Delete a leave request (only in PENDING status)

Authorizations:
None
path Parameters
id
required
string

Responses

Approve or reject a leave request

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
status
required
string
Enum: "APPROVED" "REJECTED"

Approval status

comments
string

Approval comments

Responses

Request samples

Content type
application/json
{
  • "status": "APPROVED",
  • "comments": "Approved for the requested dates"
}

Response samples

Content type
application/json
{
  • "id": "uuid",
  • "leave_type": "Annual Leave",
  • "start_date": "2024-03-15",
  • "end_date": "2024-03-17",
  • "duration_hours": 24,
  • "status": "PENDING",
  • "comments": "Family vacation",
  • "submitted_at": "2024-03-10T09:00:00Z",
  • "approved_at": "2024-03-11T14:30:00Z"
}

Cancel a leave request

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "uuid",
  • "leave_type": "Annual Leave",
  • "start_date": "2024-03-15",
  • "end_date": "2024-03-17",
  • "duration_hours": 24,
  • "status": "PENDING",
  • "comments": "Family vacation",
  • "submitted_at": "2024-03-10T09:00:00Z",
  • "approved_at": "2024-03-11T14:30:00Z"
}

Test endpoint for leave request module

Authorizations:
None

Responses

Time - Overtime

Overtime requests and approvals

Create a new overtime request

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

start_datetime
required
string

Overtime start date and time

end_datetime
required
string

Overtime end date and time

hours
required
number >= 0.1

Overtime hours

reason
string

Reason for overtime

Responses

Request samples

Content type
application/json
{
  • "employee_id": "550e8400-e29b-41d4-a716-446655440000",
  • "start_datetime": "2024-01-15T18:00:00.000Z",
  • "end_datetime": "2024-01-15T20:00:00.000Z",
  • "hours": 2,
  • "reason": "Project deadline"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "start_datetime": "2019-08-24T14:15:22Z",
  • "end_datetime": "2019-08-24T14:15:22Z",
  • "hours": 0,
  • "status": "PENDING",
  • "approver_id": { },
  • "approved_at": { },
  • "reason": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { }
}

Get all overtime requests with optional filters

Authorizations:
None
query Parameters
employeeId
string

Filter by employee ID

status
string
Enum: "PENDING" "APPROVED" "REJECTED" "CANCELLED"

Filter by status

startDate
string

Filter by start date (ISO string)

endDate
string

Filter by end date (ISO string)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get overtime requests by employee ID

Authorizations:
None
path Parameters
employeeId
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get overtime statistics for an employee

Authorizations:
None
path Parameters
employeeId
required
string
query Parameters
year
number

Year for statistics (default: current year)

Responses

Response samples

Content type
application/json
{
  • "totalRequests": 0,
  • "pendingRequests": 0,
  • "approvedRequests": 0,
  • "rejectedRequests": 0,
  • "totalApprovedHours": 0,
  • "totalPendingHours": 0
}

Get general overtime statistics

Authorizations:
None
query Parameters
startDate
string

Filter by start date (ISO string)

endDate
string

Filter by end date (ISO string)

Responses

Response samples

Content type
application/json
{
  • "totalRequests": 0,
  • "totalApprovedHours": 0,
  • "averageHoursPerRequest": 0,
  • "employeeCount": 0
}

Get an overtime request by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "start_datetime": "2019-08-24T14:15:22Z",
  • "end_datetime": "2019-08-24T14:15:22Z",
  • "hours": 0,
  • "status": "PENDING",
  • "approver_id": { },
  • "approved_at": { },
  • "reason": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { }
}

Update an overtime request (only in PENDING status)

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
start_datetime
string

Overtime start date and time

end_datetime
string

Overtime end date and time

hours
number >= 0.1

Overtime hours

reason
string

Reason for overtime

Responses

Request samples

Content type
application/json
{
  • "start_datetime": "2024-01-15T18:00:00.000Z",
  • "end_datetime": "2024-01-15T20:00:00.000Z",
  • "hours": 2,
  • "reason": "Project deadline"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "start_datetime": "2019-08-24T14:15:22Z",
  • "end_datetime": "2019-08-24T14:15:22Z",
  • "hours": 0,
  • "status": "PENDING",
  • "approver_id": { },
  • "approved_at": { },
  • "reason": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { }
}

Delete an overtime request (only in PENDING status)

Authorizations:
None
path Parameters
id
required
string

Responses

Approve or reject an overtime request

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
status
required
string
Enum: "APPROVED" "REJECTED"

Approval status

comments
string

Approval comments

Responses

Request samples

Content type
application/json
{
  • "status": "APPROVED",
  • "comments": "Approved for overtime work"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "start_datetime": "2019-08-24T14:15:22Z",
  • "end_datetime": "2019-08-24T14:15:22Z",
  • "hours": 0,
  • "status": "PENDING",
  • "approver_id": { },
  • "approved_at": { },
  • "reason": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { }
}

Cancel an overtime request

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "start_datetime": "2019-08-24T14:15:22Z",
  • "end_datetime": "2019-08-24T14:15:22Z",
  • "hours": 0,
  • "status": "PENDING",
  • "approver_id": { },
  • "approved_at": { },
  • "reason": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { }
}

Test endpoint for overtime request module

Authorizations:
None

Responses

Time - Shifts

Shift templates and scheduling

Create a new shift template

Authorizations:
JWT-auth
Request Body schema: application/json
required
company_id
required
string

Company ID

name
required
string [ 1 .. 255 ] characters

Template name

start_minutes
required
number [ 0 .. 1440 ]

Shift start time as minutes from 00:00

end_minutes
required
number [ 0 .. 2880 ]

Shift end time as minutes from 00:00 (wrap > 1440 for overnight)

break_minutes
number
Default: 0

Paid/unpaid break length in minutes

weekly_pattern
string

Weekly pattern in ISO-8601 RRULE or cron-like string

is_night_shift
boolean
Default: false

Whether this is a night shift

notes
string

Additional notes

Responses

Request samples

Content type
application/json
{
  • "company_id": "550e8400-e29b-41d4-a716-446655440000",
  • "name": "Early Shift",
  • "start_minutes": 540,
  • "end_minutes": 1020,
  • "break_minutes": 30,
  • "weekly_pattern": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR",
  • "is_night_shift": false,
  • "notes": "Standard office hours"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "name": "string",
  • "start_minutes": 0,
  • "end_minutes": 0,
  • "break_minutes": 0,
  • "weekly_pattern": { },
  • "is_night_shift": true,
  • "notes": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Get all shift templates

Authorizations:
JWT-auth
query Parameters
companyId
string

Filter by company ID

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get shift template by ID

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Shift template ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "name": "string",
  • "start_minutes": 0,
  • "end_minutes": 0,
  • "break_minutes": 0,
  • "weekly_pattern": { },
  • "is_night_shift": true,
  • "notes": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Update a shift template

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Shift template ID

Request Body schema: application/json
required
name
string [ 1 .. 255 ] characters

Template name

start_minutes
number [ 0 .. 1440 ]

Shift start time as minutes from 00:00

end_minutes
number [ 0 .. 2880 ]

Shift end time as minutes from 00:00 (wrap > 1440 for overnight)

break_minutes
number

Paid/unpaid break length in minutes

weekly_pattern
string

Weekly pattern in ISO-8601 RRULE or cron-like string

is_night_shift
boolean

Whether this is a night shift

notes
string

Additional notes

Responses

Request samples

Content type
application/json
{
  • "name": "Early Shift",
  • "start_minutes": 540,
  • "end_minutes": 1020,
  • "break_minutes": 30,
  • "weekly_pattern": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR",
  • "is_night_shift": false,
  • "notes": "Standard office hours"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "name": "string",
  • "start_minutes": 0,
  • "end_minutes": 0,
  • "break_minutes": 0,
  • "weekly_pattern": { },
  • "is_night_shift": true,
  • "notes": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Delete a shift template

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Shift template ID

Responses

Get shift template statistics

Authorizations:
JWT-auth
path Parameters
id
required
string <uuid>

Shift template ID

Responses

Response samples

Content type
application/json
{
  • "scheduledShiftsCount": 0,
  • "totalHours": 0,
  • "breakHours": 0,
  • "workingHours": 0
}

Create a new scheduled shift

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

shift_template_id
required
string

Shift template ID

start_datetime
required
string

Shift start datetime

end_datetime
required
string

Shift end datetime

status
string
Default: "PLANNED"
Enum: "PLANNED" "CONFIRMED" "COMPLETED" "CANCELLED"

Shift status

remarks
string

Special remarks for this shift

Responses

Request samples

Content type
application/json
{
  • "employee_id": "550e8400-e29b-41d4-a716-446655440000",
  • "shift_template_id": "550e8400-e29b-41d4-a716-446655440000",
  • "start_datetime": "2024-01-15T09:00:00.000Z",
  • "end_datetime": "2024-01-15T17:00:00.000Z",
  • "status": "PLANNED",
  • "remarks": "Training session at 2 PM"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "shift_template_id": "string",
  • "start_datetime": "2019-08-24T14:15:22Z",
  • "end_datetime": "2019-08-24T14:15:22Z",
  • "status": "PLANNED",
  • "remarks": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "shift_template": { }
}

Get all scheduled shifts with optional filters

Authorizations:
None
query Parameters
employeeId
string

Filter by employee ID

shiftTemplateId
string

Filter by shift template ID

startDate
string

Filter by start date (ISO string)

endDate
string

Filter by end date (ISO string)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Bulk create scheduled shifts for multiple dates

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get scheduled shifts by employee ID

Authorizations:
None
path Parameters
employeeId
required
string
query Parameters
startDate
string

Filter by start date (ISO string)

endDate
string

Filter by end date (ISO string)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get scheduled shift statistics

Authorizations:
None
query Parameters
employeeId
string

Filter by employee ID

startDate
string

Filter by start date (ISO string)

endDate
string

Filter by end date (ISO string)

Responses

Response samples

Content type
application/json
{
  • "totalShifts": 0,
  • "totalHours": 0,
  • "averageHoursPerShift": 0,
  • "employeeCount": 0
}

Get a scheduled shift by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "shift_template_id": "string",
  • "start_datetime": "2019-08-24T14:15:22Z",
  • "end_datetime": "2019-08-24T14:15:22Z",
  • "status": "PLANNED",
  • "remarks": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "shift_template": { }
}

Update a scheduled shift

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
start_datetime
string

Shift start datetime

end_datetime
string

Shift end datetime

status
string
Enum: "PLANNED" "CONFIRMED" "COMPLETED" "CANCELLED"

Shift status

remarks
string

Special remarks for this shift

Responses

Request samples

Content type
application/json
{
  • "start_datetime": "2024-01-15T09:00:00.000Z",
  • "end_datetime": "2024-01-15T17:00:00.000Z",
  • "status": "PLANNED",
  • "remarks": "Training session at 2 PM"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "shift_template_id": "string",
  • "start_datetime": "2019-08-24T14:15:22Z",
  • "end_datetime": "2019-08-24T14:15:22Z",
  • "status": "PLANNED",
  • "remarks": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "shift_template": { }
}

Delete a scheduled shift

Authorizations:
None
path Parameters
id
required
string

Responses

Test endpoint for scheduled shift module

Authorizations:
None

Responses

Performance - Reviews

Performance review management

Create a performance review

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

cycle_id
required
string

Performance cycle ID

template_id
required
string

Review template ID

review_type
required
string
Enum: "SELF" "MANAGER" "PEER" "SUBORDINATE" "CUSTOMER"

Type of review

reviewer_id
required
string

Reviewer ID

review_period_start
string

Review period start date

review_period_end
string

Review period end date

due_date
string

Due date for review completion

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "cycle_id": "string",
  • "template_id": "string",
  • "review_type": "SELF",
  • "reviewer_id": "string",
  • "review_period_start": "string",
  • "review_period_end": "string",
  • "due_date": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "template_id": "string",
  • "review_type": "SELF",
  • "reviewer_id": "string",
  • "review_period_start": "2019-08-24T14:15:22Z",
  • "review_period_end": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "overall_rating": 0,
  • "goal_achievement_score": 0,
  • "competency_score": 0,
  • "behavioral_score": 0,
  • "strengths": "string",
  • "areas_for_improvement": "string",
  • "development_recommendations": "string",
  • "manager_comments": "string",
  • "employee_comments": "string",
  • "submitted_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "due_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "reviewer": { },
  • "cycle": { }
}

Get all performance reviews with pagination

Authorizations:
None
query Parameters
employee_id
string

Filter by employee ID

cycle_id
string

Filter by cycle ID

reviewer_id
string

Filter by reviewer ID

review_type
string
Enum: "SELF" "MANAGER" "PEER" "SUBORDINATE" "CUSTOMER"

Filter by review type

status
string
Enum: "DRAFT" "IN_PROGRESS" "SUBMITTED" "COMPLETED" "APPROVED"

Filter by status

search
string

Search by employee name

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get review statistics for a cycle

Authorizations:
None
path Parameters
cycleId
required
string

Responses

Response samples

Content type
application/json
{
  • "totalReviews": 0,
  • "completedReviews": 0,
  • "pendingReviews": 0,
  • "averageRating": 0
}

Get performance review by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "template_id": "string",
  • "review_type": "SELF",
  • "reviewer_id": "string",
  • "review_period_start": "2019-08-24T14:15:22Z",
  • "review_period_end": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "overall_rating": 0,
  • "goal_achievement_score": 0,
  • "competency_score": 0,
  • "behavioral_score": 0,
  • "strengths": "string",
  • "areas_for_improvement": "string",
  • "development_recommendations": "string",
  • "manager_comments": "string",
  • "employee_comments": "string",
  • "submitted_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "due_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "reviewer": { },
  • "cycle": { }
}

Update performance review

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
employee_id
string

Employee ID

cycle_id
string

Performance cycle ID

template_id
string

Review template ID

review_type
string
Enum: "SELF" "MANAGER" "PEER" "SUBORDINATE" "CUSTOMER"

Type of review

reviewer_id
string

Reviewer ID

review_period_start
string

Review period start date

review_period_end
string

Review period end date

due_date
string

Due date for review completion

status
string
Enum: "DRAFT" "IN_PROGRESS" "SUBMITTED" "COMPLETED" "APPROVED"

Review status

overall_rating
number [ 1 .. 5 ]

Overall rating

goal_achievement_score
number [ 0 .. 100 ]

Goal achievement score

competency_score
number [ 0 .. 100 ]

Competency score

behavioral_score
number [ 0 .. 100 ]

Behavioral score

strengths
string

Strengths identified

areas_for_improvement
string

Areas for improvement

development_recommendations
string

Development recommendations

manager_comments
string

Manager comments

employee_comments
string

Employee comments

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "cycle_id": "string",
  • "template_id": "string",
  • "review_type": "SELF",
  • "reviewer_id": "string",
  • "review_period_start": "string",
  • "review_period_end": "string",
  • "due_date": "string",
  • "status": "DRAFT",
  • "overall_rating": 1,
  • "goal_achievement_score": 100,
  • "competency_score": 100,
  • "behavioral_score": 100,
  • "strengths": "string",
  • "areas_for_improvement": "string",
  • "development_recommendations": "string",
  • "manager_comments": "string",
  • "employee_comments": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "template_id": "string",
  • "review_type": "SELF",
  • "reviewer_id": "string",
  • "review_period_start": "2019-08-24T14:15:22Z",
  • "review_period_end": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "overall_rating": 0,
  • "goal_achievement_score": 0,
  • "competency_score": 0,
  • "behavioral_score": 0,
  • "strengths": "string",
  • "areas_for_improvement": "string",
  • "development_recommendations": "string",
  • "manager_comments": "string",
  • "employee_comments": "string",
  • "submitted_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "due_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "reviewer": { },
  • "cycle": { }
}

Delete performance review

Authorizations:
None
path Parameters
id
required
string

Responses

Submit review responses

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
required
Array of objects (ReviewResponseDto)

Review responses

Array
question_id
required
string

Question ID from template

section_name
string

Section name

question_text
string

Question text

response_type
required
string

Response type

response_value
string

Response value

rating_score
number [ 1 .. 5 ]

Rating score

weight
number

Weight

comments
string

Comments

Responses

Request samples

Content type
application/json
{
  • "responses": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "template_id": "string",
  • "review_type": "SELF",
  • "reviewer_id": "string",
  • "review_period_start": "2019-08-24T14:15:22Z",
  • "review_period_end": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "overall_rating": 0,
  • "goal_achievement_score": 0,
  • "competency_score": 0,
  • "behavioral_score": 0,
  • "strengths": "string",
  • "areas_for_improvement": "string",
  • "development_recommendations": "string",
  • "manager_comments": "string",
  • "employee_comments": "string",
  • "submitted_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "due_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "reviewer": { },
  • "cycle": { }
}

Submit performance review for approval

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
comments
string

Final comments

Responses

Request samples

Content type
application/json
{
  • "comments": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "template_id": "string",
  • "review_type": "SELF",
  • "reviewer_id": "string",
  • "review_period_start": "2019-08-24T14:15:22Z",
  • "review_period_end": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "overall_rating": 0,
  • "goal_achievement_score": 0,
  • "competency_score": 0,
  • "behavioral_score": 0,
  • "strengths": "string",
  • "areas_for_improvement": "string",
  • "development_recommendations": "string",
  • "manager_comments": "string",
  • "employee_comments": "string",
  • "submitted_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "due_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "reviewer": { },
  • "cycle": { }
}

Approve performance review

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
comments
string

Approval comments

Responses

Request samples

Content type
application/json
{
  • "comments": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "template_id": "string",
  • "review_type": "SELF",
  • "reviewer_id": "string",
  • "review_period_start": "2019-08-24T14:15:22Z",
  • "review_period_end": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "overall_rating": 0,
  • "goal_achievement_score": 0,
  • "competency_score": 0,
  • "behavioral_score": 0,
  • "strengths": "string",
  • "areas_for_improvement": "string",
  • "development_recommendations": "string",
  • "manager_comments": "string",
  • "employee_comments": "string",
  • "submitted_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "due_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "reviewer": { },
  • "cycle": { }
}

Reject performance review

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
reason
required
string

Rejection reason

comments
string

Additional comments

Responses

Request samples

Content type
application/json
{
  • "reason": "string",
  • "comments": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "template_id": "string",
  • "review_type": "SELF",
  • "reviewer_id": "string",
  • "review_period_start": "2019-08-24T14:15:22Z",
  • "review_period_end": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "overall_rating": 0,
  • "goal_achievement_score": 0,
  • "competency_score": 0,
  • "behavioral_score": 0,
  • "strengths": "string",
  • "areas_for_improvement": "string",
  • "development_recommendations": "string",
  • "manager_comments": "string",
  • "employee_comments": "string",
  • "submitted_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "due_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "reviewer": { },
  • "cycle": { }
}

Get review responses with pagination

Authorizations:
None
path Parameters
reviewId
required
string
query Parameters
review_id
string

Filter by review ID

section_name
string

Filter by section name

response_type
string

Filter by response type

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get single review response by ID

Authorizations:
None
path Parameters
responseId
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "review_id": "string",
  • "question_id": "string",
  • "section_name": "string",
  • "question_text": "string",
  • "response_type": "string",
  • "response_value": "string",
  • "rating_score": 0,
  • "weight": 0,
  • "comments": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string"
}

Update review response

Authorizations:
None
path Parameters
responseId
required
string
Request Body schema: application/json
required
response_value
string

Response value

rating_score
number [ 1 .. 5 ]

Rating score

weight
number

Weight

comments
string

Comments

Responses

Request samples

Content type
application/json
{
  • "response_value": "string",
  • "rating_score": 1,
  • "weight": 0,
  • "comments": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "review_id": "string",
  • "question_id": "string",
  • "section_name": "string",
  • "question_text": "string",
  • "response_type": "string",
  • "response_value": "string",
  • "rating_score": 0,
  • "weight": 0,
  • "comments": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string"
}

Delete review response

Authorizations:
None
path Parameters
responseId
required
string

Responses

Get response statistics for a review

Authorizations:
None
path Parameters
reviewId
required
string

Responses

Performance - Goals

Goal setting and tracking

Create a performance goal

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

cycle_id
required
string

Performance cycle ID

goal_category
required
string
Enum: "STRATEGIC" "OPERATIONAL" "PERSONAL_DEVELOPMENT" "BEHAVIORAL"

Goal category

title
required
string

Goal title

description
string

Goal description

success_criteria
string

Success criteria

measurement_method
string

Measurement method

target_value
number

Target value

unit
string

Unit of measurement

weight_percentage
number [ 0 .. 100 ]

Goal weight percentage

priority
string
Enum: "HIGH" "MEDIUM" "LOW"

Goal priority

due_date
string

Due date

manager_id
string

Manager ID

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "cycle_id": "string",
  • "goal_category": "STRATEGIC",
  • "title": "string",
  • "description": "string",
  • "success_criteria": "string",
  • "measurement_method": "string",
  • "target_value": 0,
  • "unit": "string",
  • "weight_percentage": 100,
  • "priority": "HIGH",
  • "due_date": "string",
  • "manager_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "goal_category": "STRATEGIC",
  • "title": "string",
  • "description": "string",
  • "success_criteria": "string",
  • "measurement_method": "string",
  • "target_value": 0,
  • "current_value": 0,
  • "unit": "string",
  • "weight_percentage": 0,
  • "priority": "HIGH",
  • "status": "DRAFT",
  • "progress_percentage": 0,
  • "due_date": "2019-08-24T14:15:22Z",
  • "manager_id": "string",
  • "approved_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "manager": { },
  • "cycle": { }
}

Get all performance goals with pagination

Authorizations:
None
query Parameters
employee_id
string

Filter by employee ID

cycle_id
string

Filter by cycle ID

goal_category
string
Enum: "STRATEGIC" "OPERATIONAL" "PERSONAL_DEVELOPMENT" "BEHAVIORAL"

Filter by goal category

status
string
Enum: "DRAFT" "ACTIVE" "IN_PROGRESS" "COMPLETED" "CANCELLED" "OVERDUE"

Filter by status

priority
string
Enum: "HIGH" "MEDIUM" "LOW"

Filter by priority

search
string

Search by title or description

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get goal statistics for an employee in a cycle

Authorizations:
None
path Parameters
employeeId
required
string
cycleId
required
string

Responses

Response samples

Content type
application/json
{
  • "totalGoals": 0,
  • "completedGoals": 0,
  • "inProgressGoals": 0,
  • "averageProgress": 0
}

Get performance goal by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "goal_category": "STRATEGIC",
  • "title": "string",
  • "description": "string",
  • "success_criteria": "string",
  • "measurement_method": "string",
  • "target_value": 0,
  • "current_value": 0,
  • "unit": "string",
  • "weight_percentage": 0,
  • "priority": "HIGH",
  • "status": "DRAFT",
  • "progress_percentage": 0,
  • "due_date": "2019-08-24T14:15:22Z",
  • "manager_id": "string",
  • "approved_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "manager": { },
  • "cycle": { }
}

Update performance goal

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
employee_id
string

Employee ID

cycle_id
string

Performance cycle ID

goal_category
string
Enum: "STRATEGIC" "OPERATIONAL" "PERSONAL_DEVELOPMENT" "BEHAVIORAL"

Goal category

title
string

Goal title

description
string

Goal description

success_criteria
string

Success criteria

measurement_method
string

Measurement method

target_value
number

Target value

unit
string

Unit of measurement

weight_percentage
number [ 0 .. 100 ]

Goal weight percentage

priority
string
Enum: "HIGH" "MEDIUM" "LOW"

Goal priority

due_date
string

Due date

manager_id
string

Manager ID

status
string
Enum: "DRAFT" "ACTIVE" "IN_PROGRESS" "COMPLETED" "CANCELLED" "OVERDUE"

Goal status

current_value
number

Current value

progress_percentage
number [ 0 .. 100 ]

Progress percentage

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "cycle_id": "string",
  • "goal_category": "STRATEGIC",
  • "title": "string",
  • "description": "string",
  • "success_criteria": "string",
  • "measurement_method": "string",
  • "target_value": 0,
  • "unit": "string",
  • "weight_percentage": 100,
  • "priority": "HIGH",
  • "due_date": "string",
  • "manager_id": "string",
  • "status": "DRAFT",
  • "current_value": 0,
  • "progress_percentage": 100
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "goal_category": "STRATEGIC",
  • "title": "string",
  • "description": "string",
  • "success_criteria": "string",
  • "measurement_method": "string",
  • "target_value": 0,
  • "current_value": 0,
  • "unit": "string",
  • "weight_percentage": 0,
  • "priority": "HIGH",
  • "status": "DRAFT",
  • "progress_percentage": 0,
  • "due_date": "2019-08-24T14:15:22Z",
  • "manager_id": "string",
  • "approved_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "manager": { },
  • "cycle": { }
}

Delete performance goal

Authorizations:
None
path Parameters
id
required
string

Responses

Update goal progress

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
new_value
number

New value

progress_percentage
number [ 0 .. 100 ]

Progress percentage

update_notes
string

Update notes

Responses

Request samples

Content type
application/json
{
  • "new_value": 0,
  • "progress_percentage": 100,
  • "update_notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "goal_category": "STRATEGIC",
  • "title": "string",
  • "description": "string",
  • "success_criteria": "string",
  • "measurement_method": "string",
  • "target_value": 0,
  • "current_value": 0,
  • "unit": "string",
  • "weight_percentage": 0,
  • "priority": "HIGH",
  • "status": "DRAFT",
  • "progress_percentage": 0,
  • "due_date": "2019-08-24T14:15:22Z",
  • "manager_id": "string",
  • "approved_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "manager": { },
  • "cycle": { }
}

Approve performance goal

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
comments
string

Approval comments

Responses

Request samples

Content type
application/json
{
  • "comments": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "goal_category": "STRATEGIC",
  • "title": "string",
  • "description": "string",
  • "success_criteria": "string",
  • "measurement_method": "string",
  • "target_value": 0,
  • "current_value": 0,
  • "unit": "string",
  • "weight_percentage": 0,
  • "priority": "HIGH",
  • "status": "DRAFT",
  • "progress_percentage": 0,
  • "due_date": "2019-08-24T14:15:22Z",
  • "manager_id": "string",
  • "approved_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "manager": { },
  • "cycle": { }
}

Mark goal as completed

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
final_value
required
number

Final value achieved

notes
string

Completion notes

Responses

Request samples

Content type
application/json
{
  • "final_value": 0,
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "goal_category": "STRATEGIC",
  • "title": "string",
  • "description": "string",
  • "success_criteria": "string",
  • "measurement_method": "string",
  • "target_value": 0,
  • "current_value": 0,
  • "unit": "string",
  • "weight_percentage": 0,
  • "priority": "HIGH",
  • "status": "DRAFT",
  • "progress_percentage": 0,
  • "due_date": "2019-08-24T14:15:22Z",
  • "manager_id": "string",
  • "approved_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "manager": { },
  • "cycle": { }
}

Performance - Continuous Feedback

Continuous feedback and check-ins

Create continuous feedback

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID receiving feedback

feedback_type
required
string
Enum: "PRAISE" "CONSTRUCTIVE" "COACHING" "GOAL_PROGRESS"

Type of feedback

category
string

Feedback category

title
string

Feedback title

feedback_content
required
string

Feedback content

visibility
string
Default: "PRIVATE"
Enum: "PRIVATE" "MANAGER" "TEAM" "PUBLIC"

Feedback visibility

is_anonymous
boolean
Default: false

Whether feedback is anonymous

tags
Array of strings

Tags for categorization

related_goal_id
string

Related goal ID

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "feedback_type": "PRAISE",
  • "category": "string",
  • "title": "string",
  • "feedback_content": "string",
  • "visibility": "PRIVATE",
  • "is_anonymous": false,
  • "tags": [
    ],
  • "related_goal_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "feedback_giver_id": "string",
  • "feedback_type": "PRAISE",
  • "category": "string",
  • "title": "string",
  • "feedback_content": "string",
  • "visibility": "PRIVATE",
  • "is_anonymous": true,
  • "acknowledged": true,
  • "tags": { },
  • "related_goal_id": "string",
  • "acknowledged_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "feedback_giver": { },
  • "related_goal": { }
}

Get all continuous feedback with pagination

Authorizations:
None
query Parameters
employee_id
string

Filter by employee ID

feedback_giver_id
string

Filter by feedback giver ID

feedback_type
string
Enum: "PRAISE" "CONSTRUCTIVE" "COACHING" "GOAL_PROGRESS"

Filter by feedback type

category
string

Filter by category

visibility
string
Enum: "PRIVATE" "MANAGER" "TEAM" "PUBLIC"

Filter by visibility

is_anonymous
boolean

Filter by anonymous status

search
string

Search in title and content

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get feedback statistics for an employee

Authorizations:
None
path Parameters
employeeId
required
string

Responses

Response samples

Content type
application/json
{
  • "totalFeedback": 0,
  • "recognitionCount": 0,
  • "constructiveCount": 0,
  • "acknowledgedCount": 0
}

Get continuous feedback by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "feedback_giver_id": "string",
  • "feedback_type": "PRAISE",
  • "category": "string",
  • "title": "string",
  • "feedback_content": "string",
  • "visibility": "PRIVATE",
  • "is_anonymous": true,
  • "acknowledged": true,
  • "tags": { },
  • "related_goal_id": "string",
  • "acknowledged_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "feedback_giver": { },
  • "related_goal": { }
}

Update continuous feedback

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
employee_id
string

Employee ID receiving feedback

feedback_type
string
Enum: "PRAISE" "CONSTRUCTIVE" "COACHING" "GOAL_PROGRESS"

Type of feedback

category
string

Feedback category

title
string

Feedback title

feedback_content
string

Feedback content

visibility
string
Default: "PRIVATE"
Enum: "PRIVATE" "MANAGER" "TEAM" "PUBLIC"

Feedback visibility

is_anonymous
boolean
Default: false

Whether feedback is anonymous

tags
Array of strings

Tags for categorization

related_goal_id
string

Related goal ID

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "feedback_type": "PRAISE",
  • "category": "string",
  • "title": "string",
  • "feedback_content": "string",
  • "visibility": "PRIVATE",
  • "is_anonymous": false,
  • "tags": [
    ],
  • "related_goal_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "feedback_giver_id": "string",
  • "feedback_type": "PRAISE",
  • "category": "string",
  • "title": "string",
  • "feedback_content": "string",
  • "visibility": "PRIVATE",
  • "is_anonymous": true,
  • "acknowledged": true,
  • "tags": { },
  • "related_goal_id": "string",
  • "acknowledged_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "feedback_giver": { },
  • "related_goal": { }
}

Delete continuous feedback

Authorizations:
None
path Parameters
id
required
string

Responses

Acknowledge feedback

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
notes
string

Acknowledgment notes

Responses

Request samples

Content type
application/json
{
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "feedback_giver_id": "string",
  • "feedback_type": "PRAISE",
  • "category": "string",
  • "title": "string",
  • "feedback_content": "string",
  • "visibility": "PRIVATE",
  • "is_anonymous": true,
  • "acknowledged": true,
  • "tags": { },
  • "related_goal_id": "string",
  • "acknowledged_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "feedback_giver": { },
  • "related_goal": { }
}

Respond to feedback (manager)

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
response
required
string

Response content

Responses

Request samples

Content type
application/json
{
  • "response": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "feedback_giver_id": "string",
  • "feedback_type": "PRAISE",
  • "category": "string",
  • "title": "string",
  • "feedback_content": "string",
  • "visibility": "PRIVATE",
  • "is_anonymous": true,
  • "acknowledged": true,
  • "tags": { },
  • "related_goal_id": "string",
  • "acknowledged_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "feedback_giver": { },
  • "related_goal": { }
}

Performance - 360 Feedback

Multi-rater feedback processes

Create 360 feedback

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

cycle_id
required
string

Performance cycle ID

feedback_round_name
string

Feedback round name

nomination_deadline
string <date>

Nomination deadline

feedback_deadline
string <date>

Feedback deadline

peer_nominees
object

Peer nominees

subordinate_nominees
object

Subordinate nominees

customer_nominees
object

Customer nominees

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "cycle_id": "string",
  • "feedback_round_name": "string",
  • "nomination_deadline": "2019-08-24",
  • "feedback_deadline": "2019-08-24",
  • "peer_nominees": { },
  • "subordinate_nominees": { },
  • "customer_nominees": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "feedback_round_name": "string",
  • "status": "SETUP",
  • "self_assessment_id": "string",
  • "manager_review_id": "string",
  • "nomination_deadline": "2019-08-24T14:15:22Z",
  • "feedback_deadline": "2019-08-24T14:15:22Z",
  • "peer_nominees": { },
  • "subordinate_nominees": { },
  • "customer_nominees": { },
  • "feedback_summary": { },
  • "overall_360_score": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "cycle": { },
  • "self_assessment": { },
  • "manager_review": { }
}

Get all 360 feedback with pagination

Authorizations:
None
query Parameters
employee_id
string

Filter by employee ID

cycle_id
string

Filter by cycle ID

status
string
Enum: "SETUP" "NOMINATION" "FEEDBACK_COLLECTION" "COMPLETED"

Filter by status

search
string

Search in feedback round name

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get feedback statistics for an employee

Authorizations:
None
path Parameters
employeeId
required
string
cycleId
required
string

Responses

Response samples

Content type
application/json
{
  • "totalNominees": 0,
  • "feedbackReceived": 0,
  • "completionRate": 0,
  • "averageScore": 0
}

Get 360 feedback by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "feedback_round_name": "string",
  • "status": "SETUP",
  • "self_assessment_id": "string",
  • "manager_review_id": "string",
  • "nomination_deadline": "2019-08-24T14:15:22Z",
  • "feedback_deadline": "2019-08-24T14:15:22Z",
  • "peer_nominees": { },
  • "subordinate_nominees": { },
  • "customer_nominees": { },
  • "feedback_summary": { },
  • "overall_360_score": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "cycle": { },
  • "self_assessment": { },
  • "manager_review": { }
}

Update 360 feedback

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
employee_id
string

Employee ID

cycle_id
string

Performance cycle ID

feedback_round_name
string

Feedback round name

nomination_deadline
string <date>

Nomination deadline

feedback_deadline
string <date>

Feedback deadline

peer_nominees
object

Peer nominees

subordinate_nominees
object

Subordinate nominees

customer_nominees
object

Customer nominees

status
string
Enum: "SETUP" "NOMINATION" "FEEDBACK_COLLECTION" "COMPLETED"

Feedback status

self_assessment_id
string

Self assessment ID

manager_review_id
string

Manager review ID

feedback_summary
object

Feedback summary

overall_360_score
number [ 0 .. 5 ]

Overall 360 score

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "cycle_id": "string",
  • "feedback_round_name": "string",
  • "nomination_deadline": "2019-08-24",
  • "feedback_deadline": "2019-08-24",
  • "peer_nominees": { },
  • "subordinate_nominees": { },
  • "customer_nominees": { },
  • "status": "SETUP",
  • "self_assessment_id": "string",
  • "manager_review_id": "string",
  • "feedback_summary": { },
  • "overall_360_score": 5
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "feedback_round_name": "string",
  • "status": "SETUP",
  • "self_assessment_id": "string",
  • "manager_review_id": "string",
  • "nomination_deadline": "2019-08-24T14:15:22Z",
  • "feedback_deadline": "2019-08-24T14:15:22Z",
  • "peer_nominees": { },
  • "subordinate_nominees": { },
  • "customer_nominees": { },
  • "feedback_summary": { },
  • "overall_360_score": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "cycle": { },
  • "self_assessment": { },
  • "manager_review": { }
}

Delete 360 feedback

Authorizations:
None
path Parameters
id
required
string

Responses

Add nominees to 360 feedback

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
peer_nominees
Array of strings

Peer nominees to add

subordinate_nominees
Array of strings

Subordinate nominees to add

customer_nominees
Array of strings

Customer nominees to add

Responses

Request samples

Content type
application/json
{
  • "peer_nominees": [
    ],
  • "subordinate_nominees": [
    ],
  • "customer_nominees": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "feedback_round_name": "string",
  • "status": "SETUP",
  • "self_assessment_id": "string",
  • "manager_review_id": "string",
  • "nomination_deadline": "2019-08-24T14:15:22Z",
  • "feedback_deadline": "2019-08-24T14:15:22Z",
  • "peer_nominees": { },
  • "subordinate_nominees": { },
  • "customer_nominees": { },
  • "feedback_summary": { },
  • "overall_360_score": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "cycle": { },
  • "self_assessment": { },
  • "manager_review": { }
}

Update feedback status

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
status
required
string
Enum: "SETUP" "NOMINATION" "FEEDBACK_COLLECTION" "COMPLETED"

New status

Responses

Request samples

Content type
application/json
{
  • "status": "SETUP"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "feedback_round_name": "string",
  • "status": "SETUP",
  • "self_assessment_id": "string",
  • "manager_review_id": "string",
  • "nomination_deadline": "2019-08-24T14:15:22Z",
  • "feedback_deadline": "2019-08-24T14:15:22Z",
  • "peer_nominees": { },
  • "subordinate_nominees": { },
  • "customer_nominees": { },
  • "feedback_summary": { },
  • "overall_360_score": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "cycle": { },
  • "self_assessment": { },
  • "manager_review": { }
}

Performance - Improvement Plans

Performance improvement plans (PIPs)

Create performance improvement plan

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

manager_id
required
string

Manager ID

hr_id
string

HR representative ID

performance_issues
required
string

Performance issues description

root_cause_analysis
string

Root cause analysis

improvement_goals
required
object

Improvement goals

action_steps
required
object

Action steps

support_provided
object

Support provided

success_criteria
string

Success criteria

review_schedule
object

Review schedule

plan_duration_months
number [ 1 .. 12 ]
Default: 3

Plan duration in months

start_date
required
string <date>

Start date

end_date
required
string <date>

End date

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "manager_id": "string",
  • "hr_id": "string",
  • "performance_issues": "string",
  • "root_cause_analysis": "string",
  • "improvement_goals": { },
  • "action_steps": { },
  • "support_provided": { },
  • "success_criteria": "string",
  • "review_schedule": { },
  • "plan_duration_months": 3,
  • "start_date": "2019-08-24",
  • "end_date": "2019-08-24"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "manager_id": "string",
  • "hr_id": "string",
  • "performance_issues": "string",
  • "root_cause_analysis": "string",
  • "improvement_goals": { },
  • "action_steps": { },
  • "support_provided": { },
  • "success_criteria": "string",
  • "review_schedule": { },
  • "plan_duration_months": 0,
  • "status": "ACTIVE",
  • "outcome": "SUCCESSFUL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "final_review_date": "2019-08-24T14:15:22Z",
  • "employee_acknowledgment": true,
  • "employee_signature_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "manager": { },
  • "hr": { }
}

Get all performance improvement plans with pagination

Authorizations:
None
query Parameters
employee_id
string

Filter by employee ID

manager_id
string

Filter by manager ID

status
string
Enum: "ACTIVE" "COMPLETED" "EXTENDED" "TERMINATED"

Filter by status

outcome
string
Enum: "SUCCESSFUL" "PARTIALLY_SUCCESSFUL" "UNSUCCESSFUL"

Filter by outcome

search
string

Search in performance issues

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get PIP statistics for an employee

Authorizations:
None
path Parameters
employeeId
required
string

Responses

Response samples

Content type
application/json
{
  • "totalPIPs": 0,
  • "activePIPs": 0,
  • "successfulPIPs": 0,
  • "unsuccessfulPIPs": 0
}

Get performance improvement plan by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "manager_id": "string",
  • "hr_id": "string",
  • "performance_issues": "string",
  • "root_cause_analysis": "string",
  • "improvement_goals": { },
  • "action_steps": { },
  • "support_provided": { },
  • "success_criteria": "string",
  • "review_schedule": { },
  • "plan_duration_months": 0,
  • "status": "ACTIVE",
  • "outcome": "SUCCESSFUL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "final_review_date": "2019-08-24T14:15:22Z",
  • "employee_acknowledgment": true,
  • "employee_signature_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "manager": { },
  • "hr": { }
}

Update performance improvement plan

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
employee_id
string

Employee ID

manager_id
string

Manager ID

hr_id
string

HR representative ID

performance_issues
string

Performance issues description

root_cause_analysis
string

Root cause analysis

improvement_goals
object

Improvement goals

action_steps
object

Action steps

support_provided
object

Support provided

success_criteria
string

Success criteria

review_schedule
object

Review schedule

plan_duration_months
number [ 1 .. 12 ]
Default: 3

Plan duration in months

start_date
string <date>

Start date

end_date
string <date>

End date

status
string
Enum: "ACTIVE" "COMPLETED" "EXTENDED" "TERMINATED"

PIP status

outcome
string
Enum: "SUCCESSFUL" "PARTIALLY_SUCCESSFUL" "UNSUCCESSFUL"

PIP outcome

final_review_date
string <date>

Final review date

employee_acknowledgment
boolean

Employee acknowledgment

employee_signature_date
string <date>

Employee signature date

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "manager_id": "string",
  • "hr_id": "string",
  • "performance_issues": "string",
  • "root_cause_analysis": "string",
  • "improvement_goals": { },
  • "action_steps": { },
  • "support_provided": { },
  • "success_criteria": "string",
  • "review_schedule": { },
  • "plan_duration_months": 3,
  • "start_date": "2019-08-24",
  • "end_date": "2019-08-24",
  • "status": "ACTIVE",
  • "outcome": "SUCCESSFUL",
  • "final_review_date": "2019-08-24",
  • "employee_acknowledgment": true,
  • "employee_signature_date": "2019-08-24"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "manager_id": "string",
  • "hr_id": "string",
  • "performance_issues": "string",
  • "root_cause_analysis": "string",
  • "improvement_goals": { },
  • "action_steps": { },
  • "support_provided": { },
  • "success_criteria": "string",
  • "review_schedule": { },
  • "plan_duration_months": 0,
  • "status": "ACTIVE",
  • "outcome": "SUCCESSFUL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "final_review_date": "2019-08-24T14:15:22Z",
  • "employee_acknowledgment": true,
  • "employee_signature_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "manager": { },
  • "hr": { }
}

Delete performance improvement plan

Authorizations:
None
path Parameters
id
required
string

Responses

Acknowledge PIP by employee

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
acknowledged
required
boolean

Employee acknowledgment

comments
string

Employee comments

Responses

Request samples

Content type
application/json
{
  • "acknowledged": true,
  • "comments": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "manager_id": "string",
  • "hr_id": "string",
  • "performance_issues": "string",
  • "root_cause_analysis": "string",
  • "improvement_goals": { },
  • "action_steps": { },
  • "support_provided": { },
  • "success_criteria": "string",
  • "review_schedule": { },
  • "plan_duration_months": 0,
  • "status": "ACTIVE",
  • "outcome": "SUCCESSFUL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "final_review_date": "2019-08-24T14:15:22Z",
  • "employee_acknowledgment": true,
  • "employee_signature_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "manager": { },
  • "hr": { }
}

Update PIP status

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
status
required
string
Enum: "ACTIVE" "COMPLETED" "EXTENDED" "TERMINATED"

New status

outcome
string
Enum: "SUCCESSFUL" "PARTIALLY_SUCCESSFUL" "UNSUCCESSFUL"

PIP outcome (required when completing)

notes
string

Status update notes

Responses

Request samples

Content type
application/json
{
  • "status": "ACTIVE",
  • "outcome": "SUCCESSFUL",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "manager_id": "string",
  • "hr_id": "string",
  • "performance_issues": "string",
  • "root_cause_analysis": "string",
  • "improvement_goals": { },
  • "action_steps": { },
  • "support_provided": { },
  • "success_criteria": "string",
  • "review_schedule": { },
  • "plan_duration_months": 0,
  • "status": "ACTIVE",
  • "outcome": "SUCCESSFUL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "final_review_date": "2019-08-24T14:15:22Z",
  • "employee_acknowledgment": true,
  • "employee_signature_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "manager": { },
  • "hr": { }
}

Add progress update to PIP

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
progress_update
required
string

Progress update

improvements
string

Areas of improvement

concerns
string

Remaining concerns

next_steps
string

Next steps

Responses

Request samples

Content type
application/json
{
  • "progress_update": "string",
  • "improvements": "string",
  • "concerns": "string",
  • "next_steps": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "manager_id": "string",
  • "hr_id": "string",
  • "performance_issues": "string",
  • "root_cause_analysis": "string",
  • "improvement_goals": { },
  • "action_steps": { },
  • "support_provided": { },
  • "success_criteria": "string",
  • "review_schedule": { },
  • "plan_duration_months": 0,
  • "status": "ACTIVE",
  • "outcome": "SUCCESSFUL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "final_review_date": "2019-08-24T14:15:22Z",
  • "employee_acknowledgment": true,
  • "employee_signature_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "manager": { },
  • "hr": { }
}

Performance - Cycles

Review cycles and periods

Create a performance cycle

Authorizations:
None
Request Body schema: application/json
required
name
required
string

Performance cycle name

cycle_type
required
string
Enum: "ANNUAL" "SEMI_ANNUAL" "QUARTERLY" "MONTHLY"

Type of performance cycle

start_date
required
string

Cycle start date

end_date
required
string

Cycle end date

goal_setting_deadline
string

Goal setting deadline

mid_review_date
string

Mid-cycle review date

final_review_deadline
string

Final review deadline

description
string

Cycle description

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "cycle_type": "ANNUAL",
  • "start_date": "string",
  • "end_date": "string",
  • "goal_setting_deadline": "string",
  • "mid_review_date": "string",
  • "final_review_deadline": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "cycle_type": "ANNUAL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "goal_setting_deadline": "2019-08-24T14:15:22Z",
  • "mid_review_date": "2019-08-24T14:15:22Z",
  • "final_review_deadline": "2019-08-24T14:15:22Z",
  • "status": "PLANNING",
  • "description": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "total_goals": 0,
  • "total_reviews": 0,
  • "completed_reviews": 0
}

Get all performance cycles with pagination

Authorizations:
None
query Parameters
status
string
Enum: "PLANNING" "ACTIVE" "REVIEW_PERIOD" "CALIBRATION" "COMPLETED" "CANCELLED"

Filter by status

cycle_type
string
Enum: "ANNUAL" "SEMI_ANNUAL" "QUARTERLY" "MONTHLY"

Filter by cycle type

year
number

Filter by year

search
string

Search by name

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get current active cycle

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "cycle_type": "ANNUAL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "goal_setting_deadline": "2019-08-24T14:15:22Z",
  • "mid_review_date": "2019-08-24T14:15:22Z",
  • "final_review_deadline": "2019-08-24T14:15:22Z",
  • "status": "PLANNING",
  • "description": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "total_goals": 0,
  • "total_reviews": 0,
  • "completed_reviews": 0
}

Get performance cycle by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "cycle_type": "ANNUAL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "goal_setting_deadline": "2019-08-24T14:15:22Z",
  • "mid_review_date": "2019-08-24T14:15:22Z",
  • "final_review_deadline": "2019-08-24T14:15:22Z",
  • "status": "PLANNING",
  • "description": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "total_goals": 0,
  • "total_reviews": 0,
  • "completed_reviews": 0
}

Update performance cycle

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string

Performance cycle name

cycle_type
string
Enum: "ANNUAL" "SEMI_ANNUAL" "QUARTERLY" "MONTHLY"

Type of performance cycle

start_date
string

Cycle start date

end_date
string

Cycle end date

goal_setting_deadline
string

Goal setting deadline

mid_review_date
string

Mid-cycle review date

final_review_deadline
string

Final review deadline

description
string

Cycle description

status
string
Enum: "PLANNING" "ACTIVE" "REVIEW_PERIOD" "CALIBRATION" "COMPLETED" "CANCELLED"

Cycle status

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "cycle_type": "ANNUAL",
  • "start_date": "string",
  • "end_date": "string",
  • "goal_setting_deadline": "string",
  • "mid_review_date": "string",
  • "final_review_deadline": "string",
  • "description": "string",
  • "status": "PLANNING"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "cycle_type": "ANNUAL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "goal_setting_deadline": "2019-08-24T14:15:22Z",
  • "mid_review_date": "2019-08-24T14:15:22Z",
  • "final_review_deadline": "2019-08-24T14:15:22Z",
  • "status": "PLANNING",
  • "description": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "total_goals": 0,
  • "total_reviews": 0,
  • "completed_reviews": 0
}

Delete performance cycle

Authorizations:
None
path Parameters
id
required
string

Responses

Activate performance cycle

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
notes
string

Activation notes

Responses

Request samples

Content type
application/json
{
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "cycle_type": "ANNUAL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "goal_setting_deadline": "2019-08-24T14:15:22Z",
  • "mid_review_date": "2019-08-24T14:15:22Z",
  • "final_review_deadline": "2019-08-24T14:15:22Z",
  • "status": "PLANNING",
  • "description": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "total_goals": 0,
  • "total_reviews": 0,
  • "completed_reviews": 0
}

Complete performance cycle

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
notes
string

Completion notes

Responses

Request samples

Content type
application/json
{
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "cycle_type": "ANNUAL",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "goal_setting_deadline": "2019-08-24T14:15:22Z",
  • "mid_review_date": "2019-08-24T14:15:22Z",
  • "final_review_deadline": "2019-08-24T14:15:22Z",
  • "status": "PLANNING",
  • "description": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "total_goals": 0,
  • "total_reviews": 0,
  • "completed_reviews": 0
}

Performance - Calibration Sessions

Calibration sessions for reviews

Create new calibration session

Authorizations:
None
Request Body schema: application/json
required
session_name
required
string

Session name

cycle_id
required
string

Performance cycle ID

department_id
string

Department ID (optional for cross-department sessions)

session_date
string

Session date and time

facilitator_id
string

Facilitator employee ID

participants
object

List of participants (JSON array)

employees_discussed
object

Employees to be discussed (JSON array)

rating_distributions
object

Rating distributions (JSON object)

session_notes
string

Session notes

Responses

Request samples

Content type
application/json
{
  • "session_name": "string",
  • "cycle_id": "string",
  • "department_id": "string",
  • "session_date": "string",
  • "facilitator_id": "string",
  • "participants": { },
  • "employees_discussed": { },
  • "rating_distributions": { },
  • "session_notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "session_name": "string",
  • "cycle_id": "string",
  • "department_id": "string",
  • "session_date": "2019-08-24T14:15:22Z",
  • "facilitator_id": "string",
  • "participants": { },
  • "employees_discussed": { },
  • "rating_distributions": { },
  • "calibration_adjustments": { },
  • "session_notes": "string",
  • "status": "PLANNED",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "cycle": { },
  • "department": { },
  • "facilitator": { }
}

Get calibration sessions with pagination

Authorizations:
None
query Parameters
cycle_id
string

Filter by cycle ID

department_id
string

Filter by department ID

facilitator_id
string

Filter by facilitator ID

status
string
Enum: "PLANNED" "IN_PROGRESS" "COMPLETED"

Filter by status

date_from
string

Filter by session date (from)

date_to
string

Filter by session date (to)

search
string

Search by session name

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get calibration session by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "session_name": "string",
  • "cycle_id": "string",
  • "department_id": "string",
  • "session_date": "2019-08-24T14:15:22Z",
  • "facilitator_id": "string",
  • "participants": { },
  • "employees_discussed": { },
  • "rating_distributions": { },
  • "calibration_adjustments": { },
  • "session_notes": "string",
  • "status": "PLANNED",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "cycle": { },
  • "department": { },
  • "facilitator": { }
}

Update calibration session

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
session_name
string

Session name

cycle_id
string

Performance cycle ID

department_id
string

Department ID (optional for cross-department sessions)

session_date
string

Session date and time

facilitator_id
string

Facilitator employee ID

participants
object

List of participants (JSON array)

employees_discussed
object

Employees to be discussed (JSON array)

rating_distributions
object

Rating distributions (JSON object)

session_notes
string

Session notes

status
string
Enum: "PLANNED" "IN_PROGRESS" "COMPLETED"

Session status

calibration_adjustments
object

Calibration adjustments made (JSON array)

Responses

Request samples

Content type
application/json
{
  • "session_name": "string",
  • "cycle_id": "string",
  • "department_id": "string",
  • "session_date": "string",
  • "facilitator_id": "string",
  • "participants": { },
  • "employees_discussed": { },
  • "rating_distributions": { },
  • "session_notes": "string",
  • "status": "PLANNED",
  • "calibration_adjustments": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "session_name": "string",
  • "cycle_id": "string",
  • "department_id": "string",
  • "session_date": "2019-08-24T14:15:22Z",
  • "facilitator_id": "string",
  • "participants": { },
  • "employees_discussed": { },
  • "rating_distributions": { },
  • "calibration_adjustments": { },
  • "session_notes": "string",
  • "status": "PLANNED",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "cycle": { },
  • "department": { },
  • "facilitator": { }
}

Delete calibration session

Authorizations:
None
path Parameters
id
required
string

Responses

Start calibration session

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
start_notes
string

Session start notes

Responses

Request samples

Content type
application/json
{
  • "start_notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "session_name": "string",
  • "cycle_id": "string",
  • "department_id": "string",
  • "session_date": "2019-08-24T14:15:22Z",
  • "facilitator_id": "string",
  • "participants": { },
  • "employees_discussed": { },
  • "rating_distributions": { },
  • "calibration_adjustments": { },
  • "session_notes": "string",
  • "status": "PLANNED",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "cycle": { },
  • "department": { },
  • "facilitator": { }
}

Complete calibration session

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
final_notes
required
string

Final session notes

final_adjustments
object

Final calibration adjustments

final_distributions
object

Final rating distributions

Responses

Request samples

Content type
application/json
{
  • "final_notes": "string",
  • "final_adjustments": { },
  • "final_distributions": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "session_name": "string",
  • "cycle_id": "string",
  • "department_id": "string",
  • "session_date": "2019-08-24T14:15:22Z",
  • "facilitator_id": "string",
  • "participants": { },
  • "employees_discussed": { },
  • "rating_distributions": { },
  • "calibration_adjustments": { },
  • "session_notes": "string",
  • "status": "PLANNED",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "cycle": { },
  • "department": { },
  • "facilitator": { }
}

Add participant to calibration session

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
employee_id
required
string

Employee ID to add as participant

role
required
string

Participant role in session

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "role": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "session_name": "string",
  • "cycle_id": "string",
  • "department_id": "string",
  • "session_date": "2019-08-24T14:15:22Z",
  • "facilitator_id": "string",
  • "participants": { },
  • "employees_discussed": { },
  • "rating_distributions": { },
  • "calibration_adjustments": { },
  • "session_notes": "string",
  • "status": "PLANNED",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "cycle": { },
  • "department": { },
  • "facilitator": { }
}

Remove participant from calibration session

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
employee_id
required
string

Employee ID to remove from participants

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "session_name": "string",
  • "cycle_id": "string",
  • "department_id": "string",
  • "session_date": "2019-08-24T14:15:22Z",
  • "facilitator_id": "string",
  • "participants": { },
  • "employees_discussed": { },
  • "rating_distributions": { },
  • "calibration_adjustments": { },
  • "session_notes": "string",
  • "status": "PLANNED",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "cycle": { },
  • "department": { },
  • "facilitator": { }
}

Add employee to discussion list

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
employee_id
required
string

Employee ID to add to discussion

current_rating
required
string

Current performance rating

proposed_rating
string

Proposed rating after discussion

notes
string

Discussion notes

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "current_rating": "string",
  • "proposed_rating": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "session_name": "string",
  • "cycle_id": "string",
  • "department_id": "string",
  • "session_date": "2019-08-24T14:15:22Z",
  • "facilitator_id": "string",
  • "participants": { },
  • "employees_discussed": { },
  • "rating_distributions": { },
  • "calibration_adjustments": { },
  • "session_notes": "string",
  • "status": "PLANNED",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "cycle": { },
  • "department": { },
  • "facilitator": { }
}

Update employee discussion details

Authorizations:
None
path Parameters
id
required
string
employeeId
required
string
Request Body schema: application/json
required
proposed_rating
string

Updated proposed rating

notes
string

Updated discussion notes

calibration_decision
string

Calibration decision

Responses

Request samples

Content type
application/json
{
  • "proposed_rating": "string",
  • "notes": "string",
  • "calibration_decision": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "session_name": "string",
  • "cycle_id": "string",
  • "department_id": "string",
  • "session_date": "2019-08-24T14:15:22Z",
  • "facilitator_id": "string",
  • "participants": { },
  • "employees_discussed": { },
  • "rating_distributions": { },
  • "calibration_adjustments": { },
  • "session_notes": "string",
  • "status": "PLANNED",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "cycle": { },
  • "department": { },
  • "facilitator": { }
}

Get calibration session summary

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "session_id": "string",
  • "session_name": "string",
  • "total_participants": 0,
  • "total_employees_discussed": 0,
  • "calibration_adjustments_made": 0,
  • "session_duration_minutes": 0,
  • "rating_distribution_before": { },
  • "rating_distribution_after": { },
  • "status": "string"
}

Get calibration session statistics for a cycle

Authorizations:
None
path Parameters
cycleId
required
string

Responses

Performance - Development Plans

Employee development planning

Create new development plan

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

cycle_id
required
string

Performance cycle ID

plan_name
string

Plan name or title

career_aspirations
string

Career aspirations description

development_areas
object

Development areas (JSON array)

learning_objectives
object

Learning objectives (JSON array)

action_items
object

Action items (JSON array)

success_metrics
object

Success metrics (JSON array)

timeline_months
number [ 1 .. 36 ]
Default: 12

Timeline in months

last_reviewed_date
string

Last reviewed date

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 12,
  • "last_reviewed_date": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 0,
  • "status": "DRAFT",
  • "manager_approval": true,
  • "employee_commitment": true,
  • "last_reviewed_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "cycle": { }
}

Get development plans with pagination

Authorizations:
None
query Parameters
employee_id
string

Filter by employee ID

cycle_id
string

Filter by cycle ID

status
string
Enum: "DRAFT" "ACTIVE" "COMPLETED" "ON_HOLD"

Filter by status

manager_approval
boolean

Filter by manager approval status

employee_commitment
boolean

Filter by employee commitment status

search
string

Search by plan name or employee name

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get development plan by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 0,
  • "status": "DRAFT",
  • "manager_approval": true,
  • "employee_commitment": true,
  • "last_reviewed_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "cycle": { }
}

Update development plan

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
employee_id
string

Employee ID

cycle_id
string

Performance cycle ID

plan_name
string

Plan name or title

career_aspirations
string

Career aspirations description

development_areas
object

Development areas (JSON array)

learning_objectives
object

Learning objectives (JSON array)

action_items
object

Action items (JSON array)

success_metrics
object

Success metrics (JSON array)

timeline_months
number [ 1 .. 36 ]
Default: 12

Timeline in months

last_reviewed_date
string

Last reviewed date

status
string
Enum: "DRAFT" "ACTIVE" "COMPLETED" "ON_HOLD"

Development plan status

manager_approval
boolean

Manager approval status

employee_commitment
boolean

Employee commitment status

Responses

Request samples

Content type
application/json
{
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 12,
  • "last_reviewed_date": "string",
  • "status": "DRAFT",
  • "manager_approval": true,
  • "employee_commitment": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 0,
  • "status": "DRAFT",
  • "manager_approval": true,
  • "employee_commitment": true,
  • "last_reviewed_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "cycle": { }
}

Delete development plan

Authorizations:
None
path Parameters
id
required
string

Responses

Approve development plan

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
comments
string

Approval comments

Responses

Request samples

Content type
application/json
{
  • "comments": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 0,
  • "status": "DRAFT",
  • "manager_approval": true,
  • "employee_commitment": true,
  • "last_reviewed_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "cycle": { }
}

Reject development plan

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
reason
required
string

Rejection reason

comments
string

Additional comments

Responses

Request samples

Content type
application/json
{
  • "reason": "string",
  • "comments": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 0,
  • "status": "DRAFT",
  • "manager_approval": true,
  • "employee_commitment": true,
  • "last_reviewed_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "cycle": { }
}

Employee commits to development plan

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
comments
string

Employee commitment comments

Responses

Request samples

Content type
application/json
{
  • "comments": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 0,
  • "status": "DRAFT",
  • "manager_approval": true,
  • "employee_commitment": true,
  • "last_reviewed_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "cycle": { }
}

Review and update development plan progress

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
review_comments
string

Review comments

progress_update
string

Progress update

updated_action_items
object

Updated action items

updated_success_metrics
object

Updated success metrics

Responses

Request samples

Content type
application/json
{
  • "review_comments": "string",
  • "progress_update": "string",
  • "updated_action_items": { },
  • "updated_success_metrics": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 0,
  • "status": "DRAFT",
  • "manager_approval": true,
  • "employee_commitment": true,
  • "last_reviewed_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "cycle": { }
}

Complete development plan

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 0,
  • "status": "DRAFT",
  • "manager_approval": true,
  • "employee_commitment": true,
  • "last_reviewed_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "cycle": { }
}

Put development plan on hold

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 0,
  • "status": "DRAFT",
  • "manager_approval": true,
  • "employee_commitment": true,
  • "last_reviewed_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "cycle": { }
}

Reactivate development plan from hold

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "cycle_id": "string",
  • "plan_name": "string",
  • "career_aspirations": "string",
  • "development_areas": { },
  • "learning_objectives": { },
  • "action_items": { },
  • "success_metrics": { },
  • "timeline_months": 0,
  • "status": "DRAFT",
  • "manager_approval": true,
  • "employee_commitment": true,
  • "last_reviewed_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "employee": { },
  • "cycle": { }
}

Get development plan statistics for a cycle

Authorizations:
None
path Parameters
cycleId
required
string

Responses

Performance - Review Templates

Review form templates

Create review template

Authorizations:
None
Request Body schema: application/json
required
name
required
string

Template name

template_type
required
string

Template type (annual, mid_year, quarterly, probation)

applicable_job_levels
object

Applicable job levels

applicable_departments
object

Applicable departments

sections
required
object

Review sections configuration

rating_scale
required
object

Rating scale configuration

questions
required
object

Review questions

competencies
object

Competency model

active
boolean
Default: true

Is template active

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "template_type": "string",
  • "applicable_job_levels": { },
  • "applicable_departments": { },
  • "sections": { },
  • "rating_scale": { },
  • "questions": { },
  • "competencies": { },
  • "active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "template_type": "string",
  • "applicable_job_levels": { },
  • "applicable_departments": { },
  • "sections": { },
  • "rating_scale": { },
  • "questions": { },
  • "competencies": { },
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string"
}

Get all review templates with pagination

Authorizations:
None
query Parameters
template_type
string

Filter by template type

active
boolean

Filter by active status

search
string

Search in name

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get active templates by type

Authorizations:
None
path Parameters
templateType
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get review template by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "template_type": "string",
  • "applicable_job_levels": { },
  • "applicable_departments": { },
  • "sections": { },
  • "rating_scale": { },
  • "questions": { },
  • "competencies": { },
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string"
}

Update review template

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string

Template name

template_type
string

Template type (annual, mid_year, quarterly, probation)

applicable_job_levels
object

Applicable job levels

applicable_departments
object

Applicable departments

sections
object

Review sections configuration

rating_scale
object

Rating scale configuration

questions
object

Review questions

competencies
object

Competency model

active
boolean
Default: true

Is template active

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "template_type": "string",
  • "applicable_job_levels": { },
  • "applicable_departments": { },
  • "sections": { },
  • "rating_scale": { },
  • "questions": { },
  • "competencies": { },
  • "active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "template_type": "string",
  • "applicable_job_levels": { },
  • "applicable_departments": { },
  • "sections": { },
  • "rating_scale": { },
  • "questions": { },
  • "competencies": { },
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string"
}

Delete review template

Authorizations:
None
path Parameters
id
required
string

Responses

Clone an existing template

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
new_name
required
string

New template name

modifications
object

Modifications to apply

Responses

Request samples

Content type
application/json
{
  • "new_name": "string",
  • "modifications": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "template_type": "string",
  • "applicable_job_levels": { },
  • "applicable_departments": { },
  • "sections": { },
  • "rating_scale": { },
  • "questions": { },
  • "competencies": { },
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string"
}

Toggle template active status

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "template_type": "string",
  • "applicable_job_levels": { },
  • "applicable_departments": { },
  • "sections": { },
  • "rating_scale": { },
  • "questions": { },
  • "competencies": { },
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string"
}

Training - Courses

Training course catalog and enrollment

Create training course

Authorizations:
None
Request Body schema: application/json
required
title
required
string
description
string
course_type
string
Enum: "INTERNAL" "EXTERNAL" "ONLINE" "VENDOR"
delivery_method
string
Enum: "CLASSROOM" "ONLINE" "BLENDED" "SELF_PACED" "ON_THE_JOB"
duration_hours
number
max_participants
number
prerequisites
Array of strings
learning_objectives
Array of strings
target_skills
Array of strings
content_outline
string
materials_required
Array of strings
cost_per_person
number
currency
string
provider_name
string
provider_contact
object
status
string
Enum: "DRAFT" "ACTIVE" "PAUSED" "RETIRED" "ARCHIVED"
approval_required
boolean
certificate_awarded
boolean
cpd_points
number

Responses

Request samples

Content type
application/json
{
  • "title": "Introduction to TypeScript",
  • "description": "Learn the fundamentals of TypeScript programming",
  • "course_type": "INTERNAL",
  • "delivery_method": "CLASSROOM",
  • "duration_hours": 16.5,
  • "max_participants": 20,
  • "prerequisites": [
    ],
  • "learning_objectives": [
    ],
  • "target_skills": [
    ],
  • "content_outline": "Module 1: Introduction\nModule 2: Types\nModule 3: Advanced Features",
  • "materials_required": [
    ],
  • "cost_per_person": 250,
  • "currency": "GBP",
  • "provider_name": "Tech Training Ltd",
  • "provider_contact": {
    },
  • "status": "DRAFT",
  • "approval_required": true,
  • "certificate_awarded": true,
  • "cpd_points": 12.5
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "title": "string",
  • "description": { },
  • "course_type": "INTERNAL",
  • "delivery_method": "CLASSROOM",
  • "duration_hours": { },
  • "max_participants": { },
  • "prerequisites": { },
  • "learning_objectives": { },
  • "target_skills": { },
  • "content_outline": { },
  • "materials_required": { },
  • "cost_per_person": { },
  • "currency": "string",
  • "provider_name": { },
  • "provider_contact": { },
  • "provider_website": { },
  • "accreditation_body": { },
  • "certification_validity_months": { },
  • "status": "DRAFT",
  • "approval_required": true,
  • "certificate_awarded": true,
  • "cpd_points": { },
  • "target_audience": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "sessions": [
    ]
}

Get all training courses

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

course_type
string
Enum: "INTERNAL" "EXTERNAL" "ONLINE" "VENDOR"
Example: course_type=INTERNAL
delivery_method
string
Enum: "CLASSROOM" "ONLINE" "BLENDED" "SELF_PACED" "ON_THE_JOB"
Example: delivery_method=ONLINE
status
string
Enum: "DRAFT" "ACTIVE" "PAUSED" "RETIRED" "ARCHIVED"
Example: status=ACTIVE
certificate_awarded
boolean
Example: certificate_awarded=true
search
string
Example: search=TypeScript
skill_id
string
Example: skill_id=uuid-of-skill

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get course catalog

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get course by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "title": "string",
  • "description": { },
  • "course_type": "INTERNAL",
  • "delivery_method": "CLASSROOM",
  • "duration_hours": { },
  • "max_participants": { },
  • "prerequisites": { },
  • "learning_objectives": { },
  • "target_skills": { },
  • "content_outline": { },
  • "materials_required": { },
  • "cost_per_person": { },
  • "currency": "string",
  • "provider_name": { },
  • "provider_contact": { },
  • "provider_website": { },
  • "accreditation_body": { },
  • "certification_validity_months": { },
  • "status": "DRAFT",
  • "approval_required": true,
  • "certificate_awarded": true,
  • "cpd_points": { },
  • "target_audience": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "sessions": [
    ]
}

Update training course

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
title
string
description
string
course_type
string
Enum: "INTERNAL" "EXTERNAL" "ONLINE" "VENDOR"
delivery_method
string
Enum: "CLASSROOM" "ONLINE" "BLENDED" "SELF_PACED" "ON_THE_JOB"
duration_hours
number
max_participants
number
prerequisites
Array of strings
learning_objectives
Array of strings
target_skills
Array of strings
content_outline
string
materials_required
Array of strings
cost_per_person
number
currency
string
provider_name
string
provider_contact
object
status
string
Enum: "DRAFT" "ACTIVE" "PAUSED" "RETIRED" "ARCHIVED"
approval_required
boolean
certificate_awarded
boolean
cpd_points
number

Responses

Request samples

Content type
application/json
{
  • "title": "Advanced TypeScript",
  • "description": "Master advanced TypeScript concepts",
  • "course_type": "INTERNAL",
  • "delivery_method": "ONLINE",
  • "duration_hours": 24,
  • "max_participants": 30,
  • "prerequisites": [
    ],
  • "learning_objectives": [
    ],
  • "target_skills": [
    ],
  • "content_outline": "string",
  • "materials_required": [
    ],
  • "cost_per_person": 350,
  • "currency": "GBP",
  • "provider_name": "string",
  • "provider_contact": { },
  • "status": "ACTIVE",
  • "approval_required": false,
  • "certificate_awarded": true,
  • "cpd_points": 15
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "title": "string",
  • "description": { },
  • "course_type": "INTERNAL",
  • "delivery_method": "CLASSROOM",
  • "duration_hours": { },
  • "max_participants": { },
  • "prerequisites": { },
  • "learning_objectives": { },
  • "target_skills": { },
  • "content_outline": { },
  • "materials_required": { },
  • "cost_per_person": { },
  • "currency": "string",
  • "provider_name": { },
  • "provider_contact": { },
  • "provider_website": { },
  • "accreditation_body": { },
  • "certification_validity_months": { },
  • "status": "DRAFT",
  • "approval_required": true,
  • "certificate_awarded": true,
  • "cpd_points": { },
  • "target_audience": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "sessions": [
    ]
}

Delete training course

Authorizations:
None
path Parameters
id
required
string

Responses

Update course status

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "title": "string",
  • "description": { },
  • "course_type": "INTERNAL",
  • "delivery_method": "CLASSROOM",
  • "duration_hours": { },
  • "max_participants": { },
  • "prerequisites": { },
  • "learning_objectives": { },
  • "target_skills": { },
  • "content_outline": { },
  • "materials_required": { },
  • "cost_per_person": { },
  • "currency": "string",
  • "provider_name": { },
  • "provider_contact": { },
  • "provider_website": { },
  • "accreditation_body": { },
  • "certification_validity_months": { },
  • "status": "DRAFT",
  • "approval_required": true,
  • "certificate_awarded": true,
  • "cpd_points": { },
  • "target_audience": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "sessions": [
    ]
}

Duplicate a course

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "title": "string",
  • "description": { },
  • "course_type": "INTERNAL",
  • "delivery_method": "CLASSROOM",
  • "duration_hours": { },
  • "max_participants": { },
  • "prerequisites": { },
  • "learning_objectives": { },
  • "target_skills": { },
  • "content_outline": { },
  • "materials_required": { },
  • "cost_per_person": { },
  • "currency": "string",
  • "provider_name": { },
  • "provider_contact": { },
  • "provider_website": { },
  • "accreditation_body": { },
  • "certification_validity_months": { },
  • "status": "DRAFT",
  • "approval_required": true,
  • "certificate_awarded": true,
  • "cpd_points": { },
  • "target_audience": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "sessions": [
    ]
}

Get courses by skill

Authorizations:
None
path Parameters
skillId
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create training session

Authorizations:
None
Request Body schema: application/json
required
course_id
required
string
session_name
string
start_date
required
string
end_date
required
string
location
string
virtual_meeting_link
string
instructor_id
string
external_instructor_name
string
max_capacity
number
status
string
Enum: "SCHEDULED" "IN_PROGRESS" "COMPLETED" "CANCELLED" "POSTPONED"
session_notes
string

Responses

Request samples

Content type
application/json
{
  • "course_id": "uuid-of-course",
  • "session_name": "January 2024 Session",
  • "start_date": "2024-01-15T09:00:00Z",
  • "end_date": "2024-01-17T17:00:00Z",
  • "location": "Training Room A, Building 2",
  • "virtual_meeting_link": "https://teams.microsoft.com/meet/xxx",
  • "instructor_id": "uuid-of-instructor",
  • "external_instructor_name": "Dr. Jane Smith",
  • "max_capacity": 20,
  • "status": "SCHEDULED",
  • "session_notes": "Please bring laptops with Node.js installed"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "course_id": "string",
  • "session_name": { },
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "location": { },
  • "virtual_meeting_link": { },
  • "instructor_id": { },
  • "external_instructor_name": { },
  • "max_capacity": { },
  • "current_enrollment": 0,
  • "status": "SCHEDULED",
  • "session_notes": { },
  • "evaluation_form_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "course": { },
  • "instructor": { },
  • "session_enrollments": [
    ]
}

Get all training sessions

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

course_id
string
Example: course_id=uuid-of-course
instructor_id
string
Example: instructor_id=uuid-of-instructor
status
string
Enum: "SCHEDULED" "IN_PROGRESS" "COMPLETED" "CANCELLED" "POSTPONED"
Example: status=SCHEDULED
start_date_from
string
Example: start_date_from=2024-01-01
start_date_to
string
Example: start_date_to=2024-12-31
search
string
Example: search=TypeScript
available_only
boolean
Example: available_only=true

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get upcoming sessions

Authorizations:
None
query Parameters
courseId
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get session by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "course_id": "string",
  • "session_name": { },
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "location": { },
  • "virtual_meeting_link": { },
  • "instructor_id": { },
  • "external_instructor_name": { },
  • "max_capacity": { },
  • "current_enrollment": 0,
  • "status": "SCHEDULED",
  • "session_notes": { },
  • "evaluation_form_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "course": { },
  • "instructor": { },
  • "session_enrollments": [
    ]
}

Update training session

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
session_name
string
start_date
string
end_date
string
location
string
virtual_meeting_link
string
instructor_id
string
external_instructor_name
string
max_capacity
number
status
string
Enum: "SCHEDULED" "IN_PROGRESS" "COMPLETED" "CANCELLED" "POSTPONED"
session_notes
string

Responses

Request samples

Content type
application/json
{
  • "session_name": "February 2024 Session",
  • "start_date": "2024-02-15T09:00:00Z",
  • "end_date": "2024-02-17T17:00:00Z",
  • "location": "Conference Room B",
  • "virtual_meeting_link": "https://zoom.us/j/xxx",
  • "instructor_id": "uuid-of-instructor",
  • "external_instructor_name": "Prof. John Doe",
  • "max_capacity": 25,
  • "status": "IN_PROGRESS",
  • "session_notes": "Session rescheduled due to instructor availability"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "course_id": "string",
  • "session_name": { },
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "location": { },
  • "virtual_meeting_link": { },
  • "instructor_id": { },
  • "external_instructor_name": { },
  • "max_capacity": { },
  • "current_enrollment": 0,
  • "status": "SCHEDULED",
  • "session_notes": { },
  • "evaluation_form_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "course": { },
  • "instructor": { },
  • "session_enrollments": [
    ]
}

Delete training session

Authorizations:
None
path Parameters
id
required
string

Responses

Get session availability

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "session_id": "string",
  • "course_title": "string",
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "location": { },
  • "virtual_meeting_link": { },
  • "max_capacity": 0,
  • "current_enrollment": 0,
  • "available_seats": 0,
  • "is_full": true,
  • "is_waitlist_available": true
}

Update session status

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "course_id": "string",
  • "session_name": { },
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": "2019-08-24T14:15:22Z",
  • "location": { },
  • "virtual_meeting_link": { },
  • "instructor_id": { },
  • "external_instructor_name": { },
  • "max_capacity": { },
  • "current_enrollment": 0,
  • "status": "SCHEDULED",
  • "session_notes": { },
  • "evaluation_form_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "course": { },
  • "instructor": { },
  • "session_enrollments": [
    ]
}

Get sessions by instructor

Authorizations:
None
path Parameters
instructorId
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get sessions for a specific course

Authorizations:
None
path Parameters
id
required
string
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

course_id
string
Example: course_id=uuid-of-course
instructor_id
string
Example: instructor_id=uuid-of-instructor
status
string
Enum: "SCHEDULED" "IN_PROGRESS" "COMPLETED" "CANCELLED" "POSTPONED"
Example: status=SCHEDULED
start_date_from
string
Example: start_date_from=2024-01-01
start_date_to
string
Example: start_date_to=2024-12-31
search
string
Example: search=TypeScript
available_only
boolean
Example: available_only=true

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Training - Skills

Skills tracking and development

Create skill category

Authorizations:
None
Request Body schema: application/json
required
name
required
string
description
string
parent_id
string
display_order
number
active
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "Technical Skills",
  • "description": "Technical competencies required for engineering roles",
  • "parent_id": "uuid-of-parent-category",
  • "display_order": 1,
  • "active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "description": { },
  • "parent_id": { },
  • "display_order": 0,
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "parent": { },
  • "children": [
    ]
}

Get all skill categories

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

active
boolean
Example: active=true
parent_id
string
Example: parent_id=uuid-of-parent-category
search
string
Example: search=Technical

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get skill category tree

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get skill category by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "description": { },
  • "parent_id": { },
  • "display_order": 0,
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "parent": { },
  • "children": [
    ]
}

Update skill category

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string
description
string
parent_id
string
display_order
number
active
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "Technical Skills",
  • "description": "Technical competencies required for engineering roles",
  • "parent_id": "uuid-of-parent-category",
  • "display_order": 1,
  • "active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "description": { },
  • "parent_id": { },
  • "display_order": 0,
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "parent": { },
  • "children": [
    ]
}

Delete skill category

Authorizations:
None
path Parameters
id
required
string

Responses

Create skill

Authorizations:
None
Request Body schema: application/json
required
name
required
string
category_id
string
description
string
skill_type
string
Enum: "TECHNICAL" "SOFT" "LEADERSHIP" "FUNCTIONAL" "COMPLIANCE"
proficiency_levels
object
assessment_criteria
object
market_demand
string
Enum: "HIGH" "MEDIUM" "LOW"
active
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "TypeScript",
  • "category_id": "uuid-of-category",
  • "description": "JavaScript superset with static typing",
  • "skill_type": "TECHNICAL",
  • "proficiency_levels": {
    },
  • "assessment_criteria": {
    },
  • "market_demand": "HIGH",
  • "active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "category_id": { },
  • "name": "string",
  • "description": { },
  • "skill_type": "TECHNICAL",
  • "proficiency_levels": { },
  • "assessment_criteria": { },
  • "market_demand": "HIGH",
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "category": { }
}

Get all skills

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

active
boolean
Example: active=true
category_id
string
Example: category_id=uuid-of-category
skill_type
string
Enum: "TECHNICAL" "SOFT" "LEADERSHIP" "FUNCTIONAL" "COMPLIANCE"
Example: skill_type=TECHNICAL
market_demand
string
Enum: "HIGH" "MEDIUM" "LOW"
Example: market_demand=HIGH
search
string
Example: search=TypeScript

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get high demand skills

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get skill by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "category_id": { },
  • "name": "string",
  • "description": { },
  • "skill_type": "TECHNICAL",
  • "proficiency_levels": { },
  • "assessment_criteria": { },
  • "market_demand": "HIGH",
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "category": { }
}

Update skill

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string
category_id
string
description
string
skill_type
string
Enum: "TECHNICAL" "SOFT" "LEADERSHIP" "FUNCTIONAL" "COMPLIANCE"
proficiency_levels
object
assessment_criteria
object
market_demand
string
Enum: "HIGH" "MEDIUM" "LOW"
active
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "TypeScript",
  • "category_id": "uuid-of-category",
  • "description": "JavaScript superset with static typing",
  • "skill_type": "TECHNICAL",
  • "proficiency_levels": { },
  • "assessment_criteria": { },
  • "market_demand": "HIGH",
  • "active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "category_id": { },
  • "name": "string",
  • "description": { },
  • "skill_type": "TECHNICAL",
  • "proficiency_levels": { },
  • "assessment_criteria": { },
  • "market_demand": "HIGH",
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "category": { }
}

Delete skill

Authorizations:
None
path Parameters
id
required
string

Responses

Get skills by category

Authorizations:
None
path Parameters
categoryId
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Assign skill to employee

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string
skill_id
required
string
current_level
string
Enum: "BEGINNER" "DEVELOPING" "COMPETENT" "PROFICIENT" "EXPERT"
target_level
string
Enum: "BEGINNER" "DEVELOPING" "COMPETENT" "PROFICIENT" "EXPERT"
notes
string

Responses

Request samples

Content type
application/json
{
  • "employee_id": "uuid-of-employee",
  • "skill_id": "uuid-of-skill",
  • "current_level": "BEGINNER",
  • "target_level": "COMPETENT",
  • "notes": "Employee has demonstrated strong skills in this area"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "skill_id": "string",
  • "current_level": "BEGINNER",
  • "target_level": "BEGINNER",
  • "self_assessment": "BEGINNER",
  • "manager_assessment": "BEGINNER",
  • "verified_level": "BEGINNER",
  • "last_assessed_date": { },
  • "notes": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "skill": { }
}

Get all employee skills

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

employee_id
string
Example: employee_id=uuid-of-employee
skill_id
string
Example: skill_id=uuid-of-skill
current_level
string
Enum: "BEGINNER" "DEVELOPING" "COMPETENT" "PROFICIENT" "EXPERT"
Example: current_level=COMPETENT
target_level
string
Enum: "BEGINNER" "DEVELOPING" "COMPETENT" "PROFICIENT" "EXPERT"
Example: target_level=EXPERT
search
string
Example: search=TypeScript

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get employee skill matrix

Authorizations:
None
path Parameters
employeeId
required
string

Responses

Response samples

Content type
application/json
{
  • "employee_id": "string",
  • "employee_name": "string",
  • "department": "string",
  • "job_title": "string",
  • "skills": [
    ],
  • "skill_summary": { }
}

Get employee skill gap analysis

Authorizations:
None
path Parameters
employeeId
required
string

Responses

Get employee skill by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "skill_id": "string",
  • "current_level": "BEGINNER",
  • "target_level": "BEGINNER",
  • "self_assessment": "BEGINNER",
  • "manager_assessment": "BEGINNER",
  • "verified_level": "BEGINNER",
  • "last_assessed_date": { },
  • "notes": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "skill": { }
}

Update employee skill

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
current_level
string
Enum: "BEGINNER" "DEVELOPING" "COMPETENT" "PROFICIENT" "EXPERT"
target_level
string
Enum: "BEGINNER" "DEVELOPING" "COMPETENT" "PROFICIENT" "EXPERT"
self_assessment
string
Enum: "BEGINNER" "DEVELOPING" "COMPETENT" "PROFICIENT" "EXPERT"
manager_assessment
string
Enum: "BEGINNER" "DEVELOPING" "COMPETENT" "PROFICIENT" "EXPERT"
verified_level
string
Enum: "BEGINNER" "DEVELOPING" "COMPETENT" "PROFICIENT" "EXPERT"
last_assessed_date
string
notes
string

Responses

Request samples

Content type
application/json
{
  • "current_level": "DEVELOPING",
  • "target_level": "PROFICIENT",
  • "self_assessment": "DEVELOPING",
  • "manager_assessment": "COMPETENT",
  • "verified_level": "COMPETENT",
  • "last_assessed_date": "2024-01-15",
  • "notes": "Updated assessment notes"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "skill_id": "string",
  • "current_level": "BEGINNER",
  • "target_level": "BEGINNER",
  • "self_assessment": "BEGINNER",
  • "manager_assessment": "BEGINNER",
  • "verified_level": "BEGINNER",
  • "last_assessed_date": { },
  • "notes": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "skill": { }
}

Remove skill from employee

Authorizations:
None
path Parameters
id
required
string

Responses

Assess employee skill

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
assessment_level
required
string
Enum: "BEGINNER" "DEVELOPING" "COMPETENT" "PROFICIENT" "EXPERT"
assessment_type
required
string
Enum: "self" "manager" "verified"
notes
string

Responses

Request samples

Content type
application/json
{
  • "assessment_level": "COMPETENT",
  • "assessment_type": "self",
  • "notes": "Assessment notes and comments"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "skill_id": "string",
  • "current_level": "BEGINNER",
  • "target_level": "BEGINNER",
  • "self_assessment": "BEGINNER",
  • "manager_assessment": "BEGINNER",
  • "verified_level": "BEGINNER",
  • "last_assessed_date": { },
  • "notes": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "employee": { },
  • "skill": { }
}

Training - Tenant Learning Content

Tenant-specific learning content

Create tenant learning content

Authorizations:
None
Request Body schema: application/json
required
template_id
string

Reference to template ID

code
required
string

Content code

title
required
string

Content title

description
string

Content description

content_type
required
string
Enum: "VIDEO" "DOCUMENT" "PRESENTATION" "INTERACTIVE" "ASSESSMENT" "WEBINAR" "COURSE"

Content type

category
required
string

Content category

learning_level
string
Default: "BEGINNER"
Enum: "BEGINNER" "INTERMEDIATE" "ADVANCED" "EXPERT"

Learning level

target_audience
required
Array of strings

Target audience

estimated_duration_minutes
number
Default: 30

Estimated duration in minutes

primary_file_path
string

Primary file path

learning_objectives
Array of strings
Default: []

Learning objectives

has_assessment
boolean
Default: false

Has assessment

certification_available
boolean
Default: false

Certification available

mandatory_for_roles
required
Array of strings

Mandatory for roles

compliance_requirement
boolean
Default: false

Compliance requirement

custom_content
object
Default: {}

Custom content (JSON)

is_active
boolean
Default: true

Is active

Responses

Request samples

Content type
application/json
{
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "content_type": "VIDEO",
  • "category": "string",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 30,
  • "primary_file_path": "string",
  • "learning_objectives": [ ],
  • "has_assessment": false,
  • "certification_available": false,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": false,
  • "custom_content": { },
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "content_type": "VIDEO",
  • "category": "string",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 0,
  • "primary_file_path": "string",
  • "learning_objectives": [
    ],
  • "has_assessment": true,
  • "certification_available": true,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": true,
  • "custom_content": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ],
  • "tenant_learning_progress": [
    ]
}

Get all tenant learning contents

Authorizations:
None
query Parameters
template_id
string

Filter by template ID

content_type
string
Enum: "VIDEO" "DOCUMENT" "PRESENTATION" "INTERACTIVE" "ASSESSMENT" "WEBINAR" "COURSE"

Filter by content type

category
string

Filter by category

learning_level
string
Enum: "BEGINNER" "INTERMEDIATE" "ADVANCED" "EXPERT"

Filter by learning level

is_active
boolean

Filter by active status

compliance_requirement
boolean

Filter by compliance requirement

search
string

Search in title and description

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get contents by category

Authorizations:
None
path Parameters
category
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get mandatory contents for role

Authorizations:
None
path Parameters
role
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get compliance required contents

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get tenant learning content by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "content_type": "VIDEO",
  • "category": "string",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 0,
  • "primary_file_path": "string",
  • "learning_objectives": [
    ],
  • "has_assessment": true,
  • "certification_available": true,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": true,
  • "custom_content": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ],
  • "tenant_learning_progress": [
    ]
}

Update tenant learning content

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
template_id
string

Reference to template ID

code
string

Content code

title
string

Content title

description
string

Content description

content_type
string
Enum: "VIDEO" "DOCUMENT" "PRESENTATION" "INTERACTIVE" "ASSESSMENT" "WEBINAR" "COURSE"

Content type

category
string

Content category

learning_level
string
Default: "BEGINNER"
Enum: "BEGINNER" "INTERMEDIATE" "ADVANCED" "EXPERT"

Learning level

target_audience
Array of strings

Target audience

estimated_duration_minutes
number
Default: 30

Estimated duration in minutes

primary_file_path
string

Primary file path

learning_objectives
Array of strings
Default: []

Learning objectives

has_assessment
boolean
Default: false

Has assessment

certification_available
boolean
Default: false

Certification available

mandatory_for_roles
Array of strings

Mandatory for roles

compliance_requirement
boolean
Default: false

Compliance requirement

custom_content
object
Default: {}

Custom content (JSON)

is_active
boolean
Default: true

Is active

Responses

Request samples

Content type
application/json
{
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "content_type": "VIDEO",
  • "category": "string",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 30,
  • "primary_file_path": "string",
  • "learning_objectives": [ ],
  • "has_assessment": false,
  • "certification_available": false,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": false,
  • "custom_content": { },
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "content_type": "VIDEO",
  • "category": "string",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 0,
  • "primary_file_path": "string",
  • "learning_objectives": [
    ],
  • "has_assessment": true,
  • "certification_available": true,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": true,
  • "custom_content": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ],
  • "tenant_learning_progress": [
    ]
}

Delete tenant learning content

Authorizations:
None
path Parameters
id
required
string

Responses

Clone tenant learning content

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
new_code
required
string

New content code

new_title
required
string

New content title

modifications
object

Modifications to apply

Responses

Request samples

Content type
application/json
{
  • "new_code": "string",
  • "new_title": "string",
  • "modifications": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "content_type": "VIDEO",
  • "category": "string",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 0,
  • "primary_file_path": "string",
  • "learning_objectives": [
    ],
  • "has_assessment": true,
  • "certification_available": true,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": true,
  • "custom_content": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ],
  • "tenant_learning_progress": [
    ]
}

Activate tenant learning content

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "content_type": "VIDEO",
  • "category": "string",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 0,
  • "primary_file_path": "string",
  • "learning_objectives": [
    ],
  • "has_assessment": true,
  • "certification_available": true,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": true,
  • "custom_content": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ],
  • "tenant_learning_progress": [
    ]
}

Deactivate tenant learning content

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "content_type": "VIDEO",
  • "category": "string",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 0,
  • "primary_file_path": "string",
  • "learning_objectives": [
    ],
  • "has_assessment": true,
  • "certification_available": true,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": true,
  • "custom_content": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ],
  • "tenant_learning_progress": [
    ]
}

Training - Tenant Learning Path

Learning paths and curricula

Create tenant learning path

Authorizations:
None
Request Body schema: application/json
required
template_id
string

Reference to template ID

code
required
string

Path code

title
required
string

Path title

description
string

Path description

path_type
required
string

Path type

target_audience
required
Array of strings

Target audience

estimated_duration_hours
required
number

Estimated duration in hours

certification_available
boolean
Default: false

Certification available

mandatory
boolean
Default: false

Is mandatory

modules
required
object
Default: []

Modules (JSON array)

custom_modules
object
Default: {}

Custom modules (JSON)

is_active
boolean
Default: true

Is active

Responses

Request samples

Content type
application/json
{
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": false,
  • "mandatory": false,
  • "modules": [ ],
  • "custom_modules": { },
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": true,
  • "mandatory": true,
  • "modules": { },
  • "custom_modules": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ]
}

Get all tenant learning paths

Authorizations:
None
query Parameters
template_id
string

Filter by template ID

path_type
string

Filter by path type

mandatory
boolean

Filter by mandatory status

certification_available
boolean

Filter by certification availability

is_active
boolean

Filter by active status

search
string

Search in title and description

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get mandatory learning paths

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get learning paths by type

Authorizations:
None
path Parameters
pathType
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get tenant learning path by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": true,
  • "mandatory": true,
  • "modules": { },
  • "custom_modules": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ]
}

Update tenant learning path

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
template_id
string

Reference to template ID

code
string

Path code

title
string

Path title

description
string

Path description

path_type
string

Path type

target_audience
Array of strings

Target audience

estimated_duration_hours
number

Estimated duration in hours

certification_available
boolean
Default: false

Certification available

mandatory
boolean
Default: false

Is mandatory

modules
object
Default: []

Modules (JSON array)

custom_modules
object
Default: {}

Custom modules (JSON)

is_active
boolean
Default: true

Is active

Responses

Request samples

Content type
application/json
{
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": false,
  • "mandatory": false,
  • "modules": [ ],
  • "custom_modules": { },
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": true,
  • "mandatory": true,
  • "modules": { },
  • "custom_modules": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ]
}

Delete tenant learning path

Authorizations:
None
path Parameters
id
required
string

Responses

Clone tenant learning path

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
new_code
required
string

New path code

new_title
required
string

New path title

modifications
object

Modifications to apply

Responses

Request samples

Content type
application/json
{
  • "new_code": "string",
  • "new_title": "string",
  • "modifications": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": true,
  • "mandatory": true,
  • "modules": { },
  • "custom_modules": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ]
}

Add module to learning path

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
module_name
required
string

Module name

content_id
required
string

Module content ID

sequence
required
number

Module sequence

is_mandatory
boolean
Default: true

Is mandatory module

duration_hours
number

Module duration in hours

Responses

Request samples

Content type
application/json
{
  • "module_name": "string",
  • "content_id": "string",
  • "sequence": 0,
  • "is_mandatory": true,
  • "duration_hours": 0
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": true,
  • "mandatory": true,
  • "modules": { },
  • "custom_modules": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ]
}

Remove module from learning path

Authorizations:
None
path Parameters
id
required
string
moduleId
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": "string",
  • "code": "string",
  • "title": "string",
  • "description": "string",
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": true,
  • "mandatory": true,
  • "modules": { },
  • "custom_modules": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": "string",
  • "updated_by_id": "string",
  • "created_by": "string",
  • "updated_by": "string",
  • "template": { },
  • "training_enrollments": [
    ]
}

Compensation - Rate Groups

Rate structures and categories

Create a new rate group

Authorizations:
JWT-auth
Request Body schema: application/json
required
code
required
string

Rate group code

title
required
string

Rate group title

category
required
string
Enum: "NMW" "SSP" "SMP" "SPP" "ShPP" "SPBP" "TAX_BAND" "NI_THRESHOLD" "NI_RATE" "PENSION_AE" "LEVY" "HOLIDAY_DAYS" "WORKING_TIME_MAX"
description
string

Description

unit
required
string
Enum: "HOURLY" "WEEKLY" "MONTHLY" "YEARLY" "PERCENT" "CURRENCY" "DAYS" "HOURS"
jurisdiction
string
Default: "UK"
Enum: "UK" "ENGLAND" "WALES" "SCOTLAND" "N_IRELAND"

Responses

Request samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "category": "NMW",
  • "description": "string",
  • "unit": "HOURLY",
  • "jurisdiction": "UK"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "string",
  • "title": "string",
  • "category": "NMW",
  • "description": { },
  • "unit": "HOURLY",
  • "jurisdiction": "UK",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Get all rate groups with optional search filters

Authorizations:
JWT-auth
query Parameters
category
string

Filter by category

unit
string

Filter by unit

jurisdiction
string

Filter by jurisdiction

search
string

Search in code and title

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get rate group statistics

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "byCategory": { },
  • "byJurisdiction": { }
}

Get all available rate categories

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
[
  • "string"
]

Get rate groups by category

Authorizations:
JWT-auth
path Parameters
category
required
string

Rate category

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get a rate group by ID

Authorizations:
JWT-auth
path Parameters
id
required
string

Rate Group ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "string",
  • "title": "string",
  • "category": "NMW",
  • "description": { },
  • "unit": "HOURLY",
  • "jurisdiction": "UK",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update a rate group

Authorizations:
JWT-auth
path Parameters
id
required
string

Rate Group ID

Request Body schema: application/json
required
title
string

Rate group title

description
string

Description

unit
string
Enum: "HOURLY" "WEEKLY" "MONTHLY" "YEARLY" "PERCENT" "CURRENCY" "DAYS" "HOURS"
jurisdiction
string
Enum: "UK" "ENGLAND" "WALES" "SCOTLAND" "N_IRELAND"

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "description": "string",
  • "unit": "HOURLY",
  • "jurisdiction": "UK"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "string",
  • "title": "string",
  • "category": "NMW",
  • "description": { },
  • "unit": "HOURLY",
  • "jurisdiction": "UK",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete a rate group

Authorizations:
JWT-auth
path Parameters
id
required
string

Rate Group ID

Responses

Get all rate entries for a rate group

Authorizations:
JWT-auth
path Parameters
id
required
string

Rate Group ID

Responses

Response samples

Content type
application/json
[
  • { }
]

Compensation - Rate Entries

Detailed rate configurations

Create a new rate entry

Authorizations:
JWT-auth
Request Body schema: application/json
required
groupId
required
string <uuid>

Rate Group ID

startsAt
required
string

Effective start date

endsAt
string

Effective end date

params
object

Flexible dimension parameters (JSON)

valueDecimal
string

Rate value (decimal)

valueText
string

Rate value (text)

notes
string

Additional notes

citation
required
string

Legal citation

url
required
string

Reference URL

Responses

Request samples

Content type
application/json
{
  • "groupId": "eb54e96e-21b8-4f54-9cd4-80fccbd06f55",
  • "startsAt": "2024-01-01",
  • "endsAt": "2024-12-31",
  • "params": "{\"ageBand\":\"21-22\",\"taxYear\":\"2025/26\"}",
  • "valueDecimal": "10.42",
  • "valueText": "90% of AWE",
  • "notes": "string",
  • "citation": "NMW Act 1998 – s.1",
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "startsAt": "2019-08-24T14:15:22Z",
  • "endsAt": { },
  • "params": { },
  • "valueDecimal": { },
  • "valueText": { },
  • "notes": { },
  • "citation": "string",
  • "url": "string",
  • "created_at": "2019-08-24T14:15:22Z"
}

Get all rate entries with optional search filters

Authorizations:
JWT-auth
query Parameters
groupId
string <uuid>

Filter by rate group ID

effectiveOn
string
Example: effectiveOn=2024-01-01

Filter by effective date

startsFrom
string
Example: startsFrom=2024-01-01

Filter by start date from

startsTo
string
Example: startsTo=2024-12-31

Filter by start date to

paramsFilter
object (Object)

Filter by parameters (JSON object)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get rate entry statistics

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
{
  • "total": 0,
  • "active": 0,
  • "expired": 0
}

Get active rate entries for a rate group

Authorizations:
JWT-auth
path Parameters
groupId
required
string

Rate Group ID

query Parameters
effectiveDate
string

Effective date (ISO string)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get latest rate entry for a group with optional parameters

Authorizations:
JWT-auth
path Parameters
groupId
required
string

Rate Group ID

query Parameters
params
string

Parameters filter (JSON string)

effectiveDate
string

Effective date (ISO string)

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "startsAt": "2019-08-24T14:15:22Z",
  • "endsAt": { },
  • "params": { },
  • "valueDecimal": { },
  • "valueText": { },
  • "notes": { },
  • "citation": "string",
  • "url": "string",
  • "created_at": "2019-08-24T14:15:22Z"
}

Get a rate entry by ID

Authorizations:
JWT-auth
path Parameters
id
required
string

Rate Entry ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "startsAt": "2019-08-24T14:15:22Z",
  • "endsAt": { },
  • "params": { },
  • "valueDecimal": { },
  • "valueText": { },
  • "notes": { },
  • "citation": "string",
  • "url": "string",
  • "created_at": "2019-08-24T14:15:22Z"
}

Update a rate entry

Authorizations:
JWT-auth
path Parameters
id
required
string

Rate Entry ID

Request Body schema: application/json
required
endsAt
string

Effective end date

params
object

Flexible dimension parameters (JSON)

valueDecimal
string

Rate value (decimal)

valueText
string

Rate value (text)

notes
string

Additional notes

citation
string

Legal citation

url
string

Reference URL

Responses

Request samples

Content type
application/json
{
  • "endsAt": "2024-12-31",
  • "params": "{\"ageBand\":\"21-22\",\"taxYear\":\"2025/26\"}",
  • "valueDecimal": "10.42",
  • "valueText": "90% of AWE",
  • "notes": "string",
  • "citation": "string",
  • "url": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "startsAt": "2019-08-24T14:15:22Z",
  • "endsAt": { },
  • "params": { },
  • "valueDecimal": { },
  • "valueText": { },
  • "notes": { },
  • "citation": "string",
  • "url": "string",
  • "created_at": "2019-08-24T14:15:22Z"
}

Delete a rate entry

Permanently deletes a rate entry record

Authorizations:
JWT-auth
path Parameters
id
required
string

Rate Entry ID

Responses

Get rate entry details with group information

Authorizations:
JWT-auth
path Parameters
id
required
string

Rate Entry ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "startsAt": "2019-08-24T14:15:22Z",
  • "endsAt": { },
  • "params": { },
  • "valueDecimal": { },
  • "valueText": { },
  • "notes": { },
  • "citation": "string",
  • "url": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "group": { }
}

Close a rate entry (set end date)

Authorizations:
JWT-auth
path Parameters
id
required
string

Rate Entry ID

query Parameters
endDate
string

End date (ISO string)

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "startsAt": "2019-08-24T14:15:22Z",
  • "endsAt": { },
  • "params": { },
  • "valueDecimal": { },
  • "valueText": { },
  • "notes": { },
  • "citation": "string",
  • "url": "string",
  • "created_at": "2019-08-24T14:15:22Z"
}

Payroll - Pay Elements

Compensation components and structures

Create a new pay element

Authorizations:
None
Request Body schema: application/json
required
name
required
string [ 2 .. 100 ] characters

Pay element name

code
required
string [ 2 .. 50 ] characters

Pay element code (unique)

type
required
string
Enum: "EARNING" "DEDUCTION" "BENEFIT"

Pay element type

taxable
boolean
Default: true

Whether this element is taxable

subject_to_ni
boolean
Default: true

Whether this element is subject to National Insurance

subject_to_pension
boolean
Default: false

Whether this element is subject to pension contributions

default_amount
number >= 0

Default amount for this pay element

Responses

Request samples

Content type
application/json
{
  • "name": "Basic Salary",
  • "code": "BASIC_SALARY",
  • "type": "EARNING",
  • "taxable": true,
  • "subject_to_ni": true,
  • "subject_to_pension": false,
  • "default_amount": 3000
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "code": "string",
  • "type": "EARNING",
  • "taxable": true,
  • "subject_to_ni": true,
  • "subject_to_pension": true,
  • "default_amount": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Get all pay elements with pagination and filters

Authorizations:
None
query Parameters
type
string
Enum: "EARNING" "DEDUCTION" "BENEFIT"
Example: type=EARNING

Filter by pay element type

taxable
boolean
Example: taxable=true

Filter by taxable status

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Create default pay elements for tenant setup

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get pay elements by type

Authorizations:
None
path Parameters
type
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get pay element statistics

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "totalPayElements": 0,
  • "earningElements": 0,
  • "deductionElements": 0,
  • "benefitElements": 0,
  • "taxableElements": 0,
  • "nonTaxableElements": 0,
  • "pensionableElements": 0
}

Get pay element by code

Authorizations:
None
path Parameters
code
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "code": "string",
  • "type": "EARNING",
  • "taxable": true,
  • "subject_to_ni": true,
  • "subject_to_pension": true,
  • "default_amount": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Get pay element by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "code": "string",
  • "type": "EARNING",
  • "taxable": true,
  • "subject_to_ni": true,
  • "subject_to_pension": true,
  • "default_amount": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Update a pay element

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string [ 2 .. 100 ] characters

Pay element name

type
string
Enum: "EARNING" "DEDUCTION" "BENEFIT"

Pay element type

taxable
boolean

Whether this element is taxable

subject_to_ni
boolean

Whether this element is subject to National Insurance

subject_to_pension
boolean

Whether this element is subject to pension contributions

default_amount
number >= 0

Default amount for this pay element

Responses

Request samples

Content type
application/json
{
  • "name": "Basic Salary Updated",
  • "type": "EARNING",
  • "taxable": true,
  • "subject_to_ni": true,
  • "subject_to_pension": false,
  • "default_amount": 3500
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "code": "string",
  • "type": "EARNING",
  • "taxable": true,
  • "subject_to_ni": true,
  • "subject_to_pension": true,
  • "default_amount": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Delete a pay element

Authorizations:
None
path Parameters
id
required
string

Responses

Admin test endpoint for pay elements

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "timestamp": "string",
  • "module": "string"
}

Payroll - Pay Assignments

Employee compensation setup

Create a new employee pay assignment

Authorizations:
None
Request Body schema: application/json
required
employee_id
required
string

Employee ID

pay_element_id
required
string

Pay element ID

amount
required
number >= 0

Assignment amount

effective_from
required
string

Effective from date

effective_to
string

Effective to date (null for open-ended)

frequency
required
string
Enum: "WEEKLY" "BIWEEKLY" "MONTHLY" "YEARLY" "HOURLY"

Pay frequency

paye_scheme_id
string

PAYE scheme ID

Responses

Request samples

Content type
application/json
{
  • "employee_id": "550e8400-e29b-41d4-a716-446655440000",
  • "pay_element_id": "550e8400-e29b-41d4-a716-446655440000",
  • "amount": 3000,
  • "effective_from": "2024-01-01",
  • "effective_to": "2024-12-31",
  • "frequency": "MONTHLY",
  • "paye_scheme_id": "550e8400-e29b-41d4-a716-446655440000"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "pay_element_id": "string",
  • "amount": 0,
  • "effective_from": "2019-08-24T14:15:22Z",
  • "effective_to": { },
  • "frequency": "MONTHLY",
  • "paye_scheme_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "pay_element": { },
  • "paye_scheme": { }
}

Get employee pay assignments with optional filters and pagination

Authorizations:
None
query Parameters
employeeId
string
Example: employeeId=550e8400-e29b-41d4-a716-446655440000

Filter by employee ID

payElementId
string
Example: payElementId=550e8400-e29b-41d4-a716-446655440000

Filter by pay element ID

frequency
string
Enum: "WEEKLY" "BIWEEKLY" "MONTHLY" "YEARLY" "HOURLY"
Example: frequency=MONTHLY

Filter by pay frequency

activeOnly
boolean
Example: activeOnly=true

Show only active assignments

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get active assignments for an employee

Authorizations:
None
path Parameters
employeeId
required
string
query Parameters
asOfDate
string

Check assignments as of this date (YYYY-MM-DD)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get employee pay assignment statistics

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "totalAssignments": 0,
  • "activeAssignments": 0,
  • "terminatedAssignments": 0,
  • "frequencyBreakdown": {
    },
  • "averageAssignmentAmount": 0
}

Get employee pay assignment by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "pay_element_id": "string",
  • "amount": 0,
  • "effective_from": "2019-08-24T14:15:22Z",
  • "effective_to": { },
  • "frequency": "MONTHLY",
  • "paye_scheme_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "pay_element": { },
  • "paye_scheme": { }
}

Update an employee pay assignment

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
amount
number >= 0

Assignment amount

effective_from
string

Effective from date

effective_to
string

Effective to date (null for open-ended)

frequency
string
Enum: "WEEKLY" "BIWEEKLY" "MONTHLY" "YEARLY" "HOURLY"

Pay frequency

paye_scheme_id
string

PAYE scheme ID

updated_by_id
string

Updated by user ID

updated_by
string

Updated by user email

Responses

Request samples

Content type
application/json
{
  • "amount": 3500,
  • "effective_from": "2024-02-01",
  • "effective_to": "2024-12-31",
  • "frequency": "MONTHLY",
  • "paye_scheme_id": "550e8400-e29b-41d4-a716-446655440000",
  • "updated_by_id": "550e8400-e29b-41d4-a716-446655440000",
  • "updated_by": "john.doe@example.com"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "pay_element_id": "string",
  • "amount": 0,
  • "effective_from": "2019-08-24T14:15:22Z",
  • "effective_to": { },
  • "frequency": "MONTHLY",
  • "paye_scheme_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "pay_element": { },
  • "paye_scheme": { }
}

Delete an employee pay assignment

Authorizations:
None
path Parameters
id
required
string

Responses

Terminate an employee pay assignment

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
effective_to
required
string

Termination date

reason
string <= 500 characters

Termination reason

Responses

Request samples

Content type
application/json
{
  • "effective_to": "2024-06-30",
  • "reason": "Employee resignation"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "employee_id": "string",
  • "pay_element_id": "string",
  • "amount": 0,
  • "effective_from": "2019-08-24T14:15:22Z",
  • "effective_to": { },
  • "frequency": "MONTHLY",
  • "paye_scheme_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "employee": { },
  • "pay_element": { },
  • "paye_scheme": { }
}

Admin test endpoint for employee pay assignments

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "timestamp": "string",
  • "module": "string"
}

Payroll - Pay Schedules

Payment schedules and frequencies

Create a new pay schedule

Authorizations:
None
Request Body schema: application/json
required
company_id
required
string

Company ID

name
required
string [ 1 .. 255 ] characters

Pay schedule name

frequency
required
string
Enum: "WEEKLY" "BIWEEKLY" "MONTHLY" "YEARLY" "HOURLY"

Pay frequency

pay_day
number [ 1 .. 31 ]

Pay day of month (for monthly/yearly frequencies)

week_day
number [ 1 .. 7 ]

Pay day of week (for weekly/biweekly frequencies)

start_date
required
string

Schedule start date

end_date
string

Schedule end date

Responses

Request samples

Content type
application/json
{
  • "company_id": "550e8400-e29b-41d4-a716-446655440000",
  • "name": "Monthly Payroll",
  • "frequency": "MONTHLY",
  • "pay_day": 25,
  • "week_day": 5,
  • "start_date": "2024-01-01T00:00:00.000Z",
  • "end_date": "2024-12-31T23:59:59.000Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "name": "string",
  • "frequency": "WEEKLY",
  • "pay_day": { },
  • "week_day": { },
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "company": { }
}

Get all pay schedules with pagination and filters

Authorizations:
None
query Parameters
frequency
string
Enum: "WEEKLY" "BIWEEKLY" "MONTHLY" "YEARLY" "HOURLY"

Filter by pay frequency

activeOnly
boolean
Example: activeOnly=true

Filter to show only active pay schedules

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get all active pay schedules

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get pay schedules by frequency

Authorizations:
None
path Parameters
frequency
required
string
query Parameters
activeOnly
boolean

Filter to show only active pay schedules

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get pay schedule statistics

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "totalSchedules": 0,
  • "activeSchedules": 0,
  • "inactiveSchedules": 0,
  • "frequencyBreakdown": {
    }
}

Get a pay schedule by name

Authorizations:
None
path Parameters
name
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "name": "string",
  • "frequency": "WEEKLY",
  • "pay_day": { },
  • "week_day": { },
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "company": { }
}

Get a pay schedule by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "name": "string",
  • "frequency": "WEEKLY",
  • "pay_day": { },
  • "week_day": { },
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "company": { }
}

Update a pay schedule

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string [ 1 .. 255 ] characters

Pay schedule name

frequency
string
Enum: "WEEKLY" "BIWEEKLY" "MONTHLY" "YEARLY" "HOURLY"

Pay frequency

pay_day
number [ 1 .. 31 ]

Pay day of month (for monthly/yearly frequencies)

week_day
number [ 1 .. 7 ]

Pay day of week (for weekly/biweekly frequencies)

start_date
string

Schedule start date

end_date
string

Schedule end date

Responses

Request samples

Content type
application/json
{
  • "name": "Monthly Payroll",
  • "frequency": "WEEKLY",
  • "pay_day": 25,
  • "week_day": 5,
  • "start_date": "2024-01-01T00:00:00.000Z",
  • "end_date": "2024-12-31T23:59:59.000Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "name": "string",
  • "frequency": "WEEKLY",
  • "pay_day": { },
  • "week_day": { },
  • "start_date": "2019-08-24T14:15:22Z",
  • "end_date": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "company": { }
}

Delete a pay schedule

Authorizations:
None
path Parameters
id
required
string

Responses

Calculate next pay date for a pay schedule

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "currentPayDate": "2019-08-24T14:15:22Z",
  • "nextPayDate": "2019-08-24T14:15:22Z"
}

Test endpoint for pay schedule module

Authorizations:
None

Responses

Payroll - Pay Runs

Payroll processing and calculations

Create a new pay run

Authorizations:
None
Request Body schema: application/json
required
company_id
required
string

Company ID

pay_schedule_id
required
string

Pay schedule ID

name
required
string <= 255 characters

Pay run name

period_start
required
string

Pay period start date

period_end
required
string

Pay period end date

pay_date
required
string

Pay date

status
string
Default: "DRAFT"
Enum: "DRAFT" "PROCESSING" "APPROVED" "SUBMITTED" "FILED" "CLOSED"

Pay run status

description
string <= 1000 characters

Pay run description

Responses

Request samples

Content type
application/json
{
  • "company_id": "550e8400-e29b-41d4-a716-446655440000",
  • "pay_schedule_id": "550e8400-e29b-41d4-a716-446655440000",
  • "name": "January 2024 Monthly Payroll",
  • "period_start": "2024-01-01T00:00:00.000Z",
  • "period_end": "2024-01-31T23:59:59.000Z",
  • "pay_date": "2024-02-05T00:00:00.000Z",
  • "status": "DRAFT",
  • "description": "Monthly payroll for January 2024"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "pay_schedule_id": "string",
  • "name": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "pay_date": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "hmrc_submission_id": { },
  • "submitted_at": { },
  • "description": { },
  • "total_gross_amount": 0,
  • "total_net_amount": 0,
  • "total_deductions_amount": 0,
  • "employee_count": 0,
  • "processed_at": { },
  • "approved_at": { },
  • "approved_by_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "pay_schedule": { }
}

Get all pay runs with pagination and filters

Authorizations:
None
query Parameters
status
string
Enum: "DRAFT" "PROCESSING" "APPROVED" "SUBMITTED" "FILED" "CLOSED"

Filter by pay run status

payScheduleId
string
Example: payScheduleId=550e8400-e29b-41d4-a716-446655440000

Filter by pay schedule ID

startDate
string
Example: startDate=2024-01-01

Filter by pay period start date (YYYY-MM-DD)

endDate
string
Example: endDate=2024-01-31

Filter by pay period end date (YYYY-MM-DD)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Get pay runs by status

Authorizations:
None
path Parameters
status
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get pay run statistics

Authorizations:
None
query Parameters
year
number

Year for statistics (defaults to current year)

Responses

Response samples

Content type
application/json
{
  • "totalPayRuns": 0,
  • "draftPayRuns": 0,
  • "processingPayRuns": 0,
  • "completedPayRuns": 0,
  • "failedPayRuns": 0,
  • "cancelledPayRuns": 0,
  • "totalGrossPay": 0,
  • "totalNetPay": 0,
  • "totalEmployeesPaid": 0
}

Get a pay run by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "pay_schedule_id": "string",
  • "name": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "pay_date": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "hmrc_submission_id": { },
  • "submitted_at": { },
  • "description": { },
  • "total_gross_amount": 0,
  • "total_net_amount": 0,
  • "total_deductions_amount": 0,
  • "employee_count": 0,
  • "processed_at": { },
  • "approved_at": { },
  • "approved_by_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "pay_schedule": { }
}

Update a pay run (only allowed in DRAFT status)

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string <= 255 characters

Pay run name

period_start
string

Pay period start date

period_end
string

Pay period end date

pay_date
string

Pay date

status
string
Enum: "DRAFT" "PROCESSING" "APPROVED" "SUBMITTED" "FILED" "CLOSED"

Pay run status

description
string <= 1000 characters

Pay run description

Responses

Request samples

Content type
application/json
{
  • "name": "January 2024 Monthly Payroll - Updated",
  • "period_start": "2024-01-01T00:00:00.000Z",
  • "period_end": "2024-01-31T23:59:59.000Z",
  • "pay_date": "2024-02-05T00:00:00.000Z",
  • "status": "DRAFT",
  • "description": "Updated monthly payroll description"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "pay_schedule_id": "string",
  • "name": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "pay_date": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "hmrc_submission_id": { },
  • "submitted_at": { },
  • "description": { },
  • "total_gross_amount": 0,
  • "total_net_amount": 0,
  • "total_deductions_amount": 0,
  • "employee_count": 0,
  • "processed_at": { },
  • "approved_at": { },
  • "approved_by_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "pay_schedule": { }
}

Delete a pay run (only allowed in DRAFT or CANCELLED status)

Authorizations:
None
path Parameters
id
required
string

Responses

Process a pay run (change status from DRAFT to PROCESSING)

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
force_process
boolean
Default: false

Force processing even if validation fails

processed_notes
string <= 500 characters

Processing comments

Responses

Request samples

Content type
application/json
{
  • "force_process": false,
  • "processed_notes": "Approved for processing"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "pay_schedule_id": "string",
  • "name": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "pay_date": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "hmrc_submission_id": { },
  • "submitted_at": { },
  • "description": { },
  • "total_gross_amount": 0,
  • "total_net_amount": 0,
  • "total_deductions_amount": 0,
  • "employee_count": 0,
  • "processed_at": { },
  • "approved_at": { },
  • "approved_by_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "pay_schedule": { }
}

Approve, fail, or cancel a pay run

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
status
required
string
Enum: "DRAFT" "PROCESSING" "APPROVED" "SUBMITTED" "FILED" "CLOSED"

Approval status

approved_notes
string <= 500 characters

Approval comments

Responses

Request samples

Content type
application/json
{
  • "status": "APPROVED",
  • "approved_notes": "Approved for payment"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "pay_schedule_id": "string",
  • "name": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "pay_date": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "hmrc_submission_id": { },
  • "submitted_at": { },
  • "description": { },
  • "total_gross_amount": 0,
  • "total_net_amount": 0,
  • "total_deductions_amount": 0,
  • "employee_count": 0,
  • "processed_at": { },
  • "approved_at": { },
  • "approved_by_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "pay_schedule": { }
}

Cancel a pay run

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "pay_schedule_id": "string",
  • "name": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "pay_date": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "hmrc_submission_id": { },
  • "submitted_at": { },
  • "description": { },
  • "total_gross_amount": 0,
  • "total_net_amount": 0,
  • "total_deductions_amount": 0,
  • "employee_count": 0,
  • "processed_at": { },
  • "approved_at": { },
  • "approved_by_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "pay_schedule": { }
}

Update pay run totals based on payslips

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "company_id": "string",
  • "pay_schedule_id": "string",
  • "name": "string",
  • "period_start": "2019-08-24T14:15:22Z",
  • "period_end": "2019-08-24T14:15:22Z",
  • "pay_date": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "hmrc_submission_id": { },
  • "submitted_at": { },
  • "description": { },
  • "total_gross_amount": 0,
  • "total_net_amount": 0,
  • "total_deductions_amount": 0,
  • "employee_count": 0,
  • "processed_at": { },
  • "approved_at": { },
  • "approved_by_id": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "pay_schedule": { }
}

Test endpoint for pay run module

Authorizations:
None

Responses

Payroll - Payslips

Payslip generation and distribution

Create a new payslip

Authorizations:
None
Request Body schema: application/json
required
pay_run_id
required
string

Pay run ID

employee_id
required
string

Employee ID

pay_period_start_date
required
string

Pay period start date

pay_period_end_date
required
string

Pay period end date

pay_date
required
string

Pay date

notes
string <= 1000 characters

Payslip notes

Responses

Request samples

Content type
application/json
{
  • "pay_run_id": "550e8400-e29b-41d4-a716-446655440000",
  • "employee_id": "550e8400-e29b-41d4-a716-446655440000",
  • "pay_period_start_date": "2024-01-01T00:00:00.000Z",
  • "pay_period_end_date": "2024-01-31T23:59:59.000Z",
  • "pay_date": "2024-02-05T00:00:00.000Z",
  • "notes": "Standard monthly payslip"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "pay_run_id": "string",
  • "employee_id": "string",
  • "gross_pay": 0,
  • "total_deductions": 0,
  • "net_pay": 0,
  • "ni_employee": 0,
  • "ni_employer": 0,
  • "income_tax": 0,
  • "student_loan": 0,
  • "other_deductions": 0,
  • "paye_scheme_id": { },
  • "pay_period_start_date": "2019-08-24T14:15:22Z",
  • "pay_period_end_date": "2019-08-24T14:15:22Z",
  • "pay_date": "2019-08-24T14:15:22Z",
  • "notes": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "pay_run": { },
  • "employee": { }
}

Get all payslips with pagination and filters

Authorizations:
None
query Parameters
payRunId
string
Example: payRunId=550e8400-e29b-41d4-a716-446655440000

Filter by pay run ID

employeeId
string
Example: employeeId=550e8400-e29b-41d4-a716-446655440000

Filter by employee ID

payDate
string
Example: payDate=2024-01-31

Filter by pay date (YYYY-MM-DD)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Bulk create payslips for a pay run

Authorizations:
None
Request Body schema: application/json
required
pay_run_id
required
string

Pay run ID

employee_ids
required
Array of strings

Array of employee IDs

auto_calculate
boolean

Auto-calculate payslip amounts

notes
string <= 1000 characters

Bulk creation notes

Responses

Request samples

Content type
application/json
{
  • "pay_run_id": "550e8400-e29b-41d4-a716-446655440000",
  • "employee_ids": [
    ],
  • "auto_calculate": true,
  • "notes": "Bulk payslip creation for monthly run"
}

Response samples

Content type
application/json
{
  • "created": 0,
  • "skipped": 0,
  • "errors": [
    ]
}

Get payslip statistics

Authorizations:
None
query Parameters
year
number

Year for statistics (defaults to current year)

Responses

Response samples

Content type
application/json
{
  • "totalPayslips": 0,
  • "totalGrossPay": 0,
  • "totalNetPay": 0,
  • "averageGrossPay": 0,
  • "averageNetPay": 0
}

Get a payslip by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "pay_run_id": "string",
  • "employee_id": "string",
  • "gross_pay": 0,
  • "total_deductions": 0,
  • "net_pay": 0,
  • "ni_employee": 0,
  • "ni_employer": 0,
  • "income_tax": 0,
  • "student_loan": 0,
  • "other_deductions": 0,
  • "paye_scheme_id": { },
  • "pay_period_start_date": "2019-08-24T14:15:22Z",
  • "pay_period_end_date": "2019-08-24T14:15:22Z",
  • "pay_date": "2019-08-24T14:15:22Z",
  • "notes": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "pay_run": { },
  • "employee": { }
}

Update a payslip (only allowed in DRAFT status)

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
pay_run_id
string

Pay run ID

pay_period_start_date
string

Pay period start date

pay_period_end_date
string

Pay period end date

pay_date
string

Pay date

notes
string <= 1000 characters

Payslip notes

Responses

Request samples

Content type
application/json
{
  • "pay_run_id": "550e8400-e29b-41d4-a716-446655440000",
  • "pay_period_start_date": "2024-01-01T00:00:00.000Z",
  • "pay_period_end_date": "2024-01-31T23:59:59.000Z",
  • "pay_date": "2024-02-05T00:00:00.000Z",
  • "notes": "Updated payslip with overtime"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "pay_run_id": "string",
  • "employee_id": "string",
  • "gross_pay": 0,
  • "total_deductions": 0,
  • "net_pay": 0,
  • "ni_employee": 0,
  • "ni_employer": 0,
  • "income_tax": 0,
  • "student_loan": 0,
  • "other_deductions": 0,
  • "paye_scheme_id": { },
  • "pay_period_start_date": "2019-08-24T14:15:22Z",
  • "pay_period_end_date": "2019-08-24T14:15:22Z",
  • "pay_date": "2019-08-24T14:15:22Z",
  • "notes": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "pay_run": { },
  • "employee": { }
}

Delete a payslip (only allowed in DRAFT status)

Authorizations:
None
path Parameters
id
required
string

Responses

Calculate payslip amounts (change status from DRAFT to CALCULATED)

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
notes
string <= 1000 characters

Additional notes for calculation

Responses

Request samples

Content type
application/json
{
  • "notes": "Include overtime calculation"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "pay_run_id": "string",
  • "employee_id": "string",
  • "gross_pay": 0,
  • "total_deductions": 0,
  • "net_pay": 0,
  • "ni_employee": 0,
  • "ni_employer": 0,
  • "income_tax": 0,
  • "student_loan": 0,
  • "other_deductions": 0,
  • "paye_scheme_id": { },
  • "pay_period_start_date": "2019-08-24T14:15:22Z",
  • "pay_period_end_date": "2019-08-24T14:15:22Z",
  • "pay_date": "2019-08-24T14:15:22Z",
  • "notes": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { },
  • "pay_run": { },
  • "employee": { }
}

Test endpoint for payslip module

Authorizations:
None

Responses

Compliance - Templates

Compliance templates and frameworks

Create a new compliance check template

Authorizations:
None
Request Body schema: application/json
required
template_code
required
string
template_name
required
string
inspection_type_ids
Array of strings
checklist_items
required
object
evidence_requirements
required
object
automation_rules
object
quality_checks
object
output_templates
object
is_system_template
boolean

Responses

Request samples

Content type
application/json
{
  • "template_code": "HMRC_PAYE_CHECKLIST",
  • "template_name": "HMRC PAYE Compliance Checklist",
  • "inspection_type_ids": [
    ],
  • "checklist_items": [
    ],
  • "evidence_requirements": {
    },
  • "automation_rules": { },
  • "quality_checks": { },
  • "output_templates": { },
  • "is_system_template": false
}

Get all compliance templates

Authorizations:
None

Responses

Get a specific compliance template

Authorizations:
None
path Parameters
id
required
string

Responses

Update a compliance template

Authorizations:
None
path Parameters
id
required
string

Responses

Deactivate a compliance template

Authorizations:
None
path Parameters
id
required
string

Responses

Get templates for a specific inspection type

Authorizations:
None
path Parameters
inspectionTypeId
required
string

Responses

Compliance - Inspections

Compliance inspections and audits

Initiate a new compliance inspection case

Authorizations:
None
Request Body schema: application/json
required
inspection_type_id
required
string
regulator_reference
required
string
notice_received_date
required
string
response_deadline
required
string
inspection_date
string
scope_parameters
required
object
specific_allegations
Array of strings
inspection_officer_details
object
assigned_to
string
internal_notes
string

Responses

Request samples

Content type
application/json
{
  • "inspection_type_id": "uuid-of-inspection-type",
  • "regulator_reference": "HMRC-2024-001",
  • "notice_received_date": "2024-01-15",
  • "response_deadline": "2024-02-05",
  • "inspection_date": "2024-01-30",
  • "scope_parameters": {
    },
  • "specific_allegations": [
    ],
  • "inspection_officer_details": {
    },
  • "assigned_to": "uuid-of-user",
  • "internal_notes": "Initial PAYE compliance check for tax year 2023-24"
}

Get all inspection cases

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

status
string
Enum: "NOTICE_RECEIVED" "EVIDENCE_GATHERING" "PACKAGE_GENERATED" "SUBMITTED" "UNDER_REVIEW" "CONCLUDED"
Example: status=NOTICE_RECEIVED
inspection_type_id
string
Example: inspection_type_id=uuid-of-inspection-type
assigned_to
string
Example: assigned_to=uuid-of-assignee
notice_from
string
Example: notice_from=2024-01-01
notice_to
string
Example: notice_to=2024-12-31
deadline_before
string
Example: deadline_before=2024-02-01
search
string
Example: search=HMRC

Responses

Get a specific inspection case

Authorizations:
None
path Parameters
id
required
string

Responses

Update inspection case status

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
status
required
string
Enum: "NOTICE_RECEIVED" "EVIDENCE_GATHERING" "PACKAGE_GENERATED" "SUBMITTED" "UNDER_REVIEW" "CONCLUDED"
current_stage
string
progress_percentage
number
notes
string

Responses

Request samples

Content type
application/json
{
  • "status": "EVIDENCE_GATHERING",
  • "current_stage": "Document Collection",
  • "progress_percentage": 45,
  • "notes": "Completed initial document review"
}

Conclude an inspection case

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
inspection_outcome
required
string
Enum: "SATISFACTORY" "MINOR_ISSUES" "MAJOR_ISSUES" "PENALTIES_IMPOSED"
penalties_imposed
number
follow_up_actions
Array of strings
conclusion_date
string
external_correspondence
object

Responses

Request samples

Content type
application/json
{
  • "inspection_outcome": "MINOR_ISSUES",
  • "penalties_imposed": 5000,
  • "follow_up_actions": [
    ],
  • "conclusion_date": "2024-02-15",
  • "external_correspondence": {
    }
}

Compliance - Evidence Packages

Evidence packaging and submission

Generate a new evidence package

Authorizations:
None
Request Body schema: application/json
required
inspection_case_id
required
string
package_type
required
string
Enum: "INITIAL_RESPONSE" "SUPPLEMENTARY" "FINAL_SUBMISSION"
generation_config
required
object
scope_parameters
required
object
package_format
string
Enum: "DIGITAL" "PHYSICAL" "HYBRID"
delivery_method
string
Enum: "SECURE_PORTAL" "EMAIL" "PHYSICAL_DELIVERY"
authentication_method
string
Enum: "DIGITAL_SIGNATURE" "NOTARIZATION" "BLOCKCHAIN_TIMESTAMP"

Responses

Request samples

Content type
application/json
{
  • "inspection_case_id": "uuid-of-inspection-case",
  • "package_type": "INITIAL_RESPONSE",
  • "generation_config": {
    },
  • "scope_parameters": {
    },
  • "package_format": "DIGITAL",
  • "delivery_method": "SECURE_PORTAL",
  • "authentication_method": "DIGITAL_SIGNATURE"
}

Get all evidence packages

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

inspection_case_id
string
Example: inspection_case_id=uuid-of-inspection-case
collection_status
string
Enum: "PENDING" "COLLECTING" "PROCESSING" "PACKAGING" "COMPLETED" "FAILED"
Example: collection_status=COMPLETED
package_type
string
Enum: "INITIAL_RESPONSE" "SUPPLEMENTARY" "FINAL_SUBMISSION"
Example: package_type=INITIAL_RESPONSE
created_from
string
Example: created_from=2024-01-01
created_to
string
Example: created_to=2024-12-31
search
string
Example: search=PKG-2024

Responses

Get package generation status

Authorizations:
None
path Parameters
id
required
string

Responses

Start evidence collection for a package

Authorizations:
None
path Parameters
id
required
string

Responses

Get evidence items in a package

Authorizations:
None
path Parameters
id
required
string

Responses

Verify package integrity

Authorizations:
None
path Parameters
id
required
string

Responses

Download evidence package

Authorizations:
None
path Parameters
id
required
string

Responses

Compliance - Evidence Timeline

Evidence timeline and tracking

Generate timeline from evidence items

Authorizations:
None
path Parameters
packageId
required
string

Responses

Get evidence timeline for a package

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

evidence_package_id
required
string
Example: evidence_package_id=uuid-of-evidence-package
event_date_from
string
Example: event_date_from=2023-04-01
event_date_to
string
Example: event_date_to=2024-03-31
event_type
string
Example: event_type=PAYROLL_CHANGE
event_significance
string
Example: event_significance=CRITICAL
compliance_impact
string
Example: compliance_impact=HIGH

Responses

Get timeline statistics

Authorizations:
None
path Parameters
packageId
required
string

Responses

Update a timeline event

Authorizations:
None
path Parameters
id
required
string

Responses

Verify a timeline event

Authorizations:
None
path Parameters
id
required
string

Responses

Workplace - Safety

Workplace safety inspections and records

Create a new safety inspection

Authorizations:
JWT-auth
Request Body schema: application/json
required
company_id
required
string
inspection_type
required
string
Enum: "FIRE_SAFETY" "EQUIPMENT_CHECK" "WORKPLACE_ASSESSMENT" "ELECTRICAL_SAFETY" "MANUAL_HANDLING" "DSE_ASSESSMENT" "COSHH" "OTHER"
inspection_title
required
string
inspection_date
required
string
location
string
areas_covered
Array of strings
equipment_checked
Array of strings
inspector_id
string
external_inspector
string
inspector_qualification
string
overall_result
required
string
Enum: "PASS" "FAIL" "CONDITIONAL_PASS" "PENDING"
score
number [ 0 .. 100 ]
issues_found
object
high_risk_issues
Array of strings
medium_risk_issues
Array of strings
low_risk_issues
Array of strings
remedial_actions_required
object
completion_deadline
string
next_inspection_due
string
inspection_report_path
string
photos
object

Responses

Request samples

Content type
application/json
{
  • "company_id": "string",
  • "inspection_type": "FIRE_SAFETY",
  • "inspection_title": "Annual Fire Safety Inspection",
  • "inspection_date": "string",
  • "location": "Main Office Building",
  • "areas_covered": [
    ],
  • "equipment_checked": [
    ],
  • "inspector_id": "string",
  • "external_inspector": "ABC Safety Consultants",
  • "inspector_qualification": "NEBOSH Certificate",
  • "overall_result": "PASS",
  • "score": 100,
  • "issues_found": { },
  • "high_risk_issues": [
    ],
  • "medium_risk_issues": [
    ],
  • "low_risk_issues": [
    ],
  • "remedial_actions_required": { },
  • "completion_deadline": "string",
  • "next_inspection_due": "string",
  • "inspection_report_path": "string",
  • "photos": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "inspection_type": "FIRE_SAFETY",
  • "inspection_title": "string",
  • "inspection_date": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "areas_covered": [
    ],
  • "equipment_checked": [
    ],
  • "inspector_id": "string",
  • "external_inspector": "string",
  • "inspector_qualification": "string",
  • "overall_result": "PASS",
  • "score": 0,
  • "issues_found": { },
  • "high_risk_issues": [
    ],
  • "medium_risk_issues": [
    ],
  • "low_risk_issues": [
    ],
  • "remedial_actions_required": { },
  • "completion_deadline": "2019-08-24T14:15:22Z",
  • "next_inspection_due": "2019-08-24T14:15:22Z",
  • "inspection_report_path": "string",
  • "photos": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "inspector": { },
  • "days_until_next": 0,
  • "is_overdue": true,
  • "total_issues_count": 0,
  • "critical_issues_count": 0
}

Get all safety inspections for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

query Parameters
inspection_type
string
Enum: "FIRE_SAFETY" "EQUIPMENT_CHECK" "WORKPLACE_ASSESSMENT" "ELECTRICAL_SAFETY" "MANUAL_HANDLING" "DSE_ASSESSMENT" "COSHH" "OTHER"
overall_result
string
Enum: "PASS" "FAIL" "CONDITIONAL_PASS" "PENDING"
company_id
string
inspector_id
string
location
string
inspection_date_from
string
inspection_date_to
string
next_due_from
string
next_due_to
string
page
number
Default: 1
limit
number
Default: 20
to_date
string
from_date
string

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get due safety inspections for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get overdue safety inspections

Authorizations:
JWT-auth
query Parameters
companyId
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get safety inspection by ID

Authorizations:
JWT-auth
path Parameters
inspectionId
required
string

Safety inspection ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "inspection_type": "FIRE_SAFETY",
  • "inspection_title": "string",
  • "inspection_date": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "areas_covered": [
    ],
  • "equipment_checked": [
    ],
  • "inspector_id": "string",
  • "external_inspector": "string",
  • "inspector_qualification": "string",
  • "overall_result": "PASS",
  • "score": 0,
  • "issues_found": { },
  • "high_risk_issues": [
    ],
  • "medium_risk_issues": [
    ],
  • "low_risk_issues": [
    ],
  • "remedial_actions_required": { },
  • "completion_deadline": "2019-08-24T14:15:22Z",
  • "next_inspection_due": "2019-08-24T14:15:22Z",
  • "inspection_report_path": "string",
  • "photos": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "inspector": { },
  • "days_until_next": 0,
  • "is_overdue": true,
  • "total_issues_count": 0,
  • "critical_issues_count": 0
}

Update safety inspection

Authorizations:
JWT-auth
path Parameters
inspectionId
required
string

Safety inspection ID

Request Body schema: application/json
required
overall_result
string
Enum: "PASS" "FAIL" "CONDITIONAL_PASS" "PENDING"
score
number
issues_found
object
high_risk_issues
Array of strings
medium_risk_issues
Array of strings
low_risk_issues
Array of strings
remedial_actions_required
object
completion_deadline
string
next_inspection_due
string
inspection_report_path
string
photos
object

Responses

Request samples

Content type
application/json
{
  • "overall_result": "PASS",
  • "score": 0,
  • "issues_found": { },
  • "high_risk_issues": [
    ],
  • "medium_risk_issues": [
    ],
  • "low_risk_issues": [
    ],
  • "remedial_actions_required": { },
  • "completion_deadline": "string",
  • "next_inspection_due": "string",
  • "inspection_report_path": "string",
  • "photos": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "inspection_type": "FIRE_SAFETY",
  • "inspection_title": "string",
  • "inspection_date": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "areas_covered": [
    ],
  • "equipment_checked": [
    ],
  • "inspector_id": "string",
  • "external_inspector": "string",
  • "inspector_qualification": "string",
  • "overall_result": "PASS",
  • "score": 0,
  • "issues_found": { },
  • "high_risk_issues": [
    ],
  • "medium_risk_issues": [
    ],
  • "low_risk_issues": [
    ],
  • "remedial_actions_required": { },
  • "completion_deadline": "2019-08-24T14:15:22Z",
  • "next_inspection_due": "2019-08-24T14:15:22Z",
  • "inspection_report_path": "string",
  • "photos": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "inspector": { },
  • "days_until_next": 0,
  • "is_overdue": true,
  • "total_issues_count": 0,
  • "critical_issues_count": 0
}

Delete safety inspection

Authorizations:
JWT-auth
path Parameters
inspectionId
required
string

Safety inspection ID

Responses

Complete and finalize a safety inspection

Authorizations:
JWT-auth
path Parameters
inspectionId
required
string

Safety inspection ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "inspection_type": "FIRE_SAFETY",
  • "inspection_title": "string",
  • "inspection_date": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "areas_covered": [
    ],
  • "equipment_checked": [
    ],
  • "inspector_id": "string",
  • "external_inspector": "string",
  • "inspector_qualification": "string",
  • "overall_result": "PASS",
  • "score": 0,
  • "issues_found": { },
  • "high_risk_issues": [
    ],
  • "medium_risk_issues": [
    ],
  • "low_risk_issues": [
    ],
  • "remedial_actions_required": { },
  • "completion_deadline": "2019-08-24T14:15:22Z",
  • "next_inspection_due": "2019-08-24T14:15:22Z",
  • "inspection_report_path": "string",
  • "photos": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "inspector": { },
  • "days_until_next": 0,
  • "is_overdue": true,
  • "total_issues_count": 0,
  • "critical_issues_count": 0
}

Generate and download safety inspection report

Authorizations:
JWT-auth
path Parameters
inspectionId
required
string

Safety inspection ID

Responses

Add remedial actions to an inspection

Authorizations:
JWT-auth
path Parameters
inspectionId
required
string

Safety inspection ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "inspection_type": "FIRE_SAFETY",
  • "inspection_title": "string",
  • "inspection_date": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "areas_covered": [
    ],
  • "equipment_checked": [
    ],
  • "inspector_id": "string",
  • "external_inspector": "string",
  • "inspector_qualification": "string",
  • "overall_result": "PASS",
  • "score": 0,
  • "issues_found": { },
  • "high_risk_issues": [
    ],
  • "medium_risk_issues": [
    ],
  • "low_risk_issues": [
    ],
  • "remedial_actions_required": { },
  • "completion_deadline": "2019-08-24T14:15:22Z",
  • "next_inspection_due": "2019-08-24T14:15:22Z",
  • "inspection_report_path": "string",
  • "photos": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "inspector": { },
  • "days_until_next": 0,
  • "is_overdue": true,
  • "total_issues_count": 0,
  • "critical_issues_count": 0
}

Get safety inspection statistics for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

query Parameters
from_date
string
to_date
string

Responses

Response samples

Content type
application/json
{ }

Workplace - Risk Assessment

Risk assessments and mitigation

Create a new risk assessment

Authorizations:
JWT-auth
Request Body schema: application/json
required
company_id
required
string
assessment_type
required
string
Enum: "WORKPLACE" "FIRE" "MANUAL_HANDLING" "DSE" "COSHH" "LONE_WORKING" "YOUNG_PERSON" "NEW_MOTHER" "STRESS" "NOISE" "VIBRATION" "GENERAL"
assessment_title
required
string
assessment_description
required
string
department_id
string
location
required
string
areas_covered
Array of strings
activities_covered
Array of strings
assessor_id
required
string
assessor_qualification
string
assessment_date
required
string
required
Array of objects (RiskItemDto)
overall_risk_rating
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
control_measures
object
emergency_procedures
object
review_date
string
next_assessment_date
required
string
status
string
Default: "DRAFT"
Enum: "DRAFT" "IN_REVIEW" "APPROVED" "EXPIRED" "ARCHIVED"
assessment_report_path
string

Responses

Request samples

Content type
application/json
{
  • "company_id": "string",
  • "assessment_type": "WORKPLACE",
  • "assessment_title": "Office Risk Assessment 2024",
  • "assessment_description": "Annual workplace risk assessment for main office",
  • "department_id": "string",
  • "location": "Main Office Building",
  • "areas_covered": [
    ],
  • "activities_covered": [
    ],
  • "assessor_id": "string",
  • "assessor_qualification": "string",
  • "assessment_date": "string",
  • "risks_identified": [
    ],
  • "overall_risk_rating": "LOW",
  • "control_measures": { },
  • "emergency_procedures": { },
  • "review_date": "string",
  • "next_assessment_date": "string",
  • "status": "DRAFT",
  • "assessment_report_path": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "assessment_type": "WORKPLACE",
  • "assessment_title": "string",
  • "assessment_description": "string",
  • "department_id": "string",
  • "location": "string",
  • "areas_covered": [
    ],
  • "activities_covered": [
    ],
  • "assessor_id": "string",
  • "assessor_qualification": "string",
  • "assessment_date": "2019-08-24T14:15:22Z",
  • "risks_identified": { },
  • "overall_risk_rating": "LOW",
  • "risk_score": 0,
  • "control_measures": { },
  • "emergency_procedures": { },
  • "review_date": "2019-08-24T14:15:22Z",
  • "next_assessment_date": "2019-08-24T14:15:22Z",
  • "approved_by_id": "string",
  • "approval_date": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "assessment_report_path": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "department": { },
  • "assessor": { },
  • "approved_by": { },
  • "days_until_next": 0,
  • "is_overdue": true,
  • "total_risks_count": 0,
  • "high_risks_count": 0,
  • "medium_risks_count": 0,
  • "low_risks_count": 0
}

Get all risk assessments for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

query Parameters
assessment_type
string
Enum: "WORKPLACE" "FIRE" "MANUAL_HANDLING" "DSE" "COSHH" "LONE_WORKING" "YOUNG_PERSON" "NEW_MOTHER" "STRESS" "NOISE" "VIBRATION" "GENERAL"
status
string
Enum: "DRAFT" "IN_REVIEW" "APPROVED" "EXPIRED" "ARCHIVED"
overall_risk_rating
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
department_id
string
assessor_id
string
location
string
assessment_date_from
string
assessment_date_to
string
next_assessment_from
string
next_assessment_to
string
include_expired
boolean
page
number
Default: 1
limit
number
Default: 20
overall_risk_level
string

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get active risk assessments for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get risk assessments due for review

Authorizations:
JWT-auth
query Parameters
companyId
string
days
number

Days to look ahead (default: 30)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get risk assessment by ID

Authorizations:
JWT-auth
path Parameters
assessmentId
required
string

Risk assessment ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "assessment_type": "WORKPLACE",
  • "assessment_title": "string",
  • "assessment_description": "string",
  • "department_id": "string",
  • "location": "string",
  • "areas_covered": [
    ],
  • "activities_covered": [
    ],
  • "assessor_id": "string",
  • "assessor_qualification": "string",
  • "assessment_date": "2019-08-24T14:15:22Z",
  • "risks_identified": { },
  • "overall_risk_rating": "LOW",
  • "risk_score": 0,
  • "control_measures": { },
  • "emergency_procedures": { },
  • "review_date": "2019-08-24T14:15:22Z",
  • "next_assessment_date": "2019-08-24T14:15:22Z",
  • "approved_by_id": "string",
  • "approval_date": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "assessment_report_path": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "department": { },
  • "assessor": { },
  • "approved_by": { },
  • "days_until_next": 0,
  • "is_overdue": true,
  • "total_risks_count": 0,
  • "high_risks_count": 0,
  • "medium_risks_count": 0,
  • "low_risks_count": 0
}

Update risk assessment

Authorizations:
JWT-auth
path Parameters
assessmentId
required
string

Risk assessment ID

Request Body schema: application/json
required
assessment_description
string
location
string
areas_covered
Array of strings
activities_covered
Array of strings
Array of objects (RiskItemDto)
overall_risk_rating
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
control_measures
object
emergency_procedures
object
review_date
string
next_assessment_date
string
status
string
Enum: "DRAFT" "IN_REVIEW" "APPROVED" "EXPIRED" "ARCHIVED"
assessment_report_path
string

Responses

Request samples

Content type
application/json
{
  • "assessment_description": "string",
  • "location": "string",
  • "areas_covered": [
    ],
  • "activities_covered": [
    ],
  • "risks_identified": [
    ],
  • "overall_risk_rating": "LOW",
  • "control_measures": { },
  • "emergency_procedures": { },
  • "review_date": "string",
  • "next_assessment_date": "string",
  • "status": "DRAFT",
  • "assessment_report_path": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "assessment_type": "WORKPLACE",
  • "assessment_title": "string",
  • "assessment_description": "string",
  • "department_id": "string",
  • "location": "string",
  • "areas_covered": [
    ],
  • "activities_covered": [
    ],
  • "assessor_id": "string",
  • "assessor_qualification": "string",
  • "assessment_date": "2019-08-24T14:15:22Z",
  • "risks_identified": { },
  • "overall_risk_rating": "LOW",
  • "risk_score": 0,
  • "control_measures": { },
  • "emergency_procedures": { },
  • "review_date": "2019-08-24T14:15:22Z",
  • "next_assessment_date": "2019-08-24T14:15:22Z",
  • "approved_by_id": "string",
  • "approval_date": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "assessment_report_path": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "department": { },
  • "assessor": { },
  • "approved_by": { },
  • "days_until_next": 0,
  • "is_overdue": true,
  • "total_risks_count": 0,
  • "high_risks_count": 0,
  • "medium_risks_count": 0,
  • "low_risks_count": 0
}

Delete risk assessment

Authorizations:
JWT-auth
path Parameters
assessmentId
required
string

Risk assessment ID

Responses

Approve a risk assessment

Authorizations:
JWT-auth
path Parameters
assessmentId
required
string

Risk assessment ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "assessment_type": "WORKPLACE",
  • "assessment_title": "string",
  • "assessment_description": "string",
  • "department_id": "string",
  • "location": "string",
  • "areas_covered": [
    ],
  • "activities_covered": [
    ],
  • "assessor_id": "string",
  • "assessor_qualification": "string",
  • "assessment_date": "2019-08-24T14:15:22Z",
  • "risks_identified": { },
  • "overall_risk_rating": "LOW",
  • "risk_score": 0,
  • "control_measures": { },
  • "emergency_procedures": { },
  • "review_date": "2019-08-24T14:15:22Z",
  • "next_assessment_date": "2019-08-24T14:15:22Z",
  • "approved_by_id": "string",
  • "approval_date": "2019-08-24T14:15:22Z",
  • "status": "DRAFT",
  • "assessment_report_path": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "department": { },
  • "assessor": { },
  • "approved_by": { },
  • "days_until_next": 0,
  • "is_overdue": true,
  • "total_risks_count": 0,
  • "high_risks_count": 0,
  • "medium_risks_count": 0,
  • "low_risks_count": 0
}

Perform risk matrix analysis

Authorizations:
JWT-auth
path Parameters
assessmentId
required
string

Risk assessment ID

Request Body schema: application/json
required
Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Response samples

Content type
application/json
{
  • "total_assessments": 0,
  • "active_assessments": 0,
  • "expired_assessments": 0,
  • "assessments_due_soon": 0,
  • "risk_distribution": { },
  • "assessments_by_type": { },
  • "risk_matrix": { },
  • "high_priority_risks": [
    ],
  • "upcoming_assessments": [
    ],
  • "overdue_assessments": [
    ]
}

Create or update action plan for risk assessment

Authorizations:
JWT-auth
path Parameters
assessmentId
required
string

Risk assessment ID

Request Body schema: application/json
required
tasks
required
Array of arrays
deadline
string
notes
string

Responses

Request samples

Content type
application/json
{
  • "tasks": [
    ],
  • "deadline": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "tasks": [
    ],
  • "deadline": "string",
  • "notes": "string"
}

Get follow-up tasks for a risk assessment

Authorizations:
JWT-auth
path Parameters
assessmentId
required
string

Risk assessment ID

Responses

Response samples

Content type
application/json
[ ]

Get high-risk items for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

Responses

Response samples

Content type
application/json
[ ]

Workplace - Insurance

Insurance policies and coverage

Add a new insurance policy

Authorizations:
JWT-auth
Request Body schema: application/json
required
company_id
required
string
policy_type
required
string
Enum: "EMPLOYERS_LIABILITY" "PUBLIC_LIABILITY" "PROFESSIONAL_INDEMNITY" "PROPERTY" "VEHICLE" "CYBER" "OTHER"
policy_number
required
string
insurer_name
required
string
broker_name
string
coverage_amount
number
currency
string
Default: "GBP"
coverage_details
object
policy_start_date
required
string
policy_end_date
required
string
renewal_date
string
premium_amount
number
payment_frequency
string
Enum: "ANNUAL" "QUARTERLY" "MONTHLY"
status
string
Default: "ACTIVE"
Enum: "ACTIVE" "EXPIRED" "CANCELLED" "PENDING_RENEWAL"
policy_document_path
string
certificate_path
string

Responses

Request samples

Content type
application/json
{
  • "company_id": "string",
  • "policy_type": "EMPLOYERS_LIABILITY",
  • "policy_number": "POL-2024-001",
  • "insurer_name": "ABC Insurance Ltd",
  • "broker_name": "XYZ Brokers",
  • "coverage_amount": 5000000,
  • "currency": "GBP",
  • "coverage_details": { },
  • "policy_start_date": "string",
  • "policy_end_date": "string",
  • "renewal_date": "string",
  • "premium_amount": 1200.5,
  • "payment_frequency": "ANNUAL",
  • "status": "ACTIVE",
  • "policy_document_path": "string",
  • "certificate_path": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "policy_type": "EMPLOYERS_LIABILITY",
  • "policy_number": "string",
  • "insurer_name": "string",
  • "broker_name": "string",
  • "coverage_amount": 0,
  • "currency": "string",
  • "coverage_details": { },
  • "policy_start_date": "2019-08-24T14:15:22Z",
  • "policy_end_date": "2019-08-24T14:15:22Z",
  • "renewal_date": "2019-08-24T14:15:22Z",
  • "premium_amount": 0,
  • "payment_frequency": "string",
  • "status": "ACTIVE",
  • "policy_document_path": "string",
  • "certificate_path": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "days_until_expiry": 0,
  • "is_expiring_soon": true,
  • "is_expired": true
}

Get all insurance policies for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

query Parameters
policy_type
string
Enum: "EMPLOYERS_LIABILITY" "PUBLIC_LIABILITY" "PROFESSIONAL_INDEMNITY" "PROPERTY" "VEHICLE" "CYBER" "OTHER"
status
string
Enum: "ACTIVE" "EXPIRED" "CANCELLED" "PENDING_RENEWAL"
company_id
string
expiry_date_from
string
expiry_date_to
string
insurer_name
string
page
number
Default: 1
limit
number
Default: 20

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get expiring insurance policies

Authorizations:
JWT-auth
query Parameters
days
number

Number of days to look ahead (default: 90)

companyId
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get insurance policy by ID

Authorizations:
JWT-auth
path Parameters
policyId
required
string

Insurance policy ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "policy_type": "EMPLOYERS_LIABILITY",
  • "policy_number": "string",
  • "insurer_name": "string",
  • "broker_name": "string",
  • "coverage_amount": 0,
  • "currency": "string",
  • "coverage_details": { },
  • "policy_start_date": "2019-08-24T14:15:22Z",
  • "policy_end_date": "2019-08-24T14:15:22Z",
  • "renewal_date": "2019-08-24T14:15:22Z",
  • "premium_amount": 0,
  • "payment_frequency": "string",
  • "status": "ACTIVE",
  • "policy_document_path": "string",
  • "certificate_path": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "days_until_expiry": 0,
  • "is_expiring_soon": true,
  • "is_expired": true
}

Update insurance policy

Authorizations:
JWT-auth
path Parameters
policyId
required
string

Insurance policy ID

Request Body schema: application/json
required
broker_name
string
coverage_amount
number
coverage_details
object
policy_start_date
string
policy_end_date
string
renewal_date
string
premium_amount
number
payment_frequency
string
Enum: "ANNUAL" "QUARTERLY" "MONTHLY"
status
string
Enum: "ACTIVE" "EXPIRED" "CANCELLED" "PENDING_RENEWAL"
policy_document_path
string
certificate_path
string

Responses

Request samples

Content type
application/json
{
  • "broker_name": "XYZ Brokers",
  • "coverage_amount": 5000000,
  • "coverage_details": { },
  • "policy_start_date": "string",
  • "policy_end_date": "string",
  • "renewal_date": "string",
  • "premium_amount": 1200.5,
  • "payment_frequency": "ANNUAL",
  • "status": "ACTIVE",
  • "policy_document_path": "string",
  • "certificate_path": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "policy_type": "EMPLOYERS_LIABILITY",
  • "policy_number": "string",
  • "insurer_name": "string",
  • "broker_name": "string",
  • "coverage_amount": 0,
  • "currency": "string",
  • "coverage_details": { },
  • "policy_start_date": "2019-08-24T14:15:22Z",
  • "policy_end_date": "2019-08-24T14:15:22Z",
  • "renewal_date": "2019-08-24T14:15:22Z",
  • "premium_amount": 0,
  • "payment_frequency": "string",
  • "status": "ACTIVE",
  • "policy_document_path": "string",
  • "certificate_path": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "days_until_expiry": 0,
  • "is_expiring_soon": true,
  • "is_expired": true
}

Delete insurance policy

Authorizations:
JWT-auth
path Parameters
policyId
required
string

Insurance policy ID

Responses

Renew insurance policy

Authorizations:
JWT-auth
path Parameters
policyId
required
string

Insurance policy ID

Request Body schema: application/json
required
new_policy_number
required
string
new_start_date
required
string
new_end_date
required
string
new_coverage_amount
number
new_premium_amount
number
updated_coverage_details
object
renewal_notes
string

Responses

Request samples

Content type
application/json
{
  • "new_policy_number": "string",
  • "new_start_date": "string",
  • "new_end_date": "string",
  • "new_coverage_amount": 0,
  • "new_premium_amount": 0,
  • "updated_coverage_details": { },
  • "renewal_notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "policy_type": "EMPLOYERS_LIABILITY",
  • "policy_number": "string",
  • "insurer_name": "string",
  • "broker_name": "string",
  • "coverage_amount": 0,
  • "currency": "string",
  • "coverage_details": { },
  • "policy_start_date": "2019-08-24T14:15:22Z",
  • "policy_end_date": "2019-08-24T14:15:22Z",
  • "renewal_date": "2019-08-24T14:15:22Z",
  • "premium_amount": 0,
  • "payment_frequency": "string",
  • "status": "ACTIVE",
  • "policy_document_path": "string",
  • "certificate_path": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "days_until_expiry": 0,
  • "is_expiring_soon": true,
  • "is_expired": true
}

Check insurance coverage adequacy for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

Responses

Response samples

Content type
application/json
{ }

Get insurance compliance status for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

Responses

Response samples

Content type
application/json
{ }

Workplace - Accidents

Accident reporting and investigation

Create new accident report

Authorizations:
None
Request Body schema: application/json
required
tenant_id
string
company_id
required
string
accident_date
required
string
accident_time
string
location
required
string
department_id
string
affected_employee_id
string
affected_employee_name
string
accident_type
required
string
Enum: "SLIP_TRIP_FALL" "MANUAL_HANDLING" "STRUCK_BY_OBJECT" "MACHINERY" "VEHICLE" "ELECTRICAL" "CHEMICAL" "BURN" "CUT_LACERATION" "ERGONOMIC" "VIOLENCE" "OTHER"
injury_type
string
injury_severity
required
string
Enum: "NO_INJURY" "MINOR" "MODERATE" "MAJOR" "FATAL"
injury_description
string
body_parts_affected
Array of strings
accident_description
required
string
immediate_action_taken
string
witness_names
Array of strings
witness_statements
string
reported_by
required
string
reported_date
string
riddor_reportable
boolean
riddor_reference
string
days_lost
number
medical_treatment_required
boolean
hospital_visit
boolean
photos
Array of strings
documents
Array of strings

Responses

Request samples

Content type
application/json
{
  • "tenant_id": "string",
  • "company_id": "string",
  • "accident_date": "2024-01-15",
  • "accident_time": "14:30",
  • "location": "Warehouse Floor Area B",
  • "department_id": "string",
  • "affected_employee_id": "string",
  • "affected_employee_name": "string",
  • "accident_type": "SLIP_TRIP_FALL",
  • "injury_type": "string",
  • "injury_severity": "NO_INJURY",
  • "injury_description": "string",
  • "body_parts_affected": [
    ],
  • "accident_description": "string",
  • "immediate_action_taken": "string",
  • "witness_names": [
    ],
  • "witness_statements": "string",
  • "reported_by": "string",
  • "reported_date": "string",
  • "riddor_reportable": true,
  • "riddor_reference": "string",
  • "days_lost": 0,
  • "medical_treatment_required": true,
  • "hospital_visit": true,
  • "photos": [
    ],
  • "documents": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "report_number": "string",
  • "accident_date": "2019-08-24T14:15:22Z",
  • "accident_time": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "department_id": "string",
  • "affected_employee_id": "string",
  • "affected_employee_name": "string",
  • "accident_type": "SLIP_TRIP_FALL",
  • "injury_type": "string",
  • "injury_severity": "string",
  • "injury_description": "string",
  • "body_parts_affected": [
    ],
  • "accident_description": "string",
  • "immediate_action_taken": "string",
  • "witness_names": [
    ],
  • "witness_statements": "string",
  • "reported_by": "string",
  • "reported_date": "2019-08-24T14:15:22Z",
  • "riddor_reportable": true,
  • "riddor_reference": "string",
  • "days_lost": 0,
  • "medical_treatment_required": true,
  • "hospital_visit": true,
  • "investigation_date": "2019-08-24T14:15:22Z",
  • "investigated_by": "string",
  • "root_causes": [
    ],
  • "contributing_factors": [
    ],
  • "corrective_actions": [
    ],
  • "preventive_actions": [
    ],
  • "investigation_findings": "string",
  • "recommendations": [
    ],
  • "action_plan": "string",
  • "status": "PENDING",
  • "closure_date": "2019-08-24T14:15:22Z",
  • "closure_notes": "string",
  • "photos": [
    ],
  • "documents": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "department": { },
  • "affected_employee": { },
  • "days_since_accident": 0,
  • "requires_riddor": true,
  • "investigation_overdue": true
}

Get accident statistics for a company

Authorizations:
None
path Parameters
companyId
required
string
query Parameters
year
required
number

Responses

Response samples

Content type
application/json
{
  • "total_accidents": 0,
  • "riddor_reportable": 0,
  • "total_days_lost": 0,
  • "accidents_by_severity": { },
  • "accidents_by_type": { },
  • "accidents_by_department": { },
  • "accidents_by_month": [
    ],
  • "frequency_rate": 0,
  • "severity_rate": 0,
  • "open_investigations": 0,
  • "completed_investigations": 0,
  • "most_common_injuries": [
    ],
  • "most_affected_body_parts": [
    ]
}

Get RIDDOR reportable accidents

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Number of items per page

companyId
required
string

Responses

Update accident report

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
location
string
department_id
string
injury_type
string
injury_severity
string
Enum: "NO_INJURY" "MINOR" "MODERATE" "MAJOR" "FATAL"
injury_description
string
body_parts_affected
Array of strings
accident_description
string
immediate_action_taken
string
witness_names
Array of strings
witness_statements
string
riddor_reportable
boolean
riddor_reference
string
days_lost
number
medical_treatment_required
boolean
hospital_visit
boolean
status
string
Enum: "PENDING" "REPORTED" "UNDER_INVESTIGATION" "INVESTIGATED" "CLOSED"
photos
Array of strings
documents
Array of strings

Responses

Request samples

Content type
application/json
{
  • "location": "string",
  • "department_id": "string",
  • "injury_type": "string",
  • "injury_severity": "NO_INJURY",
  • "injury_description": "string",
  • "body_parts_affected": [
    ],
  • "accident_description": "string",
  • "immediate_action_taken": "string",
  • "witness_names": [
    ],
  • "witness_statements": "string",
  • "riddor_reportable": true,
  • "riddor_reference": "string",
  • "days_lost": 0,
  • "medical_treatment_required": true,
  • "hospital_visit": true,
  • "status": "PENDING",
  • "photos": [
    ],
  • "documents": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "report_number": "string",
  • "accident_date": "2019-08-24T14:15:22Z",
  • "accident_time": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "department_id": "string",
  • "affected_employee_id": "string",
  • "affected_employee_name": "string",
  • "accident_type": "SLIP_TRIP_FALL",
  • "injury_type": "string",
  • "injury_severity": "string",
  • "injury_description": "string",
  • "body_parts_affected": [
    ],
  • "accident_description": "string",
  • "immediate_action_taken": "string",
  • "witness_names": [
    ],
  • "witness_statements": "string",
  • "reported_by": "string",
  • "reported_date": "2019-08-24T14:15:22Z",
  • "riddor_reportable": true,
  • "riddor_reference": "string",
  • "days_lost": 0,
  • "medical_treatment_required": true,
  • "hospital_visit": true,
  • "investigation_date": "2019-08-24T14:15:22Z",
  • "investigated_by": "string",
  • "root_causes": [
    ],
  • "contributing_factors": [
    ],
  • "corrective_actions": [
    ],
  • "preventive_actions": [
    ],
  • "investigation_findings": "string",
  • "recommendations": [
    ],
  • "action_plan": "string",
  • "status": "PENDING",
  • "closure_date": "2019-08-24T14:15:22Z",
  • "closure_notes": "string",
  • "photos": [
    ],
  • "documents": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "department": { },
  • "affected_employee": { },
  • "days_since_accident": 0,
  • "requires_riddor": true,
  • "investigation_overdue": true
}

Delete accident report

Authorizations:
None
path Parameters
id
required
string

Responses

Workplace - Certificates

Certificates, licenses, and qualifications

Create new certificate or license

Authorizations:
None
Request Body schema: application/json
required
tenant_id
string
certificate_type
required
string
Enum: "FOOD_HYGIENE" "WASTE_CARRIER" "PREMISES_LICENSE" "ALCOHOL_LICENSE" "GAMBLING_LICENSE" "ENTERTAINMENT_LICENSE" "TRADING_STANDARDS" "HEALTH_SAFETY" "ENVIRONMENTAL" "PROFESSIONAL" "VEHICLE" "EQUIPMENT" "OTHER"
certificate_name
required
string
certificate_number
string
issuing_authority
required
string
applies_to_type
required
string
applies_to_id
required
string
issue_date
required
string
expiry_date
string
is_permanent
boolean
renewal_required
boolean
renewal_process_days
number
status
string
Enum: "PENDING" "ACTIVE" "EXPIRED" "SUSPENDED" "REVOKED" "INVALID" "ARCHIVED"
verification_date
string
verified_by
string
certificate_document_path
string
notes
string

Responses

Request samples

Content type
application/json
{
  • "tenant_id": "string",
  • "certificate_type": "FOOD_HYGIENE",
  • "certificate_name": "Food Hygiene Certificate Level 2",
  • "certificate_number": "CERT-2024-001",
  • "issuing_authority": "Local Council",
  • "applies_to_type": "COMPANY",
  • "applies_to_id": "string",
  • "issue_date": "2024-01-15",
  • "expiry_date": "2025-01-15",
  • "is_permanent": true,
  • "renewal_required": true,
  • "renewal_process_days": 0,
  • "status": "PENDING",
  • "verification_date": "string",
  • "verified_by": "string",
  • "certificate_document_path": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "certificate_type": "FOOD_HYGIENE",
  • "certificate_name": "string",
  • "certificate_number": "string",
  • "issuing_authority": "string",
  • "applies_to_type": "string",
  • "applies_to_id": "string",
  • "issue_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "is_permanent": true,
  • "renewal_required": true,
  • "renewal_process_days": 0,
  • "status": "PENDING",
  • "verification_date": "2019-08-24T14:15:22Z",
  • "verified_by": "string",
  • "certificate_document_path": "string",
  • "notes": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "days_until_expiry": 0,
  • "is_expiring_soon": true,
  • "is_expired": true
}

Get expiring certificates and licenses

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Number of items per page

companyId
required
string
days
required
number

Responses

Verify certificate authenticity

Authorizations:
None
path Parameters
certificateNumber
required
string

Responses

Response samples

Content type
application/json
{
  • "certificate_number": "string",
  • "is_valid": true,
  • "verified_at": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "holder_name": "string",
  • "issuing_authority": "string"
}

Workplace - Training Compliance

Mandatory workplace training

Create new training compliance record

Authorizations:
None
Request Body schema: application/json
required
tenant_id
string
company_id
required
string
employee_id
required
string
training_type
required
string
Enum: "HEALTH_SAFETY" "FIRE_SAFETY" "FIRST_AID" "MANUAL_HANDLING" "GDPR" "ANTI_BRIBERY" "DIVERSITY_INCLUSION" "MENTAL_HEALTH" "EMERGENCY_EVACUATION" "FOOD_HYGIENE" "SAFEGUARDING" "TECHNICAL" "PROFESSIONAL" "OTHER"
training_name
required
string
provider_name
required
string
is_mandatory
required
boolean
completion_date
string
expiry_date
string
certificate_number
string
training_hours
number
cost
number
status
string
Enum: "NOT_STARTED" "IN_PROGRESS" "COMPLETED" "EXPIRED" "EXEMPT" "FAILED"
next_renewal_date
string
certificate_path
string

Responses

Request samples

Content type
application/json
{
  • "tenant_id": "string",
  • "company_id": "string",
  • "employee_id": "string",
  • "training_type": "HEALTH_SAFETY",
  • "training_name": "string",
  • "provider_name": "string",
  • "is_mandatory": true,
  • "completion_date": "string",
  • "expiry_date": "string",
  • "certificate_number": "string",
  • "training_hours": 0,
  • "cost": 0,
  • "status": "NOT_STARTED",
  • "next_renewal_date": "string",
  • "certificate_path": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "employee_id": "string",
  • "training_type": "HEALTH_SAFETY",
  • "training_name": "string",
  • "training_description": "string",
  • "priority": "MANDATORY",
  • "provider_name": "string",
  • "is_mandatory": true,
  • "delivery_method": "IN_PERSON",
  • "scheduled_date": "2019-08-24T14:15:22Z",
  • "completion_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "score": 0,
  • "passed": true,
  • "certificate_number": "string",
  • "certificate_path": "string",
  • "status": "NOT_STARTED",
  • "duration_hours": 0,
  • "cost": 0,
  • "notes": "string",
  • "next_renewal_date": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "company": { },
  • "employee": { },
  • "days_until_expiry": 0,
  • "is_expired": true,
  • "is_due_soon": true,
  • "is_expiring_soon": true,
  • "is_overdue": true,
  • "renewal_required": true
}

Workplace - Reminders

Compliance reminders and notifications

Create new compliance reminder

Authorizations:
None
Request Body schema: application/json
required
tenant_id
string
reminder_type
required
string
related_record_type
required
string
related_record_id
required
string
title
required
string
message
required
string
priority
string
Enum: "LOW" "MEDIUM" "HIGH" "URGENT"
due_date
required
string
reminder_date
required
string
recipient_ids
Array of strings
recipient_roles
Array of strings
recurring
boolean
recurring_pattern
string
auto_generated
boolean

Responses

Request samples

Content type
application/json
{
  • "tenant_id": "string",
  • "reminder_type": "TRAINING",
  • "related_record_type": "training_compliance",
  • "related_record_id": "string",
  • "title": "Training Renewal Required",
  • "message": "Your fire safety training expires in 30 days",
  • "priority": "LOW",
  • "due_date": "2024-02-15",
  • "reminder_date": "2024-02-01",
  • "recipient_ids": [
    ],
  • "recipient_roles": [
    ],
  • "recurring": true,
  • "recurring_pattern": "MONTHLY",
  • "auto_generated": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "reminder_type": "string",
  • "related_record_type": "string",
  • "related_record_id": "string",
  • "title": "string",
  • "message": "string",
  • "priority": "LOW",
  • "due_date": "2019-08-24T14:15:22Z",
  • "reminder_date": "2019-08-24T14:15:22Z",
  • "recipient_ids": [
    ],
  • "recipient_roles": [
    ],
  • "auto_generated": true,
  • "recurring": true,
  • "recurring_pattern": "string",
  • "status": "PENDING",
  • "sent_at": "2019-08-24T14:15:22Z",
  • "acknowledged_at": "2019-08-24T14:15:22Z",
  • "acknowledged_by": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "days_until_due": 0,
  • "is_overdue": true,
  • "is_urgent": true
}

Workplace - Dashboard

Workplace compliance overview

Get compliance dashboard for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

Responses

Response samples

Content type
application/json
{
  • "overallComplianceScore": 0,
  • "totalCompliantItems": 0,
  • "totalNonCompliantItems": 0,
  • "urgentActionItems": [
    ],
  • "upcomingRenewals": [
    ],
  • "recentInspections": [
    ],
  • "riskDistribution": { },
  • "complianceByCategory": [
    ]
}

Run compliance check for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

Request Body schema: application/json
required
includeCategories
Array of strings
excludeCategories
Array of strings
generateReport
boolean
sendNotifications
boolean

Responses

Request samples

Content type
application/json
{
  • "includeCategories": [
    ],
  • "excludeCategories": [
    ],
  • "generateReport": true,
  • "sendNotifications": true
}

Response samples

Content type
application/json
{
  • "checkDate": "2019-08-24T14:15:22Z",
  • "overallResult": "string",
  • "itemResults": [
    ],
  • "reportPath": "string",
  • "nextCheckDate": "2019-08-24T14:15:22Z"
}

Create a new compliance item

Authorizations:
JWT-auth
Request Body schema: application/json
required
compliance_code
required
string
compliance_name
required
string
compliance_category
required
string
Enum: "INSURANCE" "SAFETY" "TRAINING" "CERTIFICATION"
description
string
legal_requirement
required
object
regulatory_body
string
is_mandatory
boolean
Default: true
applies_to_company_size
string
Enum: "ALL" "SMALL" "MEDIUM" "LARGE"
applies_to_industry
Array of strings
check_frequency
string
Enum: "DAILY" "WEEKLY" "MONTHLY" "QUARTERLY" "ANNUAL"
advance_notice_days
number
Default: 30
grace_period_days
number
Default: 0

Responses

Request samples

Content type
application/json
{
  • "compliance_code": "ELI_INSURANCE",
  • "compliance_name": "Employer's Liability Insurance",
  • "compliance_category": "INSURANCE",
  • "description": "string",
  • "legal_requirement": { },
  • "regulatory_body": "string",
  • "is_mandatory": true,
  • "applies_to_company_size": "ALL",
  • "applies_to_industry": [
    ],
  • "check_frequency": "DAILY",
  • "advance_notice_days": 30,
  • "grace_period_days": 0
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "compliance_code": "string",
  • "compliance_name": "string",
  • "compliance_category": "INSURANCE",
  • "description": "string",
  • "legal_requirement": { },
  • "regulatory_body": "string",
  • "is_mandatory": true,
  • "applies_to_company_size": "string",
  • "applies_to_industry": [
    ],
  • "check_frequency": "string",
  • "advance_notice_days": 0,
  • "grace_period_days": 0,
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Get all compliance items

Authorizations:
JWT-auth
query Parameters
page
number
limit
number
category
string
is_mandatory
boolean

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get compliance item by ID

Authorizations:
JWT-auth
path Parameters
itemId
required
string

Compliance item ID

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "compliance_code": "string",
  • "compliance_name": "string",
  • "compliance_category": "INSURANCE",
  • "description": "string",
  • "legal_requirement": { },
  • "regulatory_body": "string",
  • "is_mandatory": true,
  • "applies_to_company_size": "string",
  • "applies_to_industry": [
    ],
  • "check_frequency": "string",
  • "advance_notice_days": 0,
  • "grace_period_days": 0,
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update compliance item

Authorizations:
JWT-auth
path Parameters
itemId
required
string

Compliance item ID

Request Body schema: application/json
required
compliance_name
string
compliance_category
string
Enum: "INSURANCE" "SAFETY" "TRAINING" "CERTIFICATION"
description
string
legal_requirement
object
regulatory_body
string
is_mandatory
boolean
applies_to_company_size
string
Enum: "ALL" "SMALL" "MEDIUM" "LARGE"
applies_to_industry
Array of strings
check_frequency
string
Enum: "DAILY" "WEEKLY" "MONTHLY" "QUARTERLY" "ANNUAL"
advance_notice_days
number
grace_period_days
number
is_active
boolean

Responses

Request samples

Content type
application/json
{
  • "compliance_name": "string",
  • "compliance_category": "INSURANCE",
  • "description": "string",
  • "legal_requirement": { },
  • "regulatory_body": "string",
  • "is_mandatory": true,
  • "applies_to_company_size": "ALL",
  • "applies_to_industry": [
    ],
  • "check_frequency": "DAILY",
  • "advance_notice_days": 0,
  • "grace_period_days": 0,
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "compliance_code": "string",
  • "compliance_name": "string",
  • "compliance_category": "INSURANCE",
  • "description": "string",
  • "legal_requirement": { },
  • "regulatory_body": "string",
  • "is_mandatory": true,
  • "applies_to_company_size": "string",
  • "applies_to_industry": [
    ],
  • "check_frequency": "string",
  • "advance_notice_days": 0,
  • "grace_period_days": 0,
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete compliance item

Authorizations:
JWT-auth
path Parameters
itemId
required
string

Compliance item ID

Responses

Get compliance status for a company

Authorizations:
JWT-auth
path Parameters
companyId
required
string

Company ID

query Parameters
status
string
Enum: "COMPLIANT" "NON_COMPLIANT" "OVERDUE" "PENDING"
category
string
Enum: "INSURANCE" "SAFETY" "TRAINING" "CERTIFICATION"
risk_level
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
responsible_person_id
string
due_date_from
string
due_date_to
string
page
number
Default: 1
limit
number
Default: 20

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Create company compliance status

Authorizations:
JWT-auth
Request Body schema: application/json
required
company_id
required
string
compliance_item_id
required
string
current_status
required
string
Enum: "COMPLIANT" "NON_COMPLIANT" "OVERDUE" "PENDING"
compliance_level
string
Enum: "FULL" "PARTIAL" "NONE"
last_check_date
string
next_due_date
required
string
expiry_date
string
responsible_person_id
string
responsible_department_id
string
evidence_documents
Array of strings
certificates
object
risk_level
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
non_compliance_impact
string
notes
string

Responses

Request samples

Content type
application/json
{
  • "company_id": "string",
  • "compliance_item_id": "string",
  • "current_status": "COMPLIANT",
  • "compliance_level": "FULL",
  • "last_check_date": "string",
  • "next_due_date": "string",
  • "expiry_date": "string",
  • "responsible_person_id": "string",
  • "responsible_department_id": "string",
  • "evidence_documents": [
    ],
  • "certificates": { },
  • "risk_level": "LOW",
  • "non_compliance_impact": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "compliance_item_id": "string",
  • "current_status": "COMPLIANT",
  • "compliance_level": "FULL",
  • "last_check_date": "2019-08-24T14:15:22Z",
  • "next_due_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "responsible_person_id": "string",
  • "responsible_department_id": "string",
  • "evidence_documents": [
    ],
  • "certificates": { },
  • "risk_level": "LOW",
  • "non_compliance_impact": "string",
  • "notes": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "compliance_item": { },
  • "company": { }
}

Update company compliance status

Authorizations:
JWT-auth
path Parameters
statusId
required
string

Compliance status ID

Request Body schema: application/json
required
current_status
string
Enum: "COMPLIANT" "NON_COMPLIANT" "OVERDUE" "PENDING"
compliance_level
string
Enum: "FULL" "PARTIAL" "NONE"
last_check_date
string
next_due_date
string
expiry_date
string
responsible_person_id
string
responsible_department_id
string
evidence_documents
Array of strings
certificates
object
risk_level
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
non_compliance_impact
string
notes
string

Responses

Request samples

Content type
application/json
{
  • "current_status": "COMPLIANT",
  • "compliance_level": "FULL",
  • "last_check_date": "string",
  • "next_due_date": "string",
  • "expiry_date": "string",
  • "responsible_person_id": "string",
  • "responsible_department_id": "string",
  • "evidence_documents": [
    ],
  • "certificates": { },
  • "risk_level": "LOW",
  • "non_compliance_impact": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "company_id": "string",
  • "compliance_item_id": "string",
  • "current_status": "COMPLIANT",
  • "compliance_level": "FULL",
  • "last_check_date": "2019-08-24T14:15:22Z",
  • "next_due_date": "2019-08-24T14:15:22Z",
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "responsible_person_id": "string",
  • "responsible_department_id": "string",
  • "evidence_documents": [
    ],
  • "certificates": { },
  • "risk_level": "LOW",
  • "non_compliance_impact": "string",
  • "notes": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "compliance_item": { },
  • "company": { }
}

Get expiring compliance items

Authorizations:
JWT-auth
path Parameters
days
required
number

Number of days to look ahead

query Parameters
companyId
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get overdue compliance items

Authorizations:
JWT-auth
query Parameters
companyId
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

ESS - Employee Profile

Employee self-service profile management

Get employee profile

Retrieve the authenticated employee's profile information for self-service access

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
{
  • "id": "uuid",
  • "employee_no": "EMP001",
  • "first_name": "John",
  • "last_name": "Doe",
  • "email": "john.doe@example.com",
  • "phone": "07700900123",
  • "address": "123 Main Street, London",
  • "postcode": "SW1A 1AA",
  • "emergency_contact_name": "Jane Doe",
  • "emergency_contact_phone": "07800123456",
  • "bank_name": "Barclays Bank",
  • "bank_account_no": "12345678",
  • "bank_sort_code": "20-00-00",
  • "current_position": "Software Engineer",
  • "current_department": "Engineering Department"
}

Update employee profile

Update the authenticated employee's personal information. Only certain fields can be updated via self-service.

Authorizations:
JWT-auth
Request Body schema: application/json
required

Personal information fields to update

phone
string
address
string
postcode
string
emergency_contact_name
string
emergency_contact_phone
string
bank_name
string
bank_account_no
string
bank_sort_code
string

Responses

Request samples

Content type
application/json
{
  • "phone": "07700900123",
  • "address": "123 Main Street, London",
  • "postcode": "SW1A 1AA",
  • "emergency_contact_name": "John Doe",
  • "emergency_contact_phone": "07800123456",
  • "bank_name": "Barclays Bank",
  • "bank_account_no": "12345678",
  • "bank_sort_code": "20-00-00"
}

Response samples

Content type
application/json
{
  • "id": "uuid",
  • "employee_no": "EMP001",
  • "first_name": "John",
  • "last_name": "Doe",
  • "email": "john.doe@example.com",
  • "phone": "07700900123",
  • "address": "123 Main Street, London",
  • "postcode": "SW1A 1AA",
  • "emergency_contact_name": "Jane Doe",
  • "emergency_contact_phone": "07800123456",
  • "bank_name": "Barclays Bank",
  • "bank_account_no": "12345678",
  • "bank_sort_code": "20-00-00",
  • "current_position": "Software Engineer",
  • "current_department": "Engineering Department"
}

ESS - Documents

Personal document management

Upload employee document

Upload a personal document such as passport, visa, certificate, etc. Maximum file size is 10MB.

Authorizations:
JWT-auth
Request Body schema: multipart/form-data
required

Document upload

file
string <binary>

Document file (PDF, JPG, PNG)

type
string
Enum: "passport" "visa" "certificate" "contract" "other"

Document type

name
string

Document name

expiryDate
string <date>

Document expiry date (optional)

Responses

Response samples

Content type
application/json
{
  • "id": "uuid",
  • "document_type": "passport",
  • "document_name": "UK Passport",
  • "file_path": "documents/employee/uuid/passport.pdf",
  • "file_size": 1024000,
  • "mime_type": "application/pdf",
  • "upload_date": "2024-01-15T10:30:00Z",
  • "expiry_date": "2030-12-31",
  • "status": "active"
}

Get employee documents

Retrieve all documents uploaded by the authenticated employee

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Delete employee document

Delete a document uploaded by the authenticated employee

Authorizations:
JWT-auth
path Parameters
id
required
string

Document ID

Responses

ESS - Leave Requests

Self-service leave applications

Submit leave request

Submit a new leave request. The system will check leave balance and conflicts before creating the request.

Authorizations:
JWT-auth
Request Body schema: application/json
required

Leave request details

leave_type_id
required
string
start_date
required
string
end_date
required
string
duration_hours
required
number
comments
string

Responses

Request samples

Content type
application/json
{
  • "leave_type_id": "uuid",
  • "start_date": "2024-03-15",
  • "end_date": "2024-03-17",
  • "duration_hours": 24,
  • "comments": "Family vacation"
}

Response samples

Content type
application/json
{
  • "id": "uuid",
  • "leave_type": "Annual Leave",
  • "start_date": "2024-03-15",
  • "end_date": "2024-03-17",
  • "duration_hours": 24,
  • "status": "PENDING",
  • "comments": "Family vacation",
  • "submitted_at": "2024-03-10T09:00:00Z",
  • "approved_at": "2024-03-11T14:30:00Z"
}

Get employee leave requests

Retrieve all leave requests for the authenticated employee, ordered by most recent first

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get leave balance

Get the authenticated employee's leave balance for all leave types, including used, remaining, and pending days

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Cancel leave request

Cancel a pending leave request. Only requests with PENDING status can be cancelled.

Authorizations:
JWT-auth
path Parameters
id
required
string

Leave request ID

Responses

ESS - Payslips

View and download payslips

Get employee payslips

Retrieve the authenticated employee's payslip history with optional filtering by year/month

Authorizations:
JWT-auth
query Parameters
year
number
Example: year=2024

Filter by year

month
number
Example: month=1

Filter by month (1-12)

limit
number
Example: limit=10

Maximum number of payslips to return

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get year-to-date summary

Get the authenticated employee's year-to-date payroll summary including total gross pay, tax, and NI contributions

Authorizations:
JWT-auth
query Parameters
year
number

Year for summary (defaults to current year)

Responses

Response samples

Content type
application/json
{
  • "total_gross_pay": 42000,
  • "total_net_pay": 33600,
  • "total_tax": 8400,
  • "total_ni": 4200,
  • "year": 2024
}

Download payslip PDF

Download a specific payslip as a PDF document. Only accessible by the payslip owner.

Authorizations:
JWT-auth
path Parameters
id
required
string

Payslip ID

Responses

Cases - Management

HR case tracking and resolution

Create a new case

Authorizations:
None
Request Body schema: application/json
required
title
required
string
description
required
string
category_id
required
string
priority
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
severity
string
reported_by
required
string
assigned_to
string
affected_employees
Array of strings
case_data
object
due_date
string

Responses

Request samples

Content type
application/json
{
  • "title": "Employee Grievance - Workplace Conflict",
  • "description": "Detailed description of the case...",
  • "category_id": "uuid-of-category",
  • "priority": "HIGH",
  • "severity": "high",
  • "reported_by": "uuid-of-reporter",
  • "assigned_to": "uuid-of-assignee",
  • "affected_employees": [
    ],
  • "case_data": {
    },
  • "due_date": "2024-12-31"
}

Get all cases with filters

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

status
string
Enum: "OPEN" "IN_PROGRESS" "RESOLVED" "CLOSED" "CANCELLED"
Example: status=OPEN
priority
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
Example: priority=HIGH
category_id
string
Example: category_id=uuid-of-category
assigned_to
string
Example: assigned_to=uuid-of-assignee
reported_by
string
Example: reported_by=uuid-of-reporter
created_from
string
Example: created_from=2024-01-01
created_to
string
Example: created_to=2024-12-31
search
string
Example: search=search term

Responses

Get case statistics

Authorizations:
None

Responses

Get a case by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Update a case

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
title
string
description
string
priority
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
severity
string
status
string
Enum: "OPEN" "IN_PROGRESS" "RESOLVED" "CLOSED" "CANCELLED"
assigned_to
string
affected_employees
Array of strings
case_data
object
due_date
string

Responses

Request samples

Content type
application/json
{
  • "title": "Updated title",
  • "description": "Updated description",
  • "priority": "MEDIUM",
  • "severity": "medium",
  • "status": "IN_PROGRESS",
  • "assigned_to": "uuid-of-assignee",
  • "affected_employees": [
    ],
  • "case_data": {
    },
  • "due_date": "2024-12-31"
}

Resolve and close a case

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
resolution
required
string
outcome_details
string

Responses

Request samples

Content type
application/json
{
  • "resolution": "Case resolved with warning issued",
  • "outcome_details": "Detailed outcome of the case..."
}

Assign a case to an employee

Authorizations:
None
path Parameters
id
required
string

Responses

Escalate case priority

Authorizations:
None
path Parameters
id
required
string

Responses

Cases - Categories

Case categorization and types

Create a new case category

Authorizations:
None
Request Body schema: application/json
required
category_name
required
string
description
string
severity_levels
Array of strings
default_priority
string
sla_hours
number
escalation_rules
object
required_fields
object
is_active
boolean

Responses

Request samples

Content type
application/json
{
  • "category_name": "Disciplinary",
  • "description": "Cases related to disciplinary actions",
  • "severity_levels": [
    ],
  • "default_priority": "medium",
  • "sla_hours": 48,
  • "escalation_rules": {
    },
  • "required_fields": [
    ],
  • "is_active": true
}

Get all case categories

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

is_active
boolean
Example: is_active=true
search
string
Example: search=disciplinary

Responses

Get all active categories

Authorizations:
None

Responses

Get category statistics

Authorizations:
None

Responses

Get a case category by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Update a case category

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
category_name
string
description
string
severity_levels
Array of strings
default_priority
string
sla_hours
number
escalation_rules
object
required_fields
object
is_active
boolean

Responses

Request samples

Content type
application/json
{
  • "category_name": "Updated Category Name",
  • "description": "Updated description",
  • "severity_levels": [
    ],
  • "default_priority": "high",
  • "sla_hours": 72,
  • "escalation_rules": {
    },
  • "required_fields": [
    ],
  • "is_active": false
}

Delete a case category

Authorizations:
None
path Parameters
id
required
string

Responses

Cases - Activities

Case activities and updates

Create a new case activity

Authorizations:
None
Request Body schema: application/json
required
case_id
required
string
activity_type
required
string
title
string
description
string
performed_by
required
string
activity_data
object
is_internal
boolean

Responses

Request samples

Content type
application/json
{
  • "case_id": "uuid-of-case",
  • "activity_type": "NOTE",
  • "title": "Initial meeting with involved parties",
  • "description": "Detailed description of the activity...",
  • "performed_by": "uuid-of-performer",
  • "activity_data": {
    },
  • "is_internal": false
}

Get all activities for a case

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

case_id
required
string
Example: case_id=uuid-of-case
activity_type
string
Enum: "NOTE" "MEETING" "DOCUMENT" "DECISION" "INVESTIGATION" "INTERVIEW" "EVIDENCE" "ESCALATION"
Example: activity_type=MEETING
search
string
Example: search=search term

Responses

Get activity timeline for a case

Authorizations:
None
path Parameters
caseId
required
string

Responses

Get a case activity by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Update a case activity

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
title
string
description
string
activity_data
object
is_internal
boolean

Responses

Request samples

Content type
application/json
{
  • "title": "Updated title",
  • "description": "Updated description",
  • "activity_data": {
    },
  • "is_internal": true
}

Delete a case activity

Authorizations:
None
path Parameters
id
required
string

Responses

Add multiple activities to a case

Authorizations:
None
path Parameters
caseId
required
string
Request Body schema: application/json
required
Array
string

Responses

Request samples

Content type
application/json
[
  • "string"
]

Analytics - Reports

HR reports and analytics

Generate a new report

Authorizations:
None
Request Body schema: application/json
required
type
required
string
Enum: "employee_list" "employee_detail" "payroll_summary" "payroll_detail" "leave_summary" "leave_balance" "attendance_report" "department_summary" "audit_log" "compliance_report" "performance_review" "headcount_report" "turnover_report" "training_report"

Type of report to generate

format
required
string
Enum: "pdf" "excel" "csv" "json"

Output format for the report

title
string
description
string
filters
object

Filters to apply to the report data

object (ReportSortDto)
includeCharts
boolean
includeSummary
boolean
includeTimestamp
boolean
object (CompanyInfoDto)

Responses

Request samples

Content type
application/json
{
  • "type": "employee_list",
  • "format": "pdf",
  • "title": "Monthly Employee Report",
  • "description": "Employee report for December 2024",
  • "filters": {
    },
  • "sort": {
    },
  • "includeCharts": true,
  • "includeSummary": true,
  • "includeTimestamp": true,
  • "companyInfo": {
    }
}

Download a generated report

Authorizations:
None
path Parameters
reportId
required
string

Responses

Get report generation history

Authorizations:
None
query Parameters
type
string
Enum: "employee_list" "employee_detail" "payroll_summary" "payroll_detail" "leave_summary" "leave_balance" "attendance_report" "department_summary" "audit_log" "compliance_report" "performance_review" "headcount_report" "turnover_report" "training_report"
Example: type=employee_list
format
string
Enum: "pdf" "excel" "csv" "json"
Example: format=pdf
status
string
Enum: "pending" "processing" "completed" "failed"
Example: status=completed
start_date
string
Example: start_date=2024-01-01
end_date
string
Example: end_date=2024-12-31
page
number >= 1
Example: page=1
limit
number [ 1 .. 100 ]
Example: limit=20

Responses

Create a new report schedule

Authorizations:
None
Request Body schema: application/json
required
report_type
required
string
Enum: "employee_list" "employee_detail" "payroll_summary" "payroll_detail" "leave_summary" "leave_balance" "attendance_report" "department_summary" "audit_log" "compliance_report" "performance_review" "headcount_report" "turnover_report" "training_report"
required
object (GenerateReportDto)
schedule
required
string

Cron expression for schedule

recipients
required
Array of strings

Email addresses to send the report to

enabled
boolean

Responses

Request samples

Content type
application/json
{
  • "report_type": "payroll_summary",
  • "report_options": {
    },
  • "schedule": "0 9 * * MON",
  • "recipients": [
    ],
  • "enabled": true
}

Get all report schedules

Authorizations:
None

Responses

Get a specific schedule

Authorizations:
None
path Parameters
scheduleId
required
string

Responses

Update a report schedule

Authorizations:
None
path Parameters
scheduleId
required
string
Request Body schema: application/json
required
object (GenerateReportDto)
schedule
string

Cron expression for schedule

recipients
Array of strings

Email addresses to send the report to

enabled
boolean

Responses

Request samples

Content type
application/json
{
  • "report_options": {
    },
  • "schedule": "0 9 * * MON",
  • "recipients": [
    ],
  • "enabled": false
}

Delete a report schedule

Authorizations:
None
path Parameters
scheduleId
required
string

Responses

Run a scheduled report immediately

Authorizations:
None
path Parameters
scheduleId
required
string

Responses

Generate employee list report

Authorizations:
None
query Parameters
format
required
string

Responses

Generate payroll summary report

Authorizations:
None
query Parameters
format
required
string
month
required
number
year
required
number

Responses

Generate attendance report

Authorizations:
None
query Parameters
format
required
string
start_date
required
string
end_date
required
string
department_id
required
string

Responses

Generate leave balance report

Authorizations:
None
query Parameters
format
required
string
department_id
required
string

Responses

Get employee metrics

Authorizations:
None

Responses

Get department metrics

Authorizations:
None

Responses

Get payroll metrics

Authorizations:
None

Responses

Get attendance metrics

Authorizations:
None

Responses

Get performance metrics

Authorizations:
None

Responses

Clear analytics cache

Authorizations:
None
query Parameters
pattern
required
string

Responses

Get cache statistics

Authorizations:
None

Responses

Initialize predefined report templates

Authorizations:
None

Responses

Analytics - Dashboards

Interactive dashboards and visualizations

Create a new dashboard

Authorizations:
None
Request Body schema: application/json
required
name
required
string
description
string
dashboard_type
string
Enum: "OVERVIEW" "DEPARTMENT" "EXECUTIVE" "OPERATIONAL" "CUSTOM"
layout
required
object
widgets
required
object
refresh_interval
number
access_permissions
object
is_default
boolean
active
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "HR Overview Dashboard",
  • "description": "Main HR metrics and KPIs dashboard",
  • "dashboard_type": "OVERVIEW",
  • "layout": {
    },
  • "widgets": [
    ],
  • "refresh_interval": 300,
  • "access_permissions": {
    },
  • "is_default": false,
  • "active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "description": { },
  • "dashboard_type": "OVERVIEW",
  • "layout": { },
  • "widgets": { },
  • "refresh_interval": 0,
  • "access_permissions": { },
  • "is_default": true,
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "created_by": { },
  • "updated_by_id": { },
  • "updated_by": { }
}

Get all dashboards

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

dashboard_type
string
Enum: "OVERVIEW" "DEPARTMENT" "EXECUTIVE" "OPERATIONAL" "CUSTOM"
Example: dashboard_type=OVERVIEW
is_default
boolean
Example: is_default=true
active
boolean
Example: active=true
search
string
Example: search=overview

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get default dashboard

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "description": { },
  • "dashboard_type": "OVERVIEW",
  • "layout": { },
  • "widgets": { },
  • "refresh_interval": 0,
  • "access_permissions": { },
  • "is_default": true,
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "created_by": { },
  • "updated_by_id": { },
  • "updated_by": { }
}

Get a dashboard by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "description": { },
  • "dashboard_type": "OVERVIEW",
  • "layout": { },
  • "widgets": { },
  • "refresh_interval": 0,
  • "access_permissions": { },
  • "is_default": true,
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "created_by": { },
  • "updated_by_id": { },
  • "updated_by": { }
}

Update a dashboard

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string
description
string
dashboard_type
string
Enum: "OVERVIEW" "DEPARTMENT" "EXECUTIVE" "OPERATIONAL" "CUSTOM"
layout
object
widgets
object
refresh_interval
number
access_permissions
object
is_default
boolean
active
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "Updated Dashboard Name",
  • "description": "string",
  • "dashboard_type": "EXECUTIVE",
  • "layout": { },
  • "widgets": { },
  • "refresh_interval": 0,
  • "access_permissions": { },
  • "is_default": true,
  • "active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "description": { },
  • "dashboard_type": "OVERVIEW",
  • "layout": { },
  • "widgets": { },
  • "refresh_interval": 0,
  • "access_permissions": { },
  • "is_default": true,
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "created_by": { },
  • "updated_by_id": { },
  • "updated_by": { }
}

Delete a dashboard

Authorizations:
None
path Parameters
id
required
string

Responses

Get dashboard data with all widgets

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "dashboard_id": "string",
  • "dashboard_name": "string",
  • "widgets": [
    ],
  • "generated_at": "2019-08-24T14:15:22Z",
  • "next_refresh": "2019-08-24T14:15:22Z"
}

Duplicate a dashboard

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "description": { },
  • "dashboard_type": "OVERVIEW",
  • "layout": { },
  • "widgets": { },
  • "refresh_interval": 0,
  • "access_permissions": { },
  • "is_default": true,
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "created_by": { },
  • "updated_by_id": { },
  • "updated_by": { }
}

Analytics - Templates

Report templates and configurations

Create a new report template

Authorizations:
None
Request Body schema: application/json
required
name
required
string
category
string
Enum: "EMPLOYEE" "PERFORMANCE" "PAYROLL" "RECRUITMENT" "ATTENDANCE" "LEAVE" "TRAINING" "CUSTOM"
description
string
report_type
string
Enum: "STANDARD" "CUSTOM" "DASHBOARD"
data_sources
object
fields
object
filters
object
chart_config
object
layout_config
object
schedule_config
object
access_level
string
Enum: "PRIVATE" "DEPARTMENT" "COMPANY" "PUBLIC"
active
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "Monthly Payroll Report",
  • "category": "PAYROLL",
  • "description": "Monthly payroll summary with department breakdown",
  • "report_type": "STANDARD",
  • "data_sources": {
    },
  • "fields": {
    },
  • "filters": {
    },
  • "chart_config": {
    },
  • "layout_config": {
    },
  • "schedule_config": {
    },
  • "access_level": "DEPARTMENT",
  • "active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "category": "EMPLOYEE",
  • "description": { },
  • "report_type": "STANDARD",
  • "data_sources": { },
  • "fields": { },
  • "filters": { },
  • "chart_config": { },
  • "layout_config": { },
  • "schedule_config": { },
  • "access_level": "PRIVATE",
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Get all report templates

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

category
string
Enum: "EMPLOYEE" "PERFORMANCE" "PAYROLL" "RECRUITMENT" "ATTENDANCE" "LEAVE" "TRAINING" "CUSTOM"
Example: category=PAYROLL
report_type
string
Enum: "STANDARD" "CUSTOM" "DASHBOARD"
Example: report_type=STANDARD
access_level
string
Enum: "PRIVATE" "DEPARTMENT" "COMPANY" "PUBLIC"
Example: access_level=DEPARTMENT
active
boolean
Example: active=true
search
string
Example: search=payroll

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get predefined report templates

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get a report template by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "category": "EMPLOYEE",
  • "description": { },
  • "report_type": "STANDARD",
  • "data_sources": { },
  • "fields": { },
  • "filters": { },
  • "chart_config": { },
  • "layout_config": { },
  • "schedule_config": { },
  • "access_level": "PRIVATE",
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Update a report template

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string
category
string
Enum: "EMPLOYEE" "PERFORMANCE" "PAYROLL" "RECRUITMENT" "ATTENDANCE" "LEAVE" "TRAINING" "CUSTOM"
description
string
report_type
string
Enum: "STANDARD" "CUSTOM" "DASHBOARD"
data_sources
object
fields
object
filters
object
chart_config
object
layout_config
object
schedule_config
object
access_level
string
Enum: "PRIVATE" "DEPARTMENT" "COMPANY" "PUBLIC"
active
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "Updated Report Name",
  • "category": "EMPLOYEE",
  • "description": "string",
  • "report_type": "CUSTOM",
  • "data_sources": { },
  • "fields": { },
  • "filters": { },
  • "chart_config": { },
  • "layout_config": { },
  • "schedule_config": { },
  • "access_level": "COMPANY",
  • "active": false
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "category": "EMPLOYEE",
  • "description": { },
  • "report_type": "STANDARD",
  • "data_sources": { },
  • "fields": { },
  • "filters": { },
  • "chart_config": { },
  • "layout_config": { },
  • "schedule_config": { },
  • "access_level": "PRIVATE",
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Delete a report template

Authorizations:
None
path Parameters
id
required
string

Responses

Duplicate a report template

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "category": "EMPLOYEE",
  • "description": { },
  • "report_type": "STANDARD",
  • "data_sources": { },
  • "fields": { },
  • "filters": { },
  • "chart_config": { },
  • "layout_config": { },
  • "schedule_config": { },
  • "access_level": "PRIVATE",
  • "active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by_id": { },
  • "updated_by_id": { },
  • "created_by": { },
  • "updated_by": { }
}

Analytics - Instances

Report generation and scheduling

Generate a new report instance

Authorizations:
None
Request Body schema: application/json
required
template_id
string
report_name
required
string
parameters
object
file_format
string
Enum: "PDF" "EXCEL" "CSV" "JSON"
expires_at
string

Responses

Request samples

Content type
application/json
{
  • "template_id": "uuid-of-template",
  • "report_name": "Q1 Sales Report 2024",
  • "parameters": {
    },
  • "file_format": "PDF",
  • "expires_at": "2024-12-31T23:59:59Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": { },
  • "report_name": "string",
  • "parameters": { },
  • "status": "PENDING",
  • "file_path": { },
  • "file_format": "PDF",
  • "file_size": { },
  • "generated_at": { },
  • "generated_by_id": { },
  • "generated_by": { },
  • "expires_at": { },
  • "download_count": 0,
  • "last_downloaded": { },
  • "error_message": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "template": { }
}

Get all report instances

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

template_id
string
Example: template_id=uuid-of-template
status
string
Enum: "PENDING" "GENERATING" "COMPLETED" "FAILED" "EXPIRED"
Example: status=COMPLETED
file_format
string
Enum: "PDF" "EXCEL" "CSV" "JSON"
Example: file_format=PDF
generated_from
string
Example: generated_from=2024-01-01
generated_to
string
Example: generated_to=2024-12-31
search
string
Example: search=sales

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Get recent report instances for current user

Authorizations:
None
query Parameters
limit
required
number

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get a report instance by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "template_id": { },
  • "report_name": "string",
  • "parameters": { },
  • "status": "PENDING",
  • "file_path": { },
  • "file_format": "PDF",
  • "file_size": { },
  • "generated_at": { },
  • "generated_by_id": { },
  • "generated_by": { },
  • "expires_at": { },
  • "download_count": 0,
  • "last_downloaded": { },
  • "error_message": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "template": { }
}

Get generation status of a report instance

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "status": "PENDING",
  • "progress": 0,
  • "message": "string",
  • "file_path": "string",
  • "download_url": "string",
  • "error_message": "string"
}

Download a generated report

Authorizations:
None
path Parameters
id
required
string

Responses

Clean up expired report instances

Authorizations:
None

Responses

Companies House Integration

UK Companies House data integration

Search for companies in Companies House by name

Search the Companies House register for companies matching the provided name

Authorizations:
None
query Parameters
company_name
required
string
Example: company_name=Dark Horse

Company name to search for

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total_results": 10
}

Get company details from Companies House

Fetch detailed company information from Companies House using the company registration number

Authorizations:
None
path Parameters
company_number
required
string
Example: 12345678

Companies House registration number

Responses

Response samples

Content type
application/json
{
  • "company_name": "DARK HORSE LIMITED",
  • "company_number": "12345678",
  • "company_status": "active",
  • "company_type": "ltd",
  • "date_of_creation": "2020-01-15",
  • "registered_office_address": "string",
  • "sic_codes": [
    ],
  • "officers": [
    ]
}

Create a new company record from Companies House data

Fetch company data from Companies House and create a new company record in the system

Authorizations:
None
Request Body schema: application/json
required
company_number
required
string

Companies House registration number

utr_number
string

Unique Taxpayer Reference number

vat_number
string

VAT registration number

paye_reference
string

PAYE reference

account_office_reference
string

Accounts Office reference

website
string

Company website

email
string

Company email

phone
string

Company phone number

Responses

Request samples

Content type
application/json
{
  • "company_number": "12345678",
  • "utr_number": "1234567890",
  • "vat_number": "GB123456789",
  • "paye_reference": "123/AB456",
  • "account_office_reference": "123PA12345678",
  • "email": "info@example.com",
  • "phone": "02012345678"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "company_number": "string",
  • "company_type": "LIMITED",
  • "company_status": "ACTIVE",
  • "incorporation_date": { },
  • "registered_office_address": { },
  • "company_director": { },
  • "company_secretary": { },
  • "shareholders": { },
  • "utr_number": { },
  • "vat_number": { },
  • "paye_reference": { },
  • "account_office_reference": { },
  • "sic_code": { },
  • "website": { },
  • "email": { },
  • "phone": { },
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z"
}

Sync existing company with Companies House data

Update an existing company record with the latest data from Companies House

Authorizations:
None
path Parameters
id
required
string

Company ID

Request Body schema: application/json
required
company_number
string

Companies House registration number (if different from existing)

sync_basic_info
boolean
Default: true

Sync basic company information (name, status, type)

sync_address
boolean
Default: true

Sync registered office address

sync_officers
boolean
Default: true

Sync company officers (directors and secretary)

sync_sic_codes
boolean
Default: true

Sync SIC codes

Responses

Request samples

Content type
application/json
{
  • "company_number": "12345678",
  • "sync_basic_info": true,
  • "sync_address": true,
  • "sync_officers": true,
  • "sync_sic_codes": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "name": "string",
  • "company_number": "string",
  • "company_type": "LIMITED",
  • "company_status": "ACTIVE",
  • "incorporation_date": { },
  • "registered_office_address": { },
  • "company_director": { },
  • "company_secretary": { },
  • "shareholders": { },
  • "utr_number": { },
  • "vat_number": { },
  • "paye_reference": { },
  • "account_office_reference": { },
  • "sic_code": { },
  • "website": { },
  • "email": { },
  • "phone": { },
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z"
}

Batch sync multiple companies with Companies House

Sync multiple existing companies with the latest data from Companies House. Each company will be synced with its own registered company number unless overridden.

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get filing history from Companies House

Retrieve historical filing records including annual returns, accounts, and other statutory documents

Authorizations:
None
path Parameters
company_number
required
string
Example: 12345678

Companies House registration number

query Parameters
items_per_page
number

Number of items per page (default: 100)

Responses

Get persons with significant control

Retrieve information about individuals or entities with significant control over the company

Authorizations:
None
path Parameters
company_number
required
string
Example: 12345678

Companies House registration number

Responses

Get company charges

Retrieve information about mortgages and charges registered against the company

Authorizations:
None
path Parameters
company_number
required
string
Example: 12345678

Companies House registration number

Responses

Get upcoming filing deadlines

Calculate and retrieve upcoming filing deadlines based on company details

Authorizations:
None
path Parameters
company_number
required
string
Example: 12345678

Companies House registration number

Responses

Download a filing history document

Download a specific filing document in PDF or XHTML format from Companies House

Authorizations:
None
path Parameters
company_number
required
string
Example: 12345678

Companies House registration number

transaction_id
required
string
Example: MzM3NTI0MzU0OWFkaXF6a2N4

Filing history transaction ID

query Parameters
format
string
Enum: "pdf" "xhtml"

Document format (default: pdf)

Responses

Get document metadata

Retrieve metadata for a specific document from Companies House

Authorizations:
None
path Parameters
document_id
required
string
Example: HMsKGYRQ0a12waWa3LG2zhcwXkujPWQ671cSMFZNVsU

Document ID from Companies House

Responses

Download document by ID

Download a document directly using its document ID

Authorizations:
None
path Parameters
document_id
required
string
Example: HMsKGYRQ0a12waWa3LG2zhcwXkujPWQ671cSMFZNVsU

Document ID from Companies House

query Parameters
format
string
Enum: "pdf" "xhtml"

Document format (default: pdf)

Responses

Companies House Compliance

Companies House compliance tracking

Sync company data from Companies House

Authorizations:
None
path Parameters
companyId
required
string

Company ID

query Parameters
companyNumber
required
string

Responses

Sync companies that haven't been updated recently

Authorizations:
None
query Parameters
days
number

Days since last sync (default: 7)

Responses

Get filing history for a company

Authorizations:
None
path Parameters
companyId
required
string

Company ID

query Parameters
page
number

Page number (starts from 1)

limit
number

Number of items per page (max 100)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Sync filing history from Companies House

Authorizations:
None
path Parameters
companyId
required
string

Company ID

query Parameters
companyNumber
required
string

Responses

Get upcoming filing deadlines

Authorizations:
None
query Parameters
page
number

Page number (starts from 1)

limit
number

Number of items per page (max 100)

companyId
string

Filter by company ID

daysAhead
number

Number of days to look ahead (default: 90)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Mark a filing deadline as filed

Authorizations:
None
path Parameters
deadlineId
required
string

Deadline ID

Responses

Update reminder settings for a deadline

Authorizations:
None
path Parameters
deadlineId
required
string

Deadline ID

Responses

Update existing filing records with rendered descriptions

Authorizations:
None
query Parameters
companyId
string

Optional company ID to update only that company's filings

Responses

Get reminders for a filing deadline

Authorizations:
None
path Parameters
deadlineId
required
string

Deadline ID

query Parameters
page
number

Page number (starts from 1)

limit
number

Number of items per page (max 100)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Create an ad-hoc reminder

Authorizations:
None

Responses

Cancel a reminder

Authorizations:
None
path Parameters
reminderId
required
string

Reminder ID

Responses

Manually trigger reminder processing

Authorizations:
None

Responses

Manually trigger sending scheduled reminders

Authorizations:
None

Responses

Get compliance dashboard data for a company

Authorizations:
None
path Parameters
companyId
required
string

Company ID

Responses

Get overall compliance status for a company

Authorizations:
None
path Parameters
companyId
required
string

Company ID

Responses

Notifications - Queue

Notification queue and delivery

Send a notification

Authorizations:
None
Request Body schema: application/json
required
template_id
required
string
recipient_id
required
string
variables
required
object
priority
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
scheduled_at
string
metadata
object

Responses

Request samples

Content type
application/json
{
  • "template_id": "uuid-of-template",
  • "recipient_id": "uuid-of-recipient",
  • "variables": {
    },
  • "priority": "HIGH",
  • "scheduled_at": "2024-12-25T10:00:00Z",
  • "metadata": {
    }
}

Send notifications to multiple recipients

Authorizations:
None
Request Body schema: application/json
required
template_id
required
string
recipient_ids
required
Array of strings
variables
required
object
priority
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
scheduled_at
string

Responses

Request samples

Content type
application/json
{
  • "template_id": "uuid-of-template",
  • "recipient_ids": [
    ],
  • "variables": {
    },
  • "priority": "MEDIUM",
  • "scheduled_at": "2024-12-25T10:00:00Z"
}

Get all notifications in queue

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

status
string
Enum: "PENDING" "SENT" "FAILED" "DELIVERED" "READ"
Example: status=PENDING
channel
string
Enum: "EMAIL" "IN_APP" "SMS" "SLACK"
Example: channel=EMAIL
priority
string
Enum: "LOW" "MEDIUM" "HIGH" "CRITICAL"
Example: priority=HIGH
recipient_id
string
Example: recipient_id=uuid-of-recipient
created_from
string
Example: created_from=2024-01-01
created_to
string
Example: created_to=2024-12-31
search
string
Example: search=search term

Responses

Get notification statistics

Authorizations:
None

Responses

Get notifications for a specific recipient

Authorizations:
None
path Parameters
recipientId
required
string

Responses

Get a notification by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Cancel a pending notification

Authorizations:
None
path Parameters
id
required
string

Responses

Retry a failed notification

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
max_retries
number
retry_delay
number

Responses

Request samples

Content type
application/json
{
  • "max_retries": 3,
  • "retry_delay": 5000
}

Notifications - Templates

Notification templates and settings

Create a new notification template

Authorizations:
None
Request Body schema: application/json
required
template_name
required
string
template_type
required
string
channel
required
string
Enum: "EMAIL" "IN_APP" "SMS" "SLACK"
subject_template
string
body_template
required
string
variables
Array of strings
conditions
object
is_active
boolean

Responses

Request samples

Content type
application/json
{
  • "template_name": "performance_review_reminder",
  • "template_type": "PERFORMANCE_REVIEW",
  • "channel": "EMAIL",
  • "subject_template": "Performance Review Due: {{employeeName}}",
  • "body_template": "Dear {{managerName}}, Performance review for {{employeeName}} is due on {{dueDate}}.",
  • "variables": [
    ],
  • "conditions": {
    },
  • "is_active": true
}

Get all notification templates

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

template_type
string
Example: template_type=PERFORMANCE_REVIEW
channel
string
Enum: "EMAIL" "IN_APP" "SMS" "SLACK"
Example: channel=EMAIL
is_active
boolean
Example: is_active=true
search
string
Example: search=review

Responses

Get active templates by type

Authorizations:
None
path Parameters
type
required
string

Responses

Get template by name

Authorizations:
None
path Parameters
name
required
string

Responses

Get a notification template by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Update a notification template

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
template_name
string
template_type
string
channel
string
Enum: "EMAIL" "IN_APP" "SMS" "SLACK"
subject_template
string
body_template
string
variables
Array of strings
conditions
object
is_active
boolean

Responses

Request samples

Content type
application/json
{
  • "template_name": "updated_template_name",
  • "template_type": "UPDATED_TYPE",
  • "channel": "SMS",
  • "subject_template": "Updated Subject",
  • "body_template": "Updated body template",
  • "variables": [
    ],
  • "conditions": {
    },
  • "is_active": false
}

Delete a notification template

Authorizations:
None
path Parameters
id
required
string

Responses

Duplicate a notification template

Authorizations:
None
path Parameters
id
required
string

Responses

Preview rendered template with variables

Authorizations:
None
path Parameters
id
required
string

Responses

Admin - Configuration

System configuration and settings

(Admin) Get all rate groups

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

category
string
Enum: "NMW" "SSP" "SMP" "SPP" "ShPP" "SPBP" "TAX_BAND" "NI_THRESHOLD" "NI_RATE" "PENSION_AE" "LEVY" "HOLIDAY_DAYS" "WORKING_TIME_MAX"

Rate category filter

jurisdiction
string
Enum: "UK" "ENGLAND" "WALES" "SCOTLAND" "N_IRELAND"

Jurisdiction filter

search
string
Example: search=NMW

Search term

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create rate group

Authorizations:
None
Request Body schema: application/json
required
code
required
string

Unique code for the rate group

title
required
string

Display title for the rate group

category
required
string
Enum: "NMW" "SSP" "SMP" "SPP" "ShPP" "SPBP" "TAX_BAND" "NI_THRESHOLD" "NI_RATE" "PENSION_AE" "LEVY" "HOLIDAY_DAYS" "WORKING_TIME_MAX"

Category of the rate

description
string

Description of the rate group

unit
required
string
Enum: "HOURLY" "WEEKLY" "MONTHLY" "YEARLY" "PERCENT" "CURRENCY" "DAYS" "HOURS"

Unit of measurement for the rate

jurisdiction
required
string
Default: "UK"
Enum: "UK" "ENGLAND" "WALES" "SCOTLAND" "N_IRELAND"

Jurisdiction the rate applies to

Responses

Request samples

Content type
application/json
{
  • "code": "NMW_25_26",
  • "title": "National Minimum Wage 2025-2026",
  • "category": "NMW",
  • "description": "UK National Minimum Wage rates for 2025-2026 tax year",
  • "unit": "HOURLY",
  • "jurisdiction": "UK"
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "NMW_25_26",
  • "title": "National Minimum Wage 2025-2026",
  • "category": "NMW",
  • "description": "UK National Minimum Wage rates for 2025-2026 tax year",
  • "unit": "HOURLY",
  • "jurisdiction": "UK",
  • "created_at": "2025-01-01T00:00:00.000Z",
  • "updated_at": "2025-01-01T00:00:00.000Z"
}

(Admin) Get rate group by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "NMW_25_26",
  • "title": "National Minimum Wage 2025-2026",
  • "category": "NMW",
  • "description": "UK National Minimum Wage rates for 2025-2026 tax year",
  • "unit": "HOURLY",
  • "jurisdiction": "UK",
  • "created_at": "2025-01-01T00:00:00.000Z",
  • "updated_at": "2025-01-01T00:00:00.000Z"
}

(Admin) Update rate group

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
title
string

Display title for the rate group

category
string
Enum: "NMW" "SSP" "SMP" "SPP" "ShPP" "SPBP" "TAX_BAND" "NI_THRESHOLD" "NI_RATE" "PENSION_AE" "LEVY" "HOLIDAY_DAYS" "WORKING_TIME_MAX"

Category of the rate

description
string

Description of the rate group

unit
required
string
Enum: "HOURLY" "WEEKLY" "MONTHLY" "YEARLY" "PERCENT" "CURRENCY" "DAYS" "HOURS"

Unit of measurement for the rate

jurisdiction
string
Enum: "UK" "ENGLAND" "WALES" "SCOTLAND" "N_IRELAND"

Jurisdiction the rate applies to

Responses

Request samples

Content type
application/json
{
  • "title": "National Minimum Wage 2025-2026",
  • "category": "NMW",
  • "description": "UK National Minimum Wage rates for 2025-2026 tax year",
  • "unit": "HOURLY",
  • "jurisdiction": "UK"
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "NMW_25_26",
  • "title": "National Minimum Wage 2025-2026",
  • "category": "NMW",
  • "description": "UK National Minimum Wage rates for 2025-2026 tax year",
  • "unit": "HOURLY",
  • "jurisdiction": "UK",
  • "created_at": "2025-01-01T00:00:00.000Z",
  • "updated_at": "2025-01-01T00:00:00.000Z"
}

(Admin) Delete rate group

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Import rate groups from Excel/CSV file

Authorizations:
None
Request Body schema: multipart/form-data
required
duplicateHandling
required
string
Default: "overwrite"
Enum: "overwrite" "skip"

Import option for duplicate records

Responses

(Admin) Export rate groups to Excel/CSV

Authorizations:
None
path Parameters
format
required
string
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

category
string
Enum: "NMW" "SSP" "SMP" "SPP" "ShPP" "SPBP" "TAX_BAND" "NI_THRESHOLD" "NI_RATE" "PENSION_AE" "LEVY" "HOLIDAY_DAYS" "WORKING_TIME_MAX"

Rate category filter

jurisdiction
string
Enum: "UK" "ENGLAND" "WALES" "SCOTLAND" "N_IRELAND"

Jurisdiction filter

search
string
Example: search=NMW

Search term

Responses

(Admin) Download rate group import template

Authorizations:
None
path Parameters
format
required
string

Responses

(Admin) Get all rate entries

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

search
string
Example: search=National Minimum Wage

Search term

groupId
string
Example: groupId=123e4567-e89b-12d3-a456-426614174000

Rate group ID filter

startsAt
string
Example: startsAt=2025-04-01

Effective from date filter (YYYY-MM-DD)

endsAt
string
Example: endsAt=2025-03-31

Effective to date filter (YYYY-MM-DD)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create rate entry

Authorizations:
None
Request Body schema: application/json
required
group_id
required
string

Rate group ID

starts_at
required
string

Effective start date (inclusive)

ends_at
string

Effective end date (null = open-ended)

params
object

Parameters for the rate entry (age band, tax year, etc.)

value_decimal
object

Decimal value for the rate

value_text
string

Text value for complex rates

notes
string

Additional notes

citation
required
string

Legal citation

url
required
string

Reference URL

Responses

Request samples

Content type
application/json
{
  • "group_id": "123e4567-e89b-12d3-a456-426614174000",
  • "starts_at": "2025-04-01T00:00:00.000Z",
  • "ends_at": "2026-03-31T23:59:59.999Z",
  • "params": {
    },
  • "value_decimal": "11.44",
  • "value_text": "90% of AWE",
  • "notes": "Rate for apprentices under 19 or in first year",
  • "citation": "NMW Act 1998 – s.1",
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "group_id": "123e4567-e89b-12d3-a456-426614174000",
  • "starts_at": "2025-04-01T00:00:00.000Z",
  • "ends_at": "2026-03-31T23:59:59.999Z",
  • "params": {
    },
  • "value_decimal": "11.44",
  • "value_text": "90% of AWE",
  • "notes": { },
  • "citation": "NMW Act 1998 – s.1",
  • "created_at": "2025-01-01T00:00:00.000Z"
}

(Admin) Get rate entry by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "group_id": "123e4567-e89b-12d3-a456-426614174000",
  • "starts_at": "2025-04-01T00:00:00.000Z",
  • "ends_at": "2026-03-31T23:59:59.999Z",
  • "params": {
    },
  • "value_decimal": "11.44",
  • "value_text": "90% of AWE",
  • "notes": { },
  • "citation": "NMW Act 1998 – s.1",
  • "created_at": "2025-01-01T00:00:00.000Z"
}

(Admin) Update rate entry

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
ends_at
string

Effective end date (null = open-ended)

params
object

Parameters for the rate entry (age band, tax year, etc.)

value_decimal
object

Decimal value for the rate

value_text
string

Text value for complex rates

notes
string

Additional notes

citation
string

Legal citation

url
string

Reference URL

Responses

Request samples

Content type
application/json
{
  • "ends_at": "2026-03-31T23:59:59.999Z",
  • "params": {
    },
  • "value_decimal": "11.44",
  • "value_text": "90% of AWE",
  • "notes": "Rate for apprentices under 19 or in first year",
  • "citation": "NMW Act 1998 – s.1",
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "group_id": "123e4567-e89b-12d3-a456-426614174000",
  • "starts_at": "2025-04-01T00:00:00.000Z",
  • "ends_at": "2026-03-31T23:59:59.999Z",
  • "params": {
    },
  • "value_decimal": "11.44",
  • "value_text": "90% of AWE",
  • "notes": { },
  • "citation": "NMW Act 1998 – s.1",
  • "created_at": "2025-01-01T00:00:00.000Z"
}

(Admin) Delete rate entry

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Import rate entries from Excel/CSV file

Authorizations:
None
Request Body schema: multipart/form-data
required
duplicateHandling
required
string
Default: "overwrite"
Enum: "overwrite" "skip"

Import option for duplicate records

Responses

(Admin) Export rate entries to Excel/CSV

Authorizations:
None
path Parameters
format
required
string
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

search
string
Example: search=National Minimum Wage

Search term

groupId
string
Example: groupId=123e4567-e89b-12d3-a456-426614174000

Rate group ID filter

startsAt
string
Example: startsAt=2025-04-01

Effective from date filter (YYYY-MM-DD)

endsAt
string
Example: endsAt=2025-03-31

Effective to date filter (YYYY-MM-DD)

Responses

(Admin) Download rate entry import template

Authorizations:
None
path Parameters
format
required
string

Responses

(Admin) Get all public holidays

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

search
string
Example: search=National Minimum Wage

Search term

region
string
Example: region=England & Wales

Region filter

year
number
Example: year=2025

Year filter

date
string
Example: date=2025-12-25

Date filter (YYYY-MM-DD)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create public holiday

Authorizations:
None
Request Body schema: application/json
required
region
required
string

Region the holiday applies to

date
required
string

Calendar date of the public holiday

name
required
string

Official holiday name

description
string

Additional description of the holiday

year
required
number

Year of the holiday

Responses

Request samples

Content type
application/json
{
  • "region": "England & Wales",
  • "date": "2025-12-25",
  • "name": "Christmas Day",
  • "description": "Christmas Day is a public holiday celebrating the birth of Jesus Christ",
  • "year": 2025
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "region": "England & Wales",
  • "date": "2025-12-25T00:00:00.000Z",
  • "name": "Christmas Day",
  • "description": "Christmas Day is a public holiday celebrating the birth of Jesus Christ",
  • "year": 2025
}

(Admin) Get public holiday by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "region": "England & Wales",
  • "date": "2025-12-25T00:00:00.000Z",
  • "name": "Christmas Day",
  • "description": "Christmas Day is a public holiday celebrating the birth of Jesus Christ",
  • "year": 2025
}

(Admin) Update public holiday

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
region
string

Region the holiday applies to

date
string

Calendar date of the public holiday

name
string

Official holiday name

description
string

Additional description of the holiday

year
number

Year of the holiday

Responses

Request samples

Content type
application/json
{
  • "region": "England & Wales",
  • "date": "2025-12-25",
  • "name": "Christmas Day",
  • "description": "Christmas Day is a public holiday celebrating the birth of Jesus Christ",
  • "year": 2025
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "region": "England & Wales",
  • "date": "2025-12-25T00:00:00.000Z",
  • "name": "Christmas Day",
  • "description": "Christmas Day is a public holiday celebrating the birth of Jesus Christ",
  • "year": 2025
}

(Admin) Delete public holiday

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Import public holidays from Excel/CSV file

Authorizations:
None
Request Body schema: multipart/form-data
required
duplicateHandling
required
string
Default: "overwrite"
Enum: "overwrite" "skip"

Import option for duplicate records

Responses

(Admin) Export public holidays to Excel/CSV

Authorizations:
None
path Parameters
format
required
string
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

search
string
Example: search=National Minimum Wage

Search term

region
string
Example: region=England & Wales

Region filter

year
number
Example: year=2025

Year filter

date
string
Example: date=2025-12-25

Date filter (YYYY-MM-DD)

Responses

(Admin) Download public holiday import template

Authorizations:
None
path Parameters
format
required
string

Responses

(Admin) Get all statutory working hour rules

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

search
string
Example: search=National Minimum Wage

Search term

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create statutory working hour rule

Authorizations:
None
Request Body schema: application/json
required
name
required
string

Name of the working hour rule

max_avg_weekly_hours
required
number

Maximum average weekly hours allowed

averaging_period_weeks
required
number

Number of weeks over which the average is calculated

min_daily_rest_hours
required
number

Minimum uninterrupted rest between shifts (hours)

min_weekly_rest_hours
required
number

Minimum uninterrupted rest each week (hours)

min_break_minutes_per_shift
required
number

Minimum break during a shift (>6 h) in minutes

legal_source
required
string

Source or legal citation (for audit trail)

Responses

Request samples

Content type
application/json
{
  • "name": "UK Working Time Regulations 1998",
  • "max_avg_weekly_hours": 48,
  • "averaging_period_weeks": 17,
  • "min_daily_rest_hours": 11,
  • "min_weekly_rest_hours": 24,
  • "min_break_minutes_per_shift": 20,
  • "legal_source": "The Working Time Regulations 1998 (SI 1998/1833)"
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "name": "UK Working Time Regulations 1998",
  • "max_avg_weekly_hours": 48,
  • "averaging_period_weeks": 17,
  • "min_daily_rest_hours": 11,
  • "min_weekly_rest_hours": 24,
  • "min_break_minutes_per_shift": 20,
  • "legal_source": "The Working Time Regulations 1998 (SI 1998/1833)",
  • "updated_at": "2025-01-01T00:00:00.000Z"
}

(Admin) Get statutory working hour rule by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "name": "UK Working Time Regulations 1998",
  • "max_avg_weekly_hours": 48,
  • "averaging_period_weeks": 17,
  • "min_daily_rest_hours": 11,
  • "min_weekly_rest_hours": 24,
  • "min_break_minutes_per_shift": 20,
  • "legal_source": "The Working Time Regulations 1998 (SI 1998/1833)",
  • "updated_at": "2025-01-01T00:00:00.000Z"
}

(Admin) Update statutory working hour rule

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string

Name of the working hour rule

max_avg_weekly_hours
number

Maximum average weekly hours allowed

averaging_period_weeks
number

Number of weeks over which the average is calculated

min_daily_rest_hours
number

Minimum uninterrupted rest between shifts (hours)

min_weekly_rest_hours
number

Minimum uninterrupted rest each week (hours)

min_break_minutes_per_shift
number

Minimum break during a shift (>6 h) in minutes

legal_source
string

Source or legal citation (for audit trail)

Responses

Request samples

Content type
application/json
{
  • "name": "UK Working Time Regulations 1998",
  • "max_avg_weekly_hours": 48,
  • "averaging_period_weeks": 17,
  • "min_daily_rest_hours": 11,
  • "min_weekly_rest_hours": 24,
  • "min_break_minutes_per_shift": 20,
  • "legal_source": "The Working Time Regulations 1998 (SI 1998/1833)"
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "name": "UK Working Time Regulations 1998",
  • "max_avg_weekly_hours": 48,
  • "averaging_period_weeks": 17,
  • "min_daily_rest_hours": 11,
  • "min_weekly_rest_hours": 24,
  • "min_break_minutes_per_shift": 20,
  • "legal_source": "The Working Time Regulations 1998 (SI 1998/1833)",
  • "updated_at": "2025-01-01T00:00:00.000Z"
}

(Admin) Delete statutory working hour rule

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Import statutory working hour rules from Excel/CSV file

Authorizations:
None
Request Body schema: multipart/form-data
required
duplicateHandling
required
string
Default: "overwrite"
Enum: "overwrite" "skip"

Import option for duplicate records

Responses

(Admin) Export statutory working hour rules to Excel/CSV

Authorizations:
None
path Parameters
format
required
string
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

search
string
Example: search=National Minimum Wage

Search term

Responses

(Admin) Download statutory working hour rule import template

Authorizations:
None
path Parameters
format
required
string

Responses

(Admin) Get all statutory pay rates

Authorizations:
None
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

search
string
Example: search=National Minimum Wage

Search term

code
string
Example: code=OVERTIME_1_5X

Code filter

effective_from
string
Example: effective_from=2025-04-01

Effective from date filter (YYYY-MM-DD)

effective_to
string
Example: effective_to=2025-03-31

Effective to date filter (YYYY-MM-DD)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create statutory pay rate

Authorizations:
None
Request Body schema: application/json
required
code
required
string

Code matching HR_RATE.code

name
required
string

Descriptive label for the pay rate

rate_multiplier
required
string

Multiplier applied to basic hourly rate

effective_from
required
string

Valid-from date

effective_to
string

Valid-to date (null = open-ended)

legal_source
string

Legal source or citation

Responses

Request samples

Content type
application/json
{
  • "code": "OVERTIME_1_5X",
  • "name": "Overtime 1.5x",
  • "rate_multiplier": "1.50",
  • "effective_from": "2025-04-01",
  • "effective_to": "2026-03-31",
  • "legal_source": "Working Time Regulations 1998"
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "OVERTIME_1_5X",
  • "name": "Overtime 1.5x",
  • "rate_multiplier": "1.50",
  • "effective_from": "2025-04-01T00:00:00.000Z",
  • "effective_to": "2026-03-31T00:00:00.000Z",
  • "legal_source": "Working Time Regulations 1998"
}

(Admin) Get statutory pay rate by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "OVERTIME_1_5X",
  • "name": "Overtime 1.5x",
  • "rate_multiplier": "1.50",
  • "effective_from": "2025-04-01T00:00:00.000Z",
  • "effective_to": "2026-03-31T00:00:00.000Z",
  • "legal_source": "Working Time Regulations 1998"
}

(Admin) Update statutory pay rate

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string

Descriptive label for the pay rate

rate_multiplier
string

Multiplier applied to basic hourly rate

effective_from
string

Valid-from date

effective_to
string

Valid-to date (null = open-ended)

legal_source
string

Legal source or citation

Responses

Request samples

Content type
application/json
{
  • "name": "Overtime 1.5x",
  • "rate_multiplier": "1.50",
  • "effective_from": "2025-04-01",
  • "effective_to": "2026-03-31",
  • "legal_source": "Working Time Regulations 1998"
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "OVERTIME_1_5X",
  • "name": "Overtime 1.5x",
  • "rate_multiplier": "1.50",
  • "effective_from": "2025-04-01T00:00:00.000Z",
  • "effective_to": "2026-03-31T00:00:00.000Z",
  • "legal_source": "Working Time Regulations 1998"
}

(Admin) Delete statutory pay rate

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Import statutory pay rates from Excel/CSV file

Authorizations:
None
Request Body schema: multipart/form-data
required
duplicateHandling
required
string
Default: "overwrite"
Enum: "overwrite" "skip"

Import option for duplicate records

Responses

(Admin) Export statutory pay rates to Excel/CSV

Authorizations:
None
path Parameters
format
required
string
query Parameters
page
number
Default: 1
Example: page=1

Page number

limit
number
Default: 20
Example: limit=20

Items per page

search
string
Example: search=National Minimum Wage

Search term

code
string
Example: code=OVERTIME_1_5X

Code filter

effective_from
string
Example: effective_from=2025-04-01

Effective from date filter (YYYY-MM-DD)

effective_to
string
Example: effective_to=2025-03-31

Effective to date filter (YYYY-MM-DD)

Responses

(Admin) Download statutory pay rate import template

Authorizations:
None
path Parameters
format
required
string

Responses

(Admin) Get all leave type templates

Authorizations:
None
query Parameters
code
string
Example: code=ANNUAL

Filter by code (partial match)

name
string
Example: name=Leave

Filter by name (partial match)

statutory
boolean
Example: statutory=true

Filter by statutory status

paid
boolean
Example: paid=true

Filter by paid status

jurisdiction
string
Example: jurisdiction=England

Filter by jurisdiction

is_active
boolean
Example: is_active=true

Filter by active status

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create leave type template

Authorizations:
None
Request Body schema: application/json
required
code
required
string

Short code for the leave type (e.g. "ANNUAL", "SICK")

name
required
string

Human-readable name

statutory
boolean
Default: false

Whether the leave is statutory under UK law

max_days_per_year
number

Maximum entitlement in days per leave year

accrual_based
boolean
Default: false

Whether entitlement accrues over time

paid
boolean
Default: true

Whether the leave is normally paid

hr_rate_code
string

Reference into HR_RATE table for pay calculation

description
string

Description of the leave type

jurisdictions
Array of strings
Default: ["UK"]

Which jurisdictions this applies to

version
string
Default: "1.0.0"

Version tracking for regulatory updates

last_review_date
string

When this template was last reviewed for compliance

is_active
boolean
Default: true

Whether the template is active

Responses

Request samples

Content type
application/json
{
  • "code": "ANNUAL",
  • "name": "Annual Leave",
  • "statutory": false,
  • "max_days_per_year": 28,
  • "accrual_based": false,
  • "paid": true,
  • "hr_rate_code": "STATUTORY_SICK_PAY",
  • "description": "Standard annual leave entitlement for UK employees",
  • "jurisdictions": [
    ],
  • "version": "1.0.0",
  • "last_review_date": "2024-01-01",
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "ANNUAL",
  • "name": "Annual Leave",
  • "statutory": true,
  • "max_days_per_year": 28,
  • "accrual_based": true,
  • "paid": true,
  • "hr_rate_code": "STATUTORY_SICK_PAY",
  • "description": { },
  • "jurisdictions": [
    ],
  • "version": "1.0.0",
  • "last_review_date": "2024-01-01T00:00:00.000Z",
  • "is_active": true,
  • "created_at": "2024-01-01T00:00:00.000Z",
  • "updated_at": "2024-01-01T00:00:00.000Z",
  • "tenant_usage_count": 10
}

(Admin) Get leave type template by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "ANNUAL",
  • "name": "Annual Leave",
  • "statutory": true,
  • "max_days_per_year": 28,
  • "accrual_based": true,
  • "paid": true,
  • "hr_rate_code": "STATUTORY_SICK_PAY",
  • "description": { },
  • "jurisdictions": [
    ],
  • "version": "1.0.0",
  • "last_review_date": "2024-01-01T00:00:00.000Z",
  • "is_active": true,
  • "created_at": "2024-01-01T00:00:00.000Z",
  • "updated_at": "2024-01-01T00:00:00.000Z",
  • "tenant_usage_count": 10
}

(Admin) Update leave type template

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
name
string

Human-readable name

statutory
boolean

Whether the leave is statutory under UK law

max_days_per_year
number

Maximum entitlement in days per leave year

accrual_based
boolean

Whether entitlement accrues over time

paid
boolean

Whether the leave is normally paid

hr_rate_code
string

Reference into HR_RATE table for pay calculation

description
string

Description of the leave type

jurisdictions
Array of strings

Which jurisdictions this applies to

version
string

Version tracking for regulatory updates

last_review_date
string

When this template was last reviewed for compliance

is_active
boolean

Whether the template is active

Responses

Request samples

Content type
application/json
{
  • "name": "Annual Leave",
  • "statutory": true,
  • "max_days_per_year": 28,
  • "accrual_based": true,
  • "paid": true,
  • "hr_rate_code": "STATUTORY_SICK_PAY",
  • "description": "string",
  • "jurisdictions": [
    ],
  • "version": "1.0.1",
  • "last_review_date": "2024-01-01",
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "code": "ANNUAL",
  • "name": "Annual Leave",
  • "statutory": true,
  • "max_days_per_year": 28,
  • "accrual_based": true,
  • "paid": true,
  • "hr_rate_code": "STATUTORY_SICK_PAY",
  • "description": { },
  • "jurisdictions": [
    ],
  • "version": "1.0.0",
  • "last_review_date": "2024-01-01T00:00:00.000Z",
  • "is_active": true,
  • "created_at": "2024-01-01T00:00:00.000Z",
  • "updated_at": "2024-01-01T00:00:00.000Z",
  • "tenant_usage_count": 10
}

(Admin) Delete leave type template

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Import leave type templates from Excel/CSV file

Authorizations:
None
Request Body schema: multipart/form-data
required
update_existing
boolean
Default: false

Whether to update existing templates with the same code

skip_invalid
boolean
Default: true

Whether to skip invalid rows and continue importing

Responses

(Admin) Export leave type templates to Excel/CSV

Authorizations:
None
path Parameters
format
required
string
query Parameters
code
string
Example: code=ANNUAL

Filter by code (partial match)

name
string
Example: name=Leave

Filter by name (partial match)

statutory
boolean
Example: statutory=true

Filter by statutory status

paid
boolean
Example: paid=true

Filter by paid status

jurisdiction
string
Example: jurisdiction=England

Filter by jurisdiction

is_active
boolean
Example: is_active=true

Filter by active status

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

(Admin) Download leave type template import template

Authorizations:
None
path Parameters
format
required
string

Responses

(Admin) Deploy leave type template to specified tenants

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
tenant_ids
required
Array of strings

List of tenant IDs to deploy the template to

overwrite
boolean
Default: false

Whether to overwrite existing leave types with the same code

activate
boolean
Default: true

Whether to make the deployed leave type active immediately

Responses

Request samples

Content type
application/json
{
  • "tenant_ids": [
    ],
  • "overwrite": false,
  • "activate": true
}

(Admin) Get usage statistics for leave type template

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Get all learning content templates

Authorizations:
None
query Parameters
code
string

Filter by code

title
string

Filter by title

content_type
string
Enum: "VIDEO" "DOCUMENT" "PRESENTATION" "INTERACTIVE" "ASSESSMENT" "WEBINAR" "COURSE"

Filter by content type

category
string

Filter by category

learning_level
string
Enum: "BEGINNER" "INTERMEDIATE" "ADVANCED" "EXPERT"

Filter by learning level

compliance_requirement
boolean

Filter by compliance requirement

is_active
boolean

Filter by active status

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create learning content template

Authorizations:
None
Request Body schema: application/json
required
code
required
string

Unique code for the learning content

title_en
required
string

Title in English

description_en
string

Description in English

content_type
required
string
Enum: "VIDEO" "DOCUMENT" "PRESENTATION" "INTERACTIVE" "ASSESSMENT" "WEBINAR" "COURSE"

Type of learning content

category
required
string

Category of the content

learning_level
string
Default: "BEGINNER"
Enum: "BEGINNER" "INTERMEDIATE" "ADVANCED" "EXPERT"

Learning level

target_audience
required
Array of strings

Target audience roles

estimated_duration_minutes
number
Default: 30

Estimated duration in minutes

primary_file_path
string

Path to primary file

learning_objectives
Array of strings
Default: []

Learning objectives

has_assessment
boolean
Default: false

Whether content has assessment

certification_available
boolean
Default: false

Whether certification is available

mandatory_for_roles
required
Array of strings

Roles for which this is mandatory

compliance_requirement
boolean
Default: false

Whether this is a compliance requirement

version
string
Default: "1.0.0"

Version of the content

last_review_date
string

Last review date

is_active
boolean
Default: true

Whether the template is active

Responses

Request samples

Content type
application/json
{
  • "code": "UK_GDPR_BASICS",
  • "title_en": "UK GDPR Basics",
  • "description_en": "Introduction to UK GDPR compliance requirements",
  • "content_type": "VIDEO",
  • "category": "Compliance",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 45,
  • "primary_file_path": "/content/uk-gdpr-basics.mp4",
  • "learning_objectives": [
    ],
  • "has_assessment": false,
  • "certification_available": false,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": false,
  • "version": "1.0.0",
  • "last_review_date": "2024-01-01",
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "string",
  • "title_en": "string",
  • "description_en": { },
  • "content_type": "VIDEO",
  • "category": "string",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 0,
  • "primary_file_path": { },
  • "learning_objectives": [
    ],
  • "has_assessment": true,
  • "certification_available": true,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": true,
  • "version": "string",
  • "last_review_date": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "tenant_usage_count": 0
}

(Admin) Get learning content template by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "string",
  • "title_en": "string",
  • "description_en": { },
  • "content_type": "VIDEO",
  • "category": "string",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 0,
  • "primary_file_path": { },
  • "learning_objectives": [
    ],
  • "has_assessment": true,
  • "certification_available": true,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": true,
  • "version": "string",
  • "last_review_date": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "tenant_usage_count": 0
}

(Admin) Update learning content template

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
title_en
string

Title in English

description_en
string

Description in English

content_type
string
Enum: "VIDEO" "DOCUMENT" "PRESENTATION" "INTERACTIVE" "ASSESSMENT" "WEBINAR" "COURSE"

Type of learning content

category
string

Category of the content

learning_level
string
Enum: "BEGINNER" "INTERMEDIATE" "ADVANCED" "EXPERT"

Learning level

target_audience
Array of strings

Target audience roles

estimated_duration_minutes
number

Estimated duration in minutes

primary_file_path
string

Path to primary file

learning_objectives
Array of strings

Learning objectives

has_assessment
boolean

Whether content has assessment

certification_available
boolean

Whether certification is available

mandatory_for_roles
Array of strings

Roles for which this is mandatory

compliance_requirement
boolean

Whether this is a compliance requirement

version
string

Version of the content

last_review_date
string

Last review date

is_active
boolean

Whether the template is active

Responses

Request samples

Content type
application/json
{
  • "title_en": "UK GDPR Basics",
  • "description_en": "string",
  • "content_type": "VIDEO",
  • "category": "Compliance",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 0,
  • "primary_file_path": "string",
  • "learning_objectives": [
    ],
  • "has_assessment": true,
  • "certification_available": true,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": true,
  • "version": "string",
  • "last_review_date": "string",
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "string",
  • "title_en": "string",
  • "description_en": { },
  • "content_type": "VIDEO",
  • "category": "string",
  • "learning_level": "BEGINNER",
  • "target_audience": [
    ],
  • "estimated_duration_minutes": 0,
  • "primary_file_path": { },
  • "learning_objectives": [
    ],
  • "has_assessment": true,
  • "certification_available": true,
  • "mandatory_for_roles": [
    ],
  • "compliance_requirement": true,
  • "version": "string",
  • "last_review_date": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "tenant_usage_count": 0
}

(Admin) Delete learning content template

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Get all learning path templates

Authorizations:
None
query Parameters
code
string

Filter by code

title
string

Filter by title

path_type
string

Filter by path type

mandatory
boolean

Filter by mandatory status

certification_available
boolean

Filter by certification availability

is_active
boolean

Filter by active status

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create learning path template

Authorizations:
None
Request Body schema: application/json
required
code
required
string

Unique code for the learning path

title_en
required
string

Title in English

description_en
string

Description in English

path_type
required
string

Type of learning path

target_audience
required
Array of strings

Target audience roles

estimated_duration_hours
required
number

Estimated duration in hours

certification_available
boolean
Default: false

Whether certification is available upon completion

mandatory
boolean
Default: false

Whether this path is mandatory

modules
object
Default: []

Learning modules in the path

version
string
Default: "1.0.0"

Version of the path

last_review_date
string

Last review date

is_active
boolean
Default: true

Whether the template is active

Responses

Request samples

Content type
application/json
{
  • "code": "UK_HR_ONBOARDING",
  • "title_en": "UK HR Onboarding Path",
  • "description_en": "Complete onboarding path for new HR employees in UK",
  • "path_type": "ONBOARDING",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 8,
  • "certification_available": false,
  • "mandatory": false,
  • "modules": [
    ],
  • "version": "1.0.0",
  • "last_review_date": "2024-01-01",
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "string",
  • "title_en": "string",
  • "description_en": { },
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": true,
  • "mandatory": true,
  • "modules": { },
  • "version": "string",
  • "last_review_date": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "tenant_usage_count": 0
}

(Admin) Get learning path template by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "string",
  • "title_en": "string",
  • "description_en": { },
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": true,
  • "mandatory": true,
  • "modules": { },
  • "version": "string",
  • "last_review_date": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "tenant_usage_count": 0
}

(Admin) Update learning path template

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
title_en
string

Title in English

description_en
string

Description in English

path_type
string

Type of learning path

target_audience
Array of strings

Target audience roles

estimated_duration_hours
number

Estimated duration in hours

certification_available
boolean

Whether certification is available upon completion

mandatory
boolean

Whether this path is mandatory

modules
object

Learning modules in the path

version
string

Version of the path

last_review_date
string

Last review date

is_active
boolean

Whether the template is active

Responses

Request samples

Content type
application/json
{
  • "title_en": "string",
  • "description_en": "string",
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": true,
  • "mandatory": true,
  • "modules": { },
  • "version": "string",
  • "last_review_date": "string",
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "string",
  • "title_en": "string",
  • "description_en": { },
  • "path_type": "string",
  • "target_audience": [
    ],
  • "estimated_duration_hours": 0,
  • "certification_available": true,
  • "mandatory": true,
  • "modules": { },
  • "version": "string",
  • "last_review_date": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "tenant_usage_count": 0
}

(Admin) Delete learning path template

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Get all compliance check templates

Authorizations:
None
query Parameters
template_code
string

Filter by template code

template_name
string

Filter by template name

is_system_template
boolean

Filter by system template status

is_active
boolean

Filter by active status

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create compliance check template

Authorizations:
None
Request Body schema: application/json
required
template_code
required
string <= 100 characters

Unique template code

template_name
required
string <= 200 characters

Template name

inspection_type_ids
required
Array of strings

Applicable inspection type IDs

checklist_items
required
object

Checklist items configuration

evidence_requirements
required
object

Evidence requirements configuration

automation_rules
object

Automation processing rules

quality_checks
object

Quality check rules

output_templates
object

Output document templates

version
string <= 20 characters
Default: "1.0.0"

Version of the template

is_active
boolean
Default: true

Whether the template is active

is_system_template
boolean
Default: false

Whether this is a system template

Responses

Request samples

Content type
application/json
{
  • "template_code": "UK_FIRE_SAFETY_CHECK",
  • "template_name": "UK Fire Safety Compliance Check",
  • "inspection_type_ids": [
    ],
  • "checklist_items": [
    ],
  • "evidence_requirements": [
    ],
  • "automation_rules": {
    },
  • "quality_checks": {
    },
  • "output_templates": {
    },
  • "version": "1.0.0",
  • "is_active": true,
  • "is_system_template": false
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "template_code": "string",
  • "template_name": "string",
  • "inspection_type_ids": [
    ],
  • "checklist_items": { },
  • "evidence_requirements": { },
  • "automation_rules": { },
  • "quality_checks": { },
  • "output_templates": { },
  • "version": "string",
  • "is_active": true,
  • "is_system_template": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by": { }
}

(Admin) Get compliance check template by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "template_code": "string",
  • "template_name": "string",
  • "inspection_type_ids": [
    ],
  • "checklist_items": { },
  • "evidence_requirements": { },
  • "automation_rules": { },
  • "quality_checks": { },
  • "output_templates": { },
  • "version": "string",
  • "is_active": true,
  • "is_system_template": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by": { }
}

(Admin) Update compliance check template

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
template_name
string <= 200 characters

Template name

inspection_type_ids
Array of strings

Applicable inspection type IDs

checklist_items
object

Checklist items configuration

evidence_requirements
object

Evidence requirements configuration

automation_rules
object

Automation processing rules

quality_checks
object

Quality check rules

output_templates
object

Output document templates

version
string <= 20 characters

Version of the template

is_active
boolean

Whether the template is active

is_system_template
boolean

Whether this is a system template

Responses

Request samples

Content type
application/json
{
  • "template_name": "string",
  • "inspection_type_ids": [
    ],
  • "checklist_items": { },
  • "evidence_requirements": { },
  • "automation_rules": { },
  • "quality_checks": { },
  • "output_templates": { },
  • "version": "string",
  • "is_active": true,
  • "is_system_template": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "template_code": "string",
  • "template_name": "string",
  • "inspection_type_ids": [
    ],
  • "checklist_items": { },
  • "evidence_requirements": { },
  • "automation_rules": { },
  • "quality_checks": { },
  • "output_templates": { },
  • "version": "string",
  • "is_active": true,
  • "is_system_template": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_by": { }
}

(Admin) Delete compliance check template

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Get comprehensive admin dashboard summary

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "system_health": [
    ],
  • "key_metrics": [
    ],
  • "tenant_statistics": {
    },
  • "template_usage": [
    ],
  • "compliance_overview": {
    },
  • "payroll_statistics": {
    },
  • "generated_at": "2019-08-24T14:15:22Z"
}

(Admin) Get system-wide metrics and analytics

Authorizations:
None
query Parameters
start_date
string
Example: start_date=2024-01-01

Start date for analytics

end_date
string
Example: end_date=2024-12-31

End date for analytics

period
string
Default: "MONTHLY"
Enum: "DAILY" "WEEKLY" "MONTHLY" "QUARTERLY" "YEARLY"

Period for grouping analytics

metric
string

Specific metric to retrieve

Responses

Response samples

Content type
application/json
[
  • {
    }
]

(Admin) Get system health status

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

(Admin) Get cross-tenant statistics

Authorizations:
None
query Parameters
tenant_id
string

Filter by tenant ID

active_only
boolean

Filter by active status

include_details
boolean
Default: false

Include detailed breakdown

page
number
Default: 1

Page number

limit
number
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "total_tenants": 0,
  • "active_tenants": 0,
  • "total_employees": 0,
  • "total_departments": 0,
  • "total_leave_requests": 0,
  • "total_payroll_runs": 0,
  • "avg_employees_per_tenant": 0,
  • "total_storage_gb": 0,
  • "tenant_breakdown": [
    ]
}

(Admin) Get specific tenant usage statistics

Authorizations:
None
path Parameters
tenantId
required
string

Responses

Response samples

Content type
application/json
{
  • "tenant_id": "string",
  • "tenant_name": "string",
  • "employee_count": 0,
  • "active_employees": 0,
  • "department_count": 0,
  • "leave_request_count": 0,
  • "pending_leave_requests": 0,
  • "payroll_run_count": 0,
  • "storage_used_mb": 0,
  • "last_activity": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z"
}

(Admin) Get template usage statistics across tenants

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

(Admin) Get compliance statistics overview

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "total_compliance_checks": 0,
  • "active_checks": 0,
  • "system_checks": 0,
  • "tenant_checks": 0,
  • "avg_compliance_score": 0,
  • "fully_compliant_tenants": 0,
  • "non_compliant_tenants": 0,
  • "common_issues": [
    ]
}

(Admin) Get payroll statistics across all tenants

Authorizations:
None
query Parameters
start_date
string
Example: start_date=2024-01-01

Start date for analytics

end_date
string
Example: end_date=2024-12-31

End date for analytics

period
string
Default: "MONTHLY"
Enum: "DAILY" "WEEKLY" "MONTHLY" "QUARTERLY" "YEARLY"

Period for grouping analytics

metric
string

Specific metric to retrieve

Responses

Response samples

Content type
application/json
{
  • "total_payroll_runs": 0,
  • "successful_runs": 0,
  • "failed_runs": 0,
  • "total_gross_pay": 0,
  • "total_net_pay": 0,
  • "total_tax_deducted": 0,
  • "avg_pay_per_employee": 0,
  • "frequency_breakdown": { }
}

(Admin) Get platform growth metrics

Authorizations:
None
query Parameters
start_date
string
Example: start_date=2024-01-01

Start date for analytics

end_date
string
Example: end_date=2024-12-31

End date for analytics

period
string
Default: "MONTHLY"
Enum: "DAILY" "WEEKLY" "MONTHLY" "QUARTERLY" "YEARLY"

Period for grouping analytics

metric
string

Specific metric to retrieve

Responses

(Admin) Generate custom analytics report

Authorizations:
None

Responses

(Admin) Get all template customization configs

Authorizations:
None
query Parameters
template_id
string

Filter by template ID

template_type
string

Filter by template type

customization_level
string
Enum: "BASIC" "INTERMEDIATE" "ADVANCED" "EXPERT"

Filter by customization level

version_control_enabled
boolean

Filter by version control enabled

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create template customization config

Authorizations:
None
Request Body schema: application/json
required
template_id
required
string

Template ID this configuration is for

template_type
required
string

Type of template

customization_level
string
Default: "BASIC"
Enum: "BASIC" "INTERMEDIATE" "ADVANCED" "EXPERT"

Customization level

supported_customizations
required
Array of strings

List of supported customization types

required
object

Elements that can be customized

object

Constraints on element customization

object

Conditional logic for customizations

object

Validation schema for customizations

object

Preview template for customizations

version_control_enabled
boolean
Default: true

Enable version control for customizations

Responses

Request samples

Content type
application/json
{
  • "template_id": "123e4567-e89b-12d3-a456-426614174000",
  • "template_type": "LeaveTypeTemplate",
  • "customization_level": "BASIC",
  • "supported_customizations": [
    ],
  • "customizable_elements": {
    },
  • "element_constraints": {
    },
  • "conditional_logic": { },
  • "validation_schema": { },
  • "preview_template": { },
  • "version_control_enabled": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "template_id": "string",
  • "template_type": "string",
  • "customization_level": "BASIC",
  • "supported_customizations": [
    ],
  • "customizable_elements": { },
  • "element_constraints": { },
  • "conditional_logic": { },
  • "validation_schema": { },
  • "preview_template": { },
  • "version_control_enabled": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Get template customization config by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "template_id": "string",
  • "template_type": "string",
  • "customization_level": "BASIC",
  • "supported_customizations": [
    ],
  • "customizable_elements": { },
  • "element_constraints": { },
  • "conditional_logic": { },
  • "validation_schema": { },
  • "preview_template": { },
  • "version_control_enabled": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Update template customization config

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
template_type
string

Type of template

customization_level
string
Enum: "BASIC" "INTERMEDIATE" "ADVANCED" "EXPERT"

Customization level

supported_customizations
Array of strings

List of supported customization types

object

Elements that can be customized

object

Constraints on element customization

object

Conditional logic for customizations

object

Validation schema for customizations

object

Preview template for customizations

version_control_enabled
boolean

Enable version control for customizations

Responses

Request samples

Content type
application/json
{
  • "template_type": "string",
  • "customization_level": "BASIC",
  • "supported_customizations": [
    ],
  • "customizable_elements": { },
  • "element_constraints": { },
  • "conditional_logic": { },
  • "validation_schema": { },
  • "preview_template": { },
  • "version_control_enabled": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "template_id": "string",
  • "template_type": "string",
  • "customization_level": "BASIC",
  • "supported_customizations": [
    ],
  • "customizable_elements": { },
  • "element_constraints": { },
  • "conditional_logic": { },
  • "validation_schema": { },
  • "preview_template": { },
  • "version_control_enabled": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Delete template customization config

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Get all compliance inspection types

Authorizations:
None
query Parameters
inspection_code
string

Filter by inspection code

regulator_name
string

Filter by regulator name

risk_level
string

Filter by risk level

is_active
boolean

Filter by active status

search
string

Search in inspection name

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create compliance inspection type

Authorizations:
None
Request Body schema: application/json
required
inspection_code
required
string <= 100 characters

Unique inspection code

inspection_name
required
string <= 200 characters

Inspection name

regulator_name
required
string <= 100 characters

Name of the regulatory body

required
object

Inspection scope definition

required
object

Legal framework and regulations

typical_notice_period_days
number >= 0
Default: 21

Typical notice period in days

standard_response_days
number >= 0
Default: 14

Standard response time in days

object

Response requirements

required_evidence_types
required
Array of strings

Required evidence type IDs

optional_evidence_types
Array of strings
Default: []

Optional evidence type IDs

risk_level
string
Default: "MEDIUM"

Risk level

object

Potential penalties and consequences

is_active
boolean
Default: true

Active status

version
string <= 20 characters
Default: "1.0.0"

Version

Responses

Request samples

Content type
application/json
{
  • "inspection_code": "HSE_ANNUAL_2024",
  • "inspection_name": "Annual Health & Safety Executive Inspection",
  • "regulator_name": "Health and Safety Executive",
  • "scope_definition": {
    },
  • "legal_framework": {
    },
  • "typical_notice_period_days": 21,
  • "standard_response_days": 14,
  • "response_requirements": {
    },
  • "required_evidence_types": [
    ],
  • "optional_evidence_types": [
    ],
  • "risk_level": "HIGH",
  • "potential_penalties": {
    },
  • "is_active": true,
  • "version": "1.0.0"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "inspection_code": "string",
  • "inspection_name": "string",
  • "regulator_name": "string",
  • "scope_definition": { },
  • "legal_framework": { },
  • "typical_notice_period_days": 0,
  • "standard_response_days": 0,
  • "response_requirements": { },
  • "required_evidence_types": [
    ],
  • "optional_evidence_types": [
    ],
  • "risk_level": "string",
  • "potential_penalties": { },
  • "is_active": true,
  • "version": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Get compliance inspection type by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "inspection_code": "string",
  • "inspection_name": "string",
  • "regulator_name": "string",
  • "scope_definition": { },
  • "legal_framework": { },
  • "typical_notice_period_days": 0,
  • "standard_response_days": 0,
  • "response_requirements": { },
  • "required_evidence_types": [
    ],
  • "optional_evidence_types": [
    ],
  • "risk_level": "string",
  • "potential_penalties": { },
  • "is_active": true,
  • "version": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Update compliance inspection type

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
inspection_name
string <= 200 characters

Inspection name

regulator_name
string <= 100 characters

Name of the regulatory body

object

Inspection scope definition

object

Legal framework and regulations

typical_notice_period_days
number >= 0

Typical notice period in days

standard_response_days
number >= 0

Standard response time in days

object

Response requirements

required_evidence_types
Array of strings

Required evidence type IDs

optional_evidence_types
Array of strings

Optional evidence type IDs

risk_level
string

Risk level

object

Potential penalties and consequences

is_active
boolean

Active status

version
string <= 20 characters

Version

Responses

Request samples

Content type
application/json
{
  • "inspection_name": "string",
  • "regulator_name": "string",
  • "scope_definition": { },
  • "legal_framework": { },
  • "typical_notice_period_days": 0,
  • "standard_response_days": 0,
  • "response_requirements": { },
  • "required_evidence_types": [
    ],
  • "optional_evidence_types": [
    ],
  • "risk_level": "string",
  • "potential_penalties": { },
  • "is_active": true,
  • "version": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "inspection_code": "string",
  • "inspection_name": "string",
  • "regulator_name": "string",
  • "scope_definition": { },
  • "legal_framework": { },
  • "typical_notice_period_days": 0,
  • "standard_response_days": 0,
  • "response_requirements": { },
  • "required_evidence_types": [
    ],
  • "optional_evidence_types": [
    ],
  • "risk_level": "string",
  • "potential_penalties": { },
  • "is_active": true,
  • "version": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Delete compliance inspection type

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Get all evidence types

Authorizations:
None
query Parameters
evidence_code
string

Filter by evidence code

evidence_category
string

Filter by evidence category

legal_significance
string
Enum: "CRITICAL" "IMPORTANT" "STANDARD" "LOW"

Filter by legal significance

processing_complexity
string
Enum: "SIMPLE" "MODERATE" "COMPLEX" "VERY_COMPLEX"

Filter by processing complexity

is_active
boolean

Filter by active status

search
string

Search in name and description

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create evidence type

Authorizations:
None
Request Body schema: application/json
required
evidence_code
required
string <= 100 characters

Unique evidence code

evidence_name
required
string <= 200 characters

Evidence name

evidence_category
required
string <= 50 characters

Evidence category

description
string

Description of the evidence type

required
object

Data sources configuration

required
object

Extraction rules

required
object

Output format configuration

legal_significance
string <= 20 characters
Default: "IMPORTANT"
Enum: "CRITICAL" "IMPORTANT" "STANDARD" "LOW"

Legal significance level

retention_period_years
number >= 0
Default: 6

Retention period in years

processing_complexity
string <= 20 characters
Default: "SIMPLE"
Enum: "SIMPLE" "MODERATE" "COMPLEX" "VERY_COMPLEX"

Processing complexity

estimated_generation_time_minutes
number >= 0
Default: 5

Estimated generation time in minutes

is_active
boolean
Default: true

Is active

Responses

Request samples

Content type
application/json
{
  • "evidence_code": "RISK_ASSESSMENT_DOC",
  • "evidence_name": "Risk Assessment Documentation",
  • "evidence_category": "SAFETY",
  • "description": "Comprehensive risk assessment documentation for workplace hazards",
  • "data_sources": {
    },
  • "extraction_rules": {
    },
  • "output_format": {
    },
  • "legal_significance": "CRITICAL",
  • "retention_period_years": 6,
  • "processing_complexity": "SIMPLE",
  • "estimated_generation_time_minutes": 5,
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "evidence_code": "string",
  • "evidence_name": "string",
  • "evidence_category": "string",
  • "description": { },
  • "data_sources": { },
  • "extraction_rules": { },
  • "output_format": { },
  • "legal_significance": "string",
  • "retention_period_years": 0,
  • "processing_complexity": "string",
  • "estimated_generation_time_minutes": 0,
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Get evidence type by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "evidence_code": "string",
  • "evidence_name": "string",
  • "evidence_category": "string",
  • "description": { },
  • "data_sources": { },
  • "extraction_rules": { },
  • "output_format": { },
  • "legal_significance": "string",
  • "retention_period_years": 0,
  • "processing_complexity": "string",
  • "estimated_generation_time_minutes": 0,
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Update evidence type

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
evidence_name
string <= 200 characters

Evidence name

evidence_category
string <= 50 characters

Evidence category

description
string

Description of the evidence type

object

Data sources configuration

object

Extraction rules

object

Output format configuration

legal_significance
string <= 20 characters
Enum: "CRITICAL" "IMPORTANT" "STANDARD" "LOW"

Legal significance level

retention_period_years
number >= 0

Retention period in years

processing_complexity
string <= 20 characters
Enum: "SIMPLE" "MODERATE" "COMPLEX" "VERY_COMPLEX"

Processing complexity

estimated_generation_time_minutes
number >= 0

Estimated generation time in minutes

is_active
boolean

Is active

Responses

Request samples

Content type
application/json
{
  • "evidence_name": "string",
  • "evidence_category": "string",
  • "description": "string",
  • "data_sources": { },
  • "extraction_rules": { },
  • "output_format": { },
  • "legal_significance": "CRITICAL",
  • "retention_period_years": 0,
  • "processing_complexity": "SIMPLE",
  • "estimated_generation_time_minutes": 0,
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "evidence_code": "string",
  • "evidence_name": "string",
  • "evidence_category": "string",
  • "description": { },
  • "data_sources": { },
  • "extraction_rules": { },
  • "output_format": { },
  • "legal_significance": "string",
  • "retention_period_years": 0,
  • "processing_complexity": "string",
  • "estimated_generation_time_minutes": 0,
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Delete evidence type

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Get analytics cache entries

Authorizations:
None
query Parameters
cache_key
string

Filter by cache key

query_hash
string

Filter by query hash

status
string
Default: "all"
Enum: "active" "expired" "all"

Filter by expiration status (active/expired)

min_hit_count
number >= 0

Minimum hit count

sort_by
string
Default: "last_accessed"
Enum: "created_at" "last_accessed" "hit_count" "expires_at"

Sort by field

order
string
Default: "desc"
Enum: "asc" "desc"

Sort order

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Get analytics cache statistics

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "total_entries": 0,
  • "active_entries": 0,
  • "expired_entries": 0,
  • "total_hits": 0,
  • "avg_hit_count": 0,
  • "hit_rate": 0,
  • "total_size_bytes": 0,
  • "top_accessed": [
    ],
  • "generated_at": "2019-08-24T14:15:22Z"
}

(Admin) Clear analytics cache

Authorizations:
None
Request Body schema: application/json
required
expired_only
boolean
Default: false

Clear only expired entries

older_than
string

Clear entries older than this date

hit_count_less_than
number >= 0

Clear entries with hit count less than this value

cache_keys
Array of strings

Specific cache keys to clear

Responses

Request samples

Content type
application/json
{
  • "expired_only": false,
  • "older_than": "string",
  • "hit_count_less_than": 0,
  • "cache_keys": [
    ]
}

(Admin) Optimize analytics cache

Authorizations:
None
Request Body schema: application/json
required
remove_low_hit
boolean
Default: true

Remove entries with low hit count

min_hit_count
number >= 0
Default: 5

Minimum hit count to keep

remove_expired
boolean
Default: true

Remove expired entries

compact_large_entries
boolean
Default: false

Compact large entries

max_age_days
number >= 1

Maximum age in days to keep

Responses

Request samples

Content type
application/json
{
  • "remove_low_hit": true,
  • "min_hit_count": 5,
  • "remove_expired": true,
  • "compact_large_entries": false,
  • "max_age_days": 1
}

(Admin) Get data update logs

Authorizations:
None
query Parameters
component
string

Filter by component

update_type
string

Filter by update type

trigger_type
string
Enum: "MANUAL" "SCHEDULED" "SYSTEM_UPDATE" "CONTENT_CHANGE" "COMPLIANCE_UPDATE"

Filter by trigger type

status
string
Enum: "QUEUED" "RUNNING" "COMPLETED" "FAILED" "CANCELLED"

Filter by status

priority
string

Filter by priority

started_after
string

Filter logs started after this date

started_before
string

Filter logs started before this date

with_errors
boolean
Default: false

Include only logs with errors

sort_by
string
Default: "started_at"
Enum: "started_at" "completed_at" "status" "priority"

Sort by field

order
string
Default: "desc"
Enum: "asc" "desc"

Sort order

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Get data update log statistics

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "total_logs": 0,
  • "by_status": { },
  • "by_component": { },
  • "by_trigger_type": { },
  • "avg_execution_time_seconds": 0,
  • "success_rate": 0,
  • "total_items_processed": 0,
  • "recent_failures": [
    ],
  • "generated_at": "2019-08-24T14:15:22Z"
}

(Admin) Cleanup old data update logs

Authorizations:
None
Request Body schema: application/json
required
older_than_days
number >= 1
Default: 90

Delete logs older than this many days

keep_latest_per_component
number >= 1

Keep only the latest N logs per component

statuses
Array of strings
Items Enum: "QUEUED" "RUNNING" "COMPLETED" "FAILED" "CANCELLED"

Delete only logs with these statuses

components
Array of strings

Delete logs for specific components only

preserve_errors
boolean
Default: true

Preserve logs with errors

Responses

Request samples

Content type
application/json
{
  • "older_than_days": 90,
  • "keep_latest_per_component": 1,
  • "statuses": [
    ],
  • "components": [
    ],
  • "preserve_errors": true
}

(Admin) Get preset content update queue items

Authorizations:
None
query Parameters
content_type
string

Filter by content type

content_code
string

Filter by content code

action
string
Enum: "CREATE" "UPDATE" "DELETE" "DEPLOY"

Filter by action

status
string
Enum: "QUEUED" "RUNNING" "COMPLETED" "FAILED" "CANCELLED"

Filter by status

priority
string
Enum: "low" "medium" "high" "critical"

Filter by priority

scheduled_before
string

Include only items scheduled before this date

ready_to_process
boolean
Default: false

Include items ready for processing

retriable
boolean
Default: false

Include failed items that can be retried

sort_by
string
Default: "scheduled_at"
Enum: "scheduled_at" "priority" "created_at" "status"

Sort by field

order
string
Default: "asc"
Enum: "asc" "desc"

Sort order

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Add item to preset content update queue

Authorizations:
None
Request Body schema: application/json
required
content_type
required
string

Type of content to update

content_code
required
string

Content code identifier

action
required
string
Enum: "CREATE" "UPDATE" "DELETE" "DEPLOY"

Action to perform

priority
string
Default: "medium"
Enum: "low" "medium" "high" "critical"

Priority level

scheduled_at
string
Default: "now"

Scheduled execution time

required
object

Content data to process

previous_version
string

Previous version identifier

target_version
required
string

Target version identifier

dependencies
Array of strings
Default: []

List of dependency content codes

max_retries
number [ 0 .. 10 ]
Default: 3

Maximum retry attempts

Responses

Request samples

Content type
application/json
{
  • "content_type": "LeaveTypeTemplate",
  • "content_code": "ANNUAL_LEAVE",
  • "action": "CREATE",
  • "priority": "low",
  • "scheduled_at": "now",
  • "content_data": { },
  • "previous_version": "string",
  • "target_version": "2.0.0",
  • "dependencies": [ ],
  • "max_retries": 3
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "content_type": "string",
  • "content_code": "string",
  • "action": "string",
  • "priority": "string",
  • "scheduled_at": "2019-08-24T14:15:22Z",
  • "content_data": { },
  • "previous_version": { },
  • "target_version": "string",
  • "dependencies": [
    ],
  • "status": "QUEUED",
  • "retry_count": 0,
  • "max_retries": 0,
  • "started_at": { },
  • "completed_at": { },
  • "error_message": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Get preset content queue status

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "total_items": 0,
  • "by_status": { },
  • "by_priority": { },
  • "by_content_type": { },
  • "ready_to_process": 0,
  • "retriable_failures": 0,
  • "avg_wait_time_seconds": 0,
  • "next_item": { },
  • "generated_at": "2019-08-24T14:15:22Z"
}

(Admin) Get preset content queue item by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "content_type": "string",
  • "content_code": "string",
  • "action": "string",
  • "priority": "string",
  • "scheduled_at": "2019-08-24T14:15:22Z",
  • "content_data": { },
  • "previous_version": { },
  • "target_version": "string",
  • "dependencies": [
    ],
  • "status": "QUEUED",
  • "retry_count": 0,
  • "max_retries": 0,
  • "started_at": { },
  • "completed_at": { },
  • "error_message": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Update preset content queue item

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
priority
string
Enum: "low" "medium" "high" "critical"

Priority level

scheduled_at
string

Scheduled execution time

status
string
Enum: "QUEUED" "RUNNING" "COMPLETED" "FAILED" "CANCELLED"

Status

max_retries
number [ 0 .. 10 ]

Maximum retry attempts

Responses

Request samples

Content type
application/json
{
  • "priority": "low",
  • "scheduled_at": "string",
  • "status": "QUEUED",
  • "max_retries": 10
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "content_type": "string",
  • "content_code": "string",
  • "action": "string",
  • "priority": "string",
  • "scheduled_at": "2019-08-24T14:15:22Z",
  • "content_data": { },
  • "previous_version": { },
  • "target_version": "string",
  • "dependencies": [
    ],
  • "status": "QUEUED",
  • "retry_count": 0,
  • "max_retries": 0,
  • "started_at": { },
  • "completed_at": { },
  • "error_message": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Remove item from preset content queue

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Process preset content update queue

Authorizations:
None
Request Body schema: application/json
required
batch_size
number [ 1 .. 100 ]
Default: 10

Maximum items to process

min_priority
string
Enum: "low" "medium" "high" "critical"

Process only items with this priority or higher

content_types
Array of strings

Process specific content types only

dry_run
boolean
Default: false

Process items in dry run mode

Responses

Request samples

Content type
application/json
{
  • "batch_size": 10,
  • "min_priority": "low",
  • "content_types": [
    ],
  • "dry_run": false
}

(Admin) Get all preset content

Authorizations:
None
query Parameters
content_type
string
Enum: "contract" "policy" "document" "form" "training"

Filter by content type

code
string

Filter by code

status
string
Enum: "DRAFT" "ACTIVE" "ARCHIVED" "DEPRECATED"

Filter by status

is_system_default
boolean

Filter by system default

jurisdiction
string

Filter by jurisdiction

search
string

Search in title and description

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create preset content

Authorizations:
None
Request Body schema: application/json
required
content_type
required
string
Enum: "contract" "policy" "document" "form" "training"

Type of content

code
required
string <= 100 characters

Unique content code

title_en
required
string <= 200 characters

Title in English

description_en
string

Description in English

required
object

Main content data

object
Default: {}

Localization data for multiple languages

version
string
Default: "1.0.0"

Content version

status
string
Default: "ACTIVE"
Enum: "DRAFT" "ACTIVE" "ARCHIVED" "DEPRECATED"

Content status

is_system_default
boolean
Default: false

Is system default content

jurisdictions
Array of strings
Default: ["UK"]

Jurisdictions this content applies to

last_review_date
string

Last compliance review date

Responses

Request samples

Content type
application/json
{
  • "content_type": "contract",
  • "code": "EMPLOYMENT_CONTRACT_STANDARD",
  • "title_en": "Standard Employment Contract",
  • "description_en": "Standard employment contract template for permanent employees",
  • "content_data": {
    },
  • "localization_data": {
    },
  • "version": "1.0.0",
  • "status": "DRAFT",
  • "is_system_default": false,
  • "jurisdictions": [
    ],
  • "last_review_date": "2024-01-01"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "content_type": "contract",
  • "code": "string",
  • "title_en": "string",
  • "description_en": { },
  • "content_data": { },
  • "localization_data": { },
  • "version": "string",
  • "status": "DRAFT",
  • "is_system_default": true,
  • "jurisdictions": [
    ],
  • "last_review_date": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Get preset content by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "content_type": "contract",
  • "code": "string",
  • "title_en": "string",
  • "description_en": { },
  • "content_data": { },
  • "localization_data": { },
  • "version": "string",
  • "status": "DRAFT",
  • "is_system_default": true,
  • "jurisdictions": [
    ],
  • "last_review_date": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Update preset content

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
title_en
string <= 200 characters

Title in English

description_en
string

Description in English

object

Main content data

object

Localization data for multiple languages

version
string

Content version

status
string
Enum: "DRAFT" "ACTIVE" "ARCHIVED" "DEPRECATED"

Content status

is_system_default
boolean

Is system default content

jurisdictions
Array of strings

Jurisdictions this content applies to

last_review_date
string

Last compliance review date

Responses

Request samples

Content type
application/json
{
  • "title_en": "string",
  • "description_en": "string",
  • "content_data": { },
  • "localization_data": { },
  • "version": "string",
  • "status": "DRAFT",
  • "is_system_default": true,
  • "jurisdictions": [
    ],
  • "last_review_date": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "content_type": "contract",
  • "code": "string",
  • "title_en": "string",
  • "description_en": { },
  • "content_data": { },
  • "localization_data": { },
  • "version": "string",
  • "status": "DRAFT",
  • "is_system_default": true,
  • "jurisdictions": [
    ],
  • "last_review_date": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Delete preset content

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Bulk import preset content

Authorizations:
None
Request Body schema: application/json
required
required
Array of objects (AdminCreatePresetContentDto)

Array of preset content to import

update_existing
boolean
Default: false

Update existing items with same code

Responses

Request samples

Content type
application/json
{
  • "items": [
    ],
  • "update_existing": false
}

(Admin) Clone preset content

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
new_code
required
string

New unique code for cloned content

new_title
required
string

New title for cloned content

new_description
string

New description for cloned content

reset_version
boolean
Default: true

Reset version to 1.0.0

Responses

Request samples

Content type
application/json
{
  • "new_code": "EMPLOYMENT_CONTRACT_EXECUTIVE",
  • "new_title": "Executive Employment Contract",
  • "new_description": "string",
  • "reset_version": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "content_type": "contract",
  • "code": "string",
  • "title_en": "string",
  • "description_en": { },
  • "content_data": { },
  • "localization_data": { },
  • "version": "string",
  • "status": "DRAFT",
  • "is_system_default": true,
  • "jurisdictions": [
    ],
  • "last_review_date": { },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Deploy preset content to tenants

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
tenant_ids
required
Array of strings

List of tenant IDs to deploy to

override_existing
boolean
Default: false

Override existing content

target_jurisdictions
Array of strings

Deploy only to tenants in specific jurisdictions

Responses

Request samples

Content type
application/json
{
  • "tenant_ids": [
    ],
  • "override_existing": false,
  • "target_jurisdictions": [
    ]
}

(Admin) Get all localization configurations

Authorizations:
None
query Parameters
localization_code
string

Filter by localization code

language_code
string

Filter by language code

country_code
string

Filter by country code

is_active
boolean

Filter by active status

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create localization configuration

Authorizations:
None
Request Body schema: application/json
required
localization_code
required
string

Unique localization code

display_name
required
string

Display name for the localization

language_code
required
string

Language code

country_code
string

Country code

region
string

Region

date_format
string
Default: "DD/MM/YYYY"

Date format

currency_code
string
Default: "GBP"

Currency code

currency_symbol
string
Default: "£"

Currency symbol

number_format
object
Default: {"decimal_separator":".","thousand_separator":","}

Number format configuration

legal_framework
object

Legal framework configuration

compliance_requirements
Array of strings
Default: []

Compliance requirements

cultural_preferences
object

Cultural preferences

is_active
boolean
Default: true

Whether the configuration is active

Responses

Request samples

Content type
application/json
{
  • "localization_code": "en_GB",
  • "display_name": "English (United Kingdom)",
  • "language_code": "en",
  • "country_code": "GB",
  • "region": "Europe",
  • "date_format": "DD/MM/YYYY",
  • "currency_code": "GBP",
  • "currency_symbol": "£",
  • "number_format": {
    },
  • "legal_framework": {
    },
  • "compliance_requirements": [
    ],
  • "cultural_preferences": {
    },
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "localization_code": "string",
  • "display_name": "string",
  • "language_code": "string",
  • "country_code": { },
  • "region": { },
  • "date_format": "string",
  • "currency_code": "string",
  • "currency_symbol": "string",
  • "number_format": { },
  • "legal_framework": { },
  • "compliance_requirements": [
    ],
  • "cultural_preferences": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "translation_count": 150
}

(Admin) Get localization configuration by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "localization_code": "string",
  • "display_name": "string",
  • "language_code": "string",
  • "country_code": { },
  • "region": { },
  • "date_format": "string",
  • "currency_code": "string",
  • "currency_symbol": "string",
  • "number_format": { },
  • "legal_framework": { },
  • "compliance_requirements": [
    ],
  • "cultural_preferences": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "translation_count": 150
}

(Admin) Update localization configuration

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
display_name
string

Display name for the localization

language_code
string

Language code

country_code
string

Country code

region
string

Region

date_format
string

Date format

currency_code
string

Currency code

currency_symbol
string

Currency symbol

number_format
object

Number format configuration

legal_framework
object

Legal framework configuration

compliance_requirements
Array of strings

Compliance requirements

cultural_preferences
object

Cultural preferences

is_active
boolean

Whether the configuration is active

Responses

Request samples

Content type
application/json
{
  • "display_name": "string",
  • "language_code": "string",
  • "country_code": "string",
  • "region": "string",
  • "date_format": "string",
  • "currency_code": "string",
  • "currency_symbol": "string",
  • "number_format": { },
  • "legal_framework": { },
  • "compliance_requirements": [
    ],
  • "cultural_preferences": { },
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "localization_code": "string",
  • "display_name": "string",
  • "language_code": "string",
  • "country_code": { },
  • "region": { },
  • "date_format": "string",
  • "currency_code": "string",
  • "currency_symbol": "string",
  • "number_format": { },
  • "legal_framework": { },
  • "compliance_requirements": [
    ],
  • "cultural_preferences": { },
  • "is_active": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "translation_count": 150
}

(Admin) Delete localization configuration

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Get all localization translations

Authorizations:
None
query Parameters
localization_id
string

Filter by localization ID

translation_key
string

Filter by translation key

translation_quality
string
Enum: "draft" "reviewed" "approved" "needs_review"

Filter by translation quality

search
string

Search in translated text

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Create localization translation

Authorizations:
None
Request Body schema: application/json
required
localization_id
required
string

Localization configuration ID

translation_key
required
string

Translation key

translation_context
string

Translation context

translated_text
required
string

Translated text

alternative_translations
Array of strings
Default: []

Alternative translations

translation_quality
string
Default: "reviewed"
Enum: "draft" "reviewed" "approved" "needs_review"

Translation quality

translator
string

Translator name or ID

reviewer
string

Reviewer name or ID

translation_version
string
Default: "1.0.0"

Translation version

Responses

Request samples

Content type
application/json
{
  • "localization_id": "123e4567-e89b-12d3-a456-426614174000",
  • "translation_key": "common.button.submit",
  • "translation_context": "Used for form submission buttons",
  • "translated_text": "Submit",
  • "alternative_translations": [
    ],
  • "translation_quality": "reviewed",
  • "translator": "John Doe",
  • "reviewer": "Jane Smith",
  • "translation_version": "1.0.0"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "localization_id": "string",
  • "translation_key": "string",
  • "translation_context": { },
  • "translated_text": "string",
  • "alternative_translations": [
    ],
  • "translation_quality": "string",
  • "translator": { },
  • "reviewer": { },
  • "translation_version": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Get localization translation by ID

Authorizations:
None
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "localization_id": "string",
  • "translation_key": "string",
  • "translation_context": { },
  • "translated_text": "string",
  • "alternative_translations": [
    ],
  • "translation_quality": "string",
  • "translator": { },
  • "reviewer": { },
  • "translation_version": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Update localization translation

Authorizations:
None
path Parameters
id
required
string
Request Body schema: application/json
required
translation_context
string

Translation context

translated_text
string

Translated text

alternative_translations
Array of strings

Alternative translations

translation_quality
string
Enum: "draft" "reviewed" "approved" "needs_review"

Translation quality

translator
string

Translator name or ID

reviewer
string

Reviewer name or ID

translation_version
string

Translation version

Responses

Request samples

Content type
application/json
{
  • "translation_context": "string",
  • "translated_text": "string",
  • "alternative_translations": [
    ],
  • "translation_quality": "draft",
  • "translator": "string",
  • "reviewer": "string",
  • "translation_version": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "localization_id": "string",
  • "translation_key": "string",
  • "translation_context": { },
  • "translated_text": "string",
  • "alternative_translations": [
    ],
  • "translation_quality": "string",
  • "translator": { },
  • "reviewer": { },
  • "translation_version": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Delete localization translation

Authorizations:
None
path Parameters
id
required
string

Responses

(Admin) Bulk import translations

Authorizations:
None

Responses

(Admin) Get system initialization status

Authorizations:
None
query Parameters
component
string

Filter by component name

is_initialized
boolean

Filter by initialization status

status
string
Example: status=completed

Filter by status

page
number >= 1
Default: 1

Page number

limit
number [ 1 .. 100 ]
Default: 20

Items per page

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

(Admin) Get initialization status for component

Authorizations:
None
path Parameters
component
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "component": "string",
  • "is_initialized": true,
  • "initialization_version": { },
  • "initialization_date": { },
  • "last_update_version": { },
  • "last_update_date": { },
  • "status": "string",
  • "error_message": { },
  • "total_items": 0,
  • "processed_items": 0,
  • "failed_items": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "progress_percentage": 75.5
}

(Admin) Update component initialization status

Authorizations:
None
path Parameters
component
required
string
Request Body schema: application/json
required
is_initialized
boolean

Whether the component is initialized

initialization_version
string

Initialization version

last_update_version
string

Last update version

last_update_date
string

Last update date

status
string

Status of the initialization

error_message
string

Error message if any

total_items
number

Total items to process

processed_items
number

Processed items count

failed_items
number

Failed items count

Responses

Request samples

Content type
application/json
{
  • "is_initialized": true,
  • "initialization_version": "string",
  • "last_update_version": "string",
  • "last_update_date": "string",
  • "status": "string",
  • "error_message": "string",
  • "total_items": 0,
  • "processed_items": 0,
  • "failed_items": 0
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "component": "string",
  • "is_initialized": true,
  • "initialization_version": { },
  • "initialization_date": { },
  • "last_update_version": { },
  • "last_update_date": { },
  • "status": "string",
  • "error_message": { },
  • "total_items": 0,
  • "processed_items": 0,
  • "failed_items": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "progress_percentage": 75.5
}

(Admin) Initialize system component

Authorizations:
None
path Parameters
component
required
string

Responses

(Admin) Reset component initialization

Authorizations:
None
path Parameters
component
required
string

Responses

(Admin) Perform bulk update across tenants

Authorizations:
None
Request Body schema: application/json
required
tenant_ids
required
Array of strings

List of tenant IDs to update

entity_type
required
string

Type of entity to update

required
object

Update data to apply

object

Filter criteria for selective update

dry_run
boolean
Default: false

Run in dry-run mode to preview changes

create_backup
boolean
Default: true

Create backup before update

Responses

Request samples

Content type
application/json
{
  • "tenant_ids": [
    ],
  • "entity_type": "leave_policy",
  • "update_data": {
    },
  • "filter_criteria": { },
  • "dry_run": false,
  • "create_backup": true
}

Response samples

Content type
application/json
{
  • "operation_id": "string",
  • "operation_type": "BULK_UPDATE",
  • "status": "PENDING",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "total_tenants": 0,
  • "successful_tenants": 0,
  • "failed_tenants": 0,
  • "details": { },
  • "tenant_results": [
    ]
}

(Admin) Migrate data between tenants

Authorizations:
None
Request Body schema: application/json
required
source_tenant_id
required
string

Source tenant ID

target_tenant_ids
required
Array of strings

Target tenant IDs

data_types
required
Array of strings

Data types to migrate

object
Default: {}

Migration options

start_date
string

Start date for data migration

end_date
string

End date for data migration

Responses

Request samples

Content type
application/json
{
  • "source_tenant_id": "tenant-source",
  • "target_tenant_ids": [
    ],
  • "data_types": [
    ],
  • "migration_options": {
    },
  • "start_date": "string",
  • "end_date": "string"
}

Response samples

Content type
application/json
{
  • "operation_id": "string",
  • "operation_type": "BULK_UPDATE",
  • "status": "PENDING",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "total_tenants": 0,
  • "successful_tenants": 0,
  • "failed_tenants": 0,
  • "details": { },
  • "tenant_results": [
    ]
}

(Admin) Cleanup tenant data

Authorizations:
None
Request Body schema: application/json
required
tenant_ids
required
Array of strings

Tenant IDs to cleanup

cleanup_types
required
Array of strings

Types of data to cleanup

retention_days
number [ 1 .. 365 ]
Default: 90

Retention period in days

dry_run
boolean
Default: false

Run in dry-run mode

force
boolean
Default: false

Force cleanup even for active data

Responses

Request samples

Content type
application/json
{
  • "tenant_ids": [
    ],
  • "cleanup_types": [
    ],
  • "retention_days": 90,
  • "dry_run": false,
  • "force": false
}

Response samples

Content type
application/json
{
  • "operation_id": "string",
  • "operation_type": "BULK_UPDATE",
  • "status": "PENDING",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "total_tenants": 0,
  • "successful_tenants": 0,
  • "failed_tenants": 0,
  • "details": { },
  • "tenant_results": [
    ]
}

(Admin) Check health status of all tenants

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

(Admin) Check for regulatory updates

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

(Admin) Apply regulatory updates

Authorizations:
None
Request Body schema: application/json
required
update_types
required
Array of strings
Items Enum: "MINIMUM_WAGE" "STATUTORY_RATES" "TAX_CODES" "PUBLIC_HOLIDAYS" "PENSION_RATES" "EMPLOYMENT_LAW" "HEALTH_SAFETY"

Types of regulatory updates to apply

tenant_ids
Array of strings

Apply to specific tenants only

scheduled_date
string

Schedule update for future date

create_backup
boolean
Default: true

Create backup before applying

notify_tenants
boolean
Default: true

Send notifications to affected tenants

Responses

Request samples

Content type
application/json
{
  • "update_types": [
    ],
  • "tenant_ids": [
    ],
  • "scheduled_date": "string",
  • "create_backup": true,
  • "notify_tenants": true
}

Response samples

Content type
application/json
{
  • "operation_id": "string",
  • "operation_type": "BULK_UPDATE",
  • "status": "PENDING",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "total_tenants": 0,
  • "successful_tenants": 0,
  • "failed_tenants": 0,
  • "details": { },
  • "tenant_results": [
    ]
}

(Admin) Get regulatory update history

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

(Admin) Rollback regulatory updates

Authorizations:
None
Request Body schema: application/json
required
update_id
required
string

Update history ID to rollback

reason
string

Reason for rollback

tenant_ids
Array of strings

Apply to specific tenants only

Responses

Request samples

Content type
application/json
{
  • "update_id": "update-123",
  • "reason": "Incorrect values applied",
  • "tenant_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "operation_id": "string",
  • "operation_type": "BULK_UPDATE",
  • "status": "PENDING",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "total_tenants": 0,
  • "successful_tenants": 0,
  • "failed_tenants": 0,
  • "details": { },
  • "tenant_results": [
    ]
}

(Admin) Get default leave type presets

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

(Admin) Update leave type presets

Authorizations:
None
Request Body schema: application/json
required
name
string

Preset name

description
string

Preset description

is_active
boolean

Is active

object

Preset configuration

version
string

Version

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "is_active": true,
  • "configuration": { },
  • "version": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "preset_type": "string",
  • "name": "string",
  • "description": "string",
  • "is_active": true,
  • "is_default": true,
  • "configuration": { },
  • "version": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Get default compliance check presets

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

(Admin) Update compliance check presets

Authorizations:
None
Request Body schema: application/json
required
name
string

Preset name

description
string

Preset description

is_active
boolean

Is active

object

Preset configuration

version
string

Version

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "is_active": true,
  • "configuration": { },
  • "version": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "preset_type": "string",
  • "name": "string",
  • "description": "string",
  • "is_active": true,
  • "is_default": true,
  • "configuration": { },
  • "version": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

(Admin) Get default learning path presets

Authorizations:
None

Responses

Response samples

Content type
application/json
[
  • {
    }
]

(Admin) Update learning path presets

Authorizations:
None
Request Body schema: application/json
required
name
string

Preset name

description
string

Preset description

is_active
boolean

Is active

object

Preset configuration

version
string

Version

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "is_active": true,
  • "configuration": { },
  • "version": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "preset_type": "string",
  • "name": "string",
  • "description": "string",
  • "is_active": true,
  • "is_default": true,
  • "configuration": { },
  • "version": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Admin - Audit

Audit logs and compliance tracking

Query audit logs

Authorizations:
JWT-auth
query Parameters
user_id
string
Example: user_id=123e4567-e89b-12d3-a456-426614174000

Filter by user ID

action
string
Enum: "CREATE" "UPDATE" "DELETE" "VIEW" "EXPORT" "LOGIN" "LOGOUT" "APPROVE" "REJECT" "ASSIGN" "UNASSIGN"

Filter by action

resource_type
string
Example: resource_type=Employee

Filter by resource type

resource_id
string
Example: resource_id=123e4567-e89b-12d3-a456-426614174000

Filter by resource ID

start_date
string
Example: start_date=2024-01-01T00:00:00Z

Start date for filtering

end_date
string
Example: end_date=2024-12-31T23:59:59Z

End date for filtering

page
number
Default: 1
Example: page=1

Page number for pagination

limit
number
Default: 20
Example: limit=20

Number of items per page

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get audit trail for a specific resource

Authorizations:
JWT-auth
path Parameters
resourceType
required
string
Example: Employee

Type of resource

resourceId
required
string <uuid>

ID of the resource

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get activity logs for a specific user

Authorizations:
JWT-auth
path Parameters
userId
required
string <uuid>

ID of the user

query Parameters
start_date
required
string
end_date
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Generate compliance report

Authorizations:
JWT-auth
query Parameters
start_date
required
string
end_date
required
string

Responses

System - Health

System health checks and monitoring

Get application status

Responses

Get authentication status

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
{
  • "authenticated": true,
  • "tenantId": "string",
  • "userId": "string",
  • "roles": [
    ],
  • "permissions": [
    ]
}

Get authentication health status

Responses

Response samples

Content type
application/json
{
  • "status": "string",
  • "message": "string"
}

Get current user information using decorators

Authorizations:
JWT-auth

Responses

Response samples

Content type
application/json
{
  • "userId": "string",
  • "tenantId": "string",
  • "email": "string",
  • "role": "string",
  • "fullContext": { }
}

Comprehensive system health check

Responses

Response samples

Content type
application/json
{
  • "status": "healthy",
  • "timestamp": "string",
  • "services": {
    },
  • "summary": {
    }
}

Liveness probe for Kubernetes

Responses

Response samples

Content type
application/json
{
  • "status": "string",
  • "timestamp": "string"
}

Readiness probe for Kubernetes

Responses

Response samples

Content type
application/json
{
  • "status": "string",
  • "timestamp": "string"
}

Individual service health check

path Parameters
service
required
string
Enum: "database" "redis" "rabbitmq"

Service name

Responses

Response samples

Content type
application/json
{
  • "status": "healthy",
  • "message": "string",
  • "responseTime": 0,
  • "details": { }
}

Enums

EnumsController_getAllEnums

Responses

EnumsController_getEnumByName

path Parameters
name
required
string

Responses