openapi: 3.1.0 info: title: HR Partner REST API description: >- HR Partner is a cloud-based human resources management SaaS platform from HR Partner Software Pty Ltd (Australia), aimed at organizations of roughly 20 to 500 employees. This OpenAPI describes the public HR Partner REST API exposed at https://api.hrpartner.io, covering company information, employee records and sub-modules (contacts, addresses, notes, education, skills, training, assets, benefits, dependents, grievances, positions, renewables, attachments), leave management (requests, balances, absences), timesheets and projects, expenses, recruitment (job listings, applicants, applications, application-stage tracking, interviews), performance (reviews, goals), checklists, reminders, document library, and lookups. Authentication is via API key passed in the x-api-key header. version: 1.0.0 termsOfService: https://hrpartner.io/terms-of-service contact: name: HR Partner Developer url: https://developer.hrpartner.io/ email: developer@hrpartner.io license: name: Proprietary url: https://hrpartner.io/terms-of-service servers: - url: https://api.hrpartner.io description: HR Partner Production API security: - apiKeyHeader: [] tags: - name: Company description: Retrieve company-level information for the HR Partner account. - name: Employees description: Read, create, and update employee records. - name: Contacts description: List employee contact details (phone, email, emergency). - name: Addresses description: List employee address records. - name: Notes description: Retrieve internal HR notes attached to employees. - name: Education description: Read employee education and qualification records. - name: Skills description: Read employee skills and competency ratings. - name: Training description: Read employee training and course completion records. - name: Assets description: Read company assets issued to employees. - name: Benefits description: Read employee benefit assignments. - name: Dependents description: Read employee dependent records. - name: Grievances description: Read employee grievance records. - name: Positions description: Read employee position history and remuneration. - name: Renewables description: Read renewable items such as certifications and licenses. - name: Attachments description: Read attachments stored against any HR Partner module. - name: Leave Requests description: Read leave and PTO requests submitted by employees. - name: Leave Balances description: Read leave entitlement balances and accruals. - name: Absences description: Read employee absence records. - name: Timesheets description: Read and create timesheets and timeclock entries. - name: Projects description: Read projects and activities used by timesheets. - name: Expenses description: Read employee expense claims. - name: Job Listings description: Read open job listings published by the organization. - name: Applicants description: Read, create, and update job applicants. - name: Applications description: Read, create, and update job applications and stage data. - name: Application Stage Tracking description: Read application stage history and tracking data. - name: Reviews description: Read performance reviews and scoring. - name: Goals description: Read performance and development goals. - name: Checklists description: Read onboarding and offboarding checklists. - name: Reminders description: Read, update, and delete user reminders. - name: Library description: Read document library files and categories. - name: Lookups description: Read system lookup definitions for configurable fields. paths: /company: get: tags: [Company] operationId: getCompany summary: Get Company Information description: Retrieve company-level information for the HR Partner account. responses: '200': description: Company information. content: application/json: schema: { $ref: '#/components/schemas/Company' } /employees: get: tags: [Employees] operationId: listEmployees summary: List Employees description: Returns all employees in the HR Partner account with optional filtering. parameters: - { name: search, in: query, schema: { type: string } } - { name: department, in: query, schema: { type: string } } - { name: location, in: query, schema: { type: string } } - { name: group, in: query, schema: { type: string } } - { name: position, in: query, schema: { type: string } } - { name: employment_status, in: query, schema: { type: string } } - { name: gender_identity, in: query, schema: { type: string } } - { name: is_active, in: query, schema: { type: boolean } } - { name: is_terminated, in: query, schema: { type: boolean } } - { name: reports_to, in: query, schema: { type: string } } responses: '200': description: List of employees. content: application/json: schema: type: array items: { $ref: '#/components/schemas/Employee' } /employee/{employeeCode}: get: tags: [Employees] operationId: getEmployee summary: Get Employee description: Retrieve a single employee by code. parameters: - { name: employeeCode, in: path, required: true, schema: { type: string } } responses: '200': description: A single employee. content: application/json: schema: { $ref: '#/components/schemas/Employee' } post: tags: [Employees] operationId: upsertEmployee summary: Create Or Update Employee description: Create a new employee or update an existing one by code. parameters: - { name: employeeCode, in: path, required: true, schema: { type: string } } requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/Employee' } responses: '200': description: Created or updated employee. content: application/json: schema: { $ref: '#/components/schemas/Employee' } /contacts: get: tags: [Contacts] operationId: listContacts summary: List Contacts description: List employee contact details across the account. parameters: - { name: search, in: query, schema: { type: string } } - { name: contact_type, in: query, schema: { type: string } } - { name: is_primary, in: query, schema: { type: boolean } } - { name: is_public, in: query, schema: { type: boolean } } - { name: is_emergency, in: query, schema: { type: boolean } } responses: '200': description: List of contacts. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Contact' } } /addresses: get: tags: [Addresses] operationId: listAddresses summary: List Addresses description: List employee address records. parameters: - { name: search, in: query, schema: { type: string } } - { name: address_type, in: query, schema: { type: string } } - { name: location_search, in: query, schema: { type: string } } responses: '200': description: List of addresses. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Address' } } /notes: get: tags: [Notes] operationId: listNotes summary: List Notes description: List internal HR notes attached to employees. parameters: - { name: employee, in: query, schema: { type: string } } - { name: department, in: query, schema: { type: string } } - { name: note, in: query, schema: { type: string } } - { name: created_date_from, in: query, schema: { type: string, format: date } } - { name: created_date_to, in: query, schema: { type: string, format: date } } - { name: updated_date_from, in: query, schema: { type: string, format: date } } - { name: updated_date_to, in: query, schema: { type: string, format: date } } - { name: tags, in: query, schema: { type: string } } - { name: include_events, in: query, schema: { type: boolean } } responses: '200': description: List of notes. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Note' } } /education: get: tags: [Education] operationId: listEducation summary: List Education Records description: List employee education records. parameters: - { name: employee, in: query, schema: { type: string } } - { name: department, in: query, schema: { type: string } } - { name: education_type, in: query, schema: { type: string } } - { name: education_status, in: query, schema: { type: string } } - { name: institution, in: query, schema: { type: string } } responses: '200': description: List of education records. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Education' } } /skills: get: tags: [Skills] operationId: listSkills summary: List Skills description: List employee skill ratings. parameters: - { name: employee, in: query, schema: { type: string } } - { name: department, in: query, schema: { type: string } } - { name: skill_name, in: query, schema: { type: string } } - { name: skill_rating, in: query, schema: { type: integer } } - { name: skill_rating_from, in: query, schema: { type: integer } } - { name: skill_rating_to, in: query, schema: { type: integer } } responses: '200': description: List of skills. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Skill' } } /training: get: tags: [Training] operationId: listTraining summary: List Training Records description: List employee training and course records. parameters: - { name: employee, in: query, schema: { type: string } } - { name: training_type, in: query, schema: { type: string } } - { name: course_name, in: query, schema: { type: string } } - { name: institution, in: query, schema: { type: string } } - { name: training_status, in: query, schema: { type: string } } responses: '200': description: List of training records. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Training' } } /assets: get: tags: [Assets] operationId: listAssets summary: List Assets description: List company assets issued to employees. responses: '200': description: List of assets. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Asset' } } /benefits: get: tags: [Benefits] operationId: listBenefits summary: List Benefits description: List employee benefit assignments. responses: '200': description: List of benefits. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Benefit' } } /dependents: get: tags: [Dependents] operationId: listDependents summary: List Dependents description: List employee dependent records. responses: '200': description: List of dependents. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Dependent' } } /grievances: get: tags: [Grievances] operationId: listGrievances summary: List Grievances description: List employee grievance records. responses: '200': description: List of grievances. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Grievance' } } /positions: get: tags: [Positions] operationId: listPositions summary: List Positions description: List employee position history and remuneration. responses: '200': description: List of positions. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Position' } } /renewables: get: tags: [Renewables] operationId: listRenewables summary: List Renewables description: List renewable items such as certifications and licenses. responses: '200': description: List of renewables. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Renewable' } } /attachments: get: tags: [Attachments] operationId: listAttachments summary: List Attachments description: List attachments stored against any HR Partner module. responses: '200': description: List of attachments. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Attachment' } } /leave-requests: get: tags: [Leave Requests] operationId: listLeaveRequests summary: List Leave Requests description: List employee leave and PTO requests. parameters: - { name: employee, in: query, schema: { type: string } } - { name: leave_type, in: query, schema: { type: string } } - { name: leave_status, in: query, schema: { type: string } } - { name: start_date_from, in: query, schema: { type: string, format: date } } - { name: start_date_to, in: query, schema: { type: string, format: date } } responses: '200': description: List of leave requests. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/LeaveRequest' } } /leave-request/{id}: get: tags: [Leave Requests] operationId: getLeaveRequest summary: Get Leave Request description: Retrieve a single leave request by id. parameters: - { name: id, in: path, required: true, schema: { type: string } } responses: '200': description: A single leave request. content: application/json: schema: { $ref: '#/components/schemas/LeaveRequest' } /leave-balances: get: tags: [Leave Balances] operationId: listLeaveBalances summary: List Leave Balances description: List employee leave entitlement balances and accruals. parameters: - { name: employee, in: query, schema: { type: string } } - { name: department, in: query, schema: { type: string } } - { name: leave_type, in: query, schema: { type: string } } responses: '200': description: List of leave balances. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/LeaveBalance' } } /absences: get: tags: [Absences] operationId: listAbsences summary: List Absences description: List employee absence records. parameters: - { name: employee, in: query, schema: { type: string } } - { name: absence_reason, in: query, schema: { type: string } } - { name: absence_status, in: query, schema: { type: string } } - { name: absence_date_from, in: query, schema: { type: string, format: date } } - { name: absence_date_to, in: query, schema: { type: string, format: date } } responses: '200': description: List of absences. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Absence' } } /timesheets: get: tags: [Timesheets] operationId: listTimesheets summary: List Timesheets description: List employee timesheets. parameters: - { name: employee, in: query, schema: { type: string } } - { name: department, in: query, schema: { type: string } } - { name: week_commencing, in: query, schema: { type: string, format: date } } - { name: timesheet_status, in: query, schema: { type: string } } responses: '200': description: List of timesheets. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Timesheet' } } /timesheet/{id}: get: tags: [Timesheets] operationId: getTimesheet summary: Get Timesheet description: Retrieve a single timesheet by id. parameters: - { name: id, in: path, required: true, schema: { type: string } } responses: '200': description: A single timesheet. content: application/json: schema: { $ref: '#/components/schemas/Timesheet' } /timesheet: post: tags: [Timesheets] operationId: createTimesheetEntry summary: Create Timesheet Entry description: Add a timesheet or timeclock entry for an employee. requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/TimesheetEntry' } responses: '200': description: Created timesheet entry. content: application/json: schema: { $ref: '#/components/schemas/Timesheet' } /projects: get: tags: [Projects] operationId: listProjects summary: List Projects description: List projects and activities used by timesheets. parameters: - { name: search, in: query, schema: { type: string } } - { name: status, in: query, schema: { type: string } } responses: '200': description: List of projects. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Project' } } /expenses: get: tags: [Expenses] operationId: listExpenses summary: List Expense Claims description: List employee expense claims. parameters: - { name: employee, in: query, schema: { type: string } } - { name: expense_status, in: query, schema: { type: string } } - { name: claim_date_from, in: query, schema: { type: string, format: date } } - { name: claim_date_to, in: query, schema: { type: string, format: date } } - { name: amount_from, in: query, schema: { type: number } } - { name: amount_to, in: query, schema: { type: number } } responses: '200': description: List of expense claims. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Expense' } } /job-listings: get: tags: [Job Listings] operationId: listJobListings summary: List Job Listings description: List open job listings published by the organization. responses: '200': description: List of job listings. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/JobListing' } } /job-listings/{id}: get: tags: [Job Listings] operationId: getJobListing summary: Get Job Listing description: Retrieve a single job listing by id. parameters: - { name: id, in: path, required: true, schema: { type: string } } responses: '200': description: A single job listing. content: application/json: schema: { $ref: '#/components/schemas/JobListing' } /applicants: get: tags: [Applicants] operationId: listApplicants summary: List Applicants description: List recruitment applicants. responses: '200': description: List of applicants. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Applicant' } } post: tags: [Applicants] operationId: createApplicant summary: Create Applicant description: Create a new applicant. requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/Applicant' } responses: '200': description: Created applicant. content: application/json: schema: { $ref: '#/components/schemas/Applicant' } /applicants/{id}: get: tags: [Applicants] operationId: getApplicant summary: Get Applicant description: Retrieve a single applicant by id. parameters: - { name: id, in: path, required: true, schema: { type: string } } responses: '200': description: A single applicant. content: application/json: schema: { $ref: '#/components/schemas/Applicant' } post: tags: [Applicants] operationId: updateApplicant summary: Update Applicant description: Update an existing applicant by id. parameters: - { name: id, in: path, required: true, schema: { type: string } } requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/Applicant' } responses: '200': description: Updated applicant. content: application/json: schema: { $ref: '#/components/schemas/Applicant' } /applications: get: tags: [Applications] operationId: listApplications summary: List Applications description: List job applications. responses: '200': description: List of applications. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Application' } } post: tags: [Applications] operationId: createApplication summary: Create Application description: Create a new job application. requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/Application' } responses: '200': description: Created application. content: application/json: schema: { $ref: '#/components/schemas/Application' } /applications/{id}: get: tags: [Applications] operationId: getApplication summary: Get Application description: Retrieve a single application by id. parameters: - { name: id, in: path, required: true, schema: { type: string } } responses: '200': description: A single application. content: application/json: schema: { $ref: '#/components/schemas/Application' } post: tags: [Applications] operationId: updateApplication summary: Update Application description: Update an existing application by id. parameters: - { name: id, in: path, required: true, schema: { type: string } } requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/Application' } responses: '200': description: Updated application. content: application/json: schema: { $ref: '#/components/schemas/Application' } /application-stage-tracking: get: tags: [Application Stage Tracking] operationId: listApplicationStageTracking summary: List Application Stage Tracking description: Read application stage history and tracking data. responses: '200': description: List of application stage tracking entries. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/ApplicationStageTracking' } } /reviews: get: tags: [Reviews] operationId: listReviews summary: List Performance Reviews description: List performance reviews. parameters: - { name: employee, in: query, schema: { type: string } } - { name: review_type, in: query, schema: { type: string } } - { name: review_status, in: query, schema: { type: string } } - { name: reviewer, in: query, schema: { type: string } } responses: '200': description: List of reviews. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Review' } } /goals: get: tags: [Goals] operationId: listGoals summary: List Goals description: List performance and development goals. parameters: - { name: employee, in: query, schema: { type: string } } - { name: goal_scope, in: query, schema: { type: string } } - { name: goal_type, in: query, schema: { type: string } } - { name: goal_is_active, in: query, schema: { type: boolean } } - { name: goal_is_completed, in: query, schema: { type: boolean } } responses: '200': description: List of goals. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Goal' } } /checklist: get: tags: [Checklists] operationId: listChecklists summary: List Checklists description: List onboarding, offboarding, and other checklists. parameters: - { name: employee, in: query, schema: { type: string } } - { name: checklist_status, in: query, schema: { type: string } } - { name: checklist_template, in: query, schema: { type: string } } - { name: show_details, in: query, schema: { type: boolean } } responses: '200': description: List of checklists. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Checklist' } } /reminders: get: tags: [Reminders] operationId: listReminders summary: List Reminders description: List user reminders. responses: '200': description: List of reminders. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Reminder' } } /reminder/{id}: get: tags: [Reminders] operationId: getReminder summary: Get Reminder description: Retrieve a single reminder by id. parameters: - { name: id, in: path, required: true, schema: { type: string } } responses: '200': description: A single reminder. content: application/json: schema: { $ref: '#/components/schemas/Reminder' } post: tags: [Reminders] operationId: updateReminder summary: Update Reminder description: Update an existing reminder by id. parameters: - { name: id, in: path, required: true, schema: { type: string } } requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/Reminder' } responses: '200': description: Updated reminder. content: application/json: schema: { $ref: '#/components/schemas/Reminder' } delete: tags: [Reminders] operationId: deleteReminder summary: Delete Reminder description: Delete a reminder by id. parameters: - { name: id, in: path, required: true, schema: { type: string } } responses: '200': description: Reminder deleted. /library/documents: get: tags: [Library] operationId: listLibraryDocuments summary: List Library Documents description: List documents in the company document library. responses: '200': description: List of library documents. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/LibraryDocument' } } /library/categories: get: tags: [Library] operationId: listLibraryCategories summary: List Library Categories description: List document categories in the company document library. responses: '200': description: List of library categories. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/LibraryCategory' } } /lookups: get: tags: [Lookups] operationId: listLookups summary: List Lookups description: List system lookup definitions for configurable fields. responses: '200': description: List of lookup definitions. content: application/json: schema: { type: array, items: { $ref: '#/components/schemas/Lookup' } } components: securitySchemes: apiKeyHeader: type: apiKey in: header name: x-api-key schemas: Company: type: object properties: id: { type: string } name: { type: string } country: { type: string } timezone: { type: string } currency: { type: string } Employee: type: object properties: id: { type: string } code: { type: string } first_names: { type: string } last_name: { type: string } full_name: { type: string } date_of_birth: { type: string, format: date } gender_identity: { type: string } department: { type: string } location: { type: string } position: { type: string } employment_status: { type: string } email: { type: string } started_at: { type: string, format: date } finished_at: { type: string, format: date } avatar: { type: string } can_logon: { type: boolean } portal_username: { type: string } custom_data: { type: object } tags: { type: array, items: { type: string } } Contact: type: object properties: id: { type: string } type: { type: string } details: { type: string } is_primary: { type: boolean } is_public: { type: boolean } is_emergency: { type: boolean } employee: { $ref: '#/components/schemas/EmployeeRef' } Address: type: object properties: id: { type: string } type: { type: string } address_1: { type: string } address_2: { type: string } suburb: { type: string } state: { type: string } post_code: { type: string } country: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } Note: type: object properties: id: { type: string } note: { type: string } created_date: { type: string, format: date-time } updated_date: { type: string, format: date-time } employee: { $ref: '#/components/schemas/EmployeeRef' } attachments: { type: array, items: { $ref: '#/components/schemas/Attachment' } } Education: type: object properties: id: { type: string } institution: { type: string } commence_date: { type: string, format: date } completion_date: { type: string, format: date } education_type: { type: string } education_status: { type: string } comments: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } Skill: type: object properties: id: { type: string } skill_name: { type: string } skill_rating: { type: integer } comments: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } Training: type: object properties: id: { type: string } training_type: { type: string } course_name: { type: string } institution: { type: string } commence_date: { type: string, format: date } completion_date: { type: string, format: date } training_status: { type: string } cost: { type: number } reimbursement: { type: number } comments: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } Asset: type: object properties: id: { type: string } asset_type: { type: string } description: { type: string } asset_identifier: { type: string } serial_number: { type: string } out_date: { type: string, format: date } in_date: { type: string, format: date } employee: { $ref: '#/components/schemas/EmployeeRef' } Benefit: type: object properties: id: { type: string } description: { type: string } start_date: { type: string, format: date } end_date: { type: string, format: date } benefit_value: { type: number } benefit_value_period: { type: string } benefit_type: { type: string } benefit_provider: { type: string } benefit_status: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } Dependent: type: object properties: id: { type: string } dependent_type: { type: string } name: { type: string } contact_details: { type: string } date_of_birth: { type: string, format: date } employee: { $ref: '#/components/schemas/EmployeeRef' } Grievance: type: object properties: id: { type: string } grievance_type: { type: string } description: { type: string } reported_date: { type: string, format: date } actioned_by: { type: string } grievance_status: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } Position: type: object properties: id: { type: string } position: { type: string } commence_date: { type: string, format: date } completion_date: { type: string, format: date } pay_level: { type: string } remuneration: { type: number } remuneration_period: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } Renewable: type: object properties: id: { type: string } renewable_type: { type: string } description: { type: string } issue_date: { type: string, format: date } renewal_due: { type: string, format: date } employee: { $ref: '#/components/schemas/EmployeeRef' } Attachment: type: object properties: id: { type: string } description: { type: string } url: { type: string } module: { type: string } module_id: { type: string } size: { type: integer } uploaded_date: { type: string, format: date-time } LeaveRequest: type: object properties: id: { type: string } leave_type: { type: string } description: { type: string } start_date: { type: string, format: date } end_date: { type: string, format: date } duration: { type: number } leave_status: { type: string } comments: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } LeaveBalance: type: object properties: id: { type: string } leave_type: { type: string } balance: { type: number } accrued: { type: number } taken: { type: number } pending: { type: number } employee: { $ref: '#/components/schemas/EmployeeRef' } Absence: type: object properties: id: { type: string } leave_type: { type: string } absence_reason: { type: string } description: { type: string } absence_date: { type: string, format: date } return_date: { type: string, format: date } duration: { type: number } physician: { type: string } certificate_number: { type: string } absence_status: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } Timesheet: type: object properties: id: { type: string } week_commencing: { type: string, format: date } total_hours: { type: number } timesheet_status: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } TimesheetEntry: type: object properties: employee_code: { type: string } entry_date: { type: string, format: date } hours: { type: number } project_code: { type: string } notes: { type: string } Project: type: object properties: id: { type: string } name: { type: string } description: { type: string } status: { type: string } start_date: { type: string, format: date } end_date: { type: string, format: date } budget: { type: number } manager: { type: string } Expense: type: object properties: id: { type: string } description: { type: string } amount: { type: number } currency: { type: string } claim_date: { type: string, format: date } expense_status: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } JobListing: type: object properties: id: { type: string } title: { type: string } description: { type: string } department: { type: string } location: { type: string } is_active: { type: boolean } published_date: { type: string, format: date } Applicant: type: object properties: id: { type: string } first_names: { type: string } last_name: { type: string } email: { type: string } phone: { type: string } source: { type: string } notes: { type: string } Application: type: object properties: id: { type: string } applicant_id: { type: string } job_listing_id: { type: string } stage: { type: string } applied_at: { type: string, format: date-time } status: { type: string } ApplicationStageTracking: type: object properties: id: { type: string } application_id: { type: string } stage: { type: string } entered_at: { type: string, format: date-time } exited_at: { type: string, format: date-time } comments: { type: string } Review: type: object properties: id: { type: string } review_type: { type: string } description: { type: string } review_date: { type: string, format: date } reviewer: { type: string } score: { type: number } review_status: { type: string } employee: { $ref: '#/components/schemas/EmployeeRef' } Goal: type: object properties: id: { type: string } scope: { type: string } type: { type: string } description: { type: string } target_value: { type: number } can_exceed_target_value: { type: boolean } current_value: { type: number } is_active: { type: boolean } is_completed: { type: boolean } is_archived: { type: boolean } assigned_at: { type: string, format: date-time } due_at: { type: string, format: date-time } employee: { $ref: '#/components/schemas/EmployeeRef' } Checklist: type: object properties: id: { type: string } name: { type: string } comments: { type: string } status: { type: string } assigned_at: { type: string, format: date-time } completed_at: { type: string, format: date-time } progress: { type: number } percdone: { type: number } employee: { $ref: '#/components/schemas/EmployeeRef' } Reminder: type: object properties: id: { type: string } title: { type: string } body: { type: string } due_at: { type: string, format: date-time } is_completed: { type: boolean } LibraryDocument: type: object properties: id: { type: string } name: { type: string } category: { type: string } url: { type: string } uploaded_at: { type: string, format: date-time } LibraryCategory: type: object properties: id: { type: string } name: { type: string } description: { type: string } Lookup: type: object properties: id: { type: string } name: { type: string } values: { type: array, items: { type: string } } EmployeeRef: type: object properties: code: { type: string } first_names: { type: string } last_name: { type: string } full_name: { type: string } department: { type: string }