openapi: 3.0.0
info:
  version: 1.0.0
  title: CATAPA API
  description: CATAPA HR and workforce management API for payroll, organization, personnel, time management, and related operations.
  contact:
    name: API Support
    email: support@catapa.com
  x-logo:
    url: https://assets.catapa.com/images/logo-tagline.png
    altText: Catapa Logo
  license:
    name: CATAPA
    url: https://catapa.com/
servers:
- url: https://api.catapa.com
  description: Production server
security:
- BearerAuth: []
tags:
- name: employee-group
  x-displayName: Employee
  description: |
    These endpoints let you manage employees in the system.
    It allows you to retrieve and update employee data, including personal details, employment status, and more.
- name: employee
  x-displayName: Employee
  x-parent: employee-group
  description: |
    These endpoints let you manage employees in the system.
    It allows you to retrieve and update employee data, including personal details, employment status, and more.
- name: employee-detail
  x-displayName: Employee Detail
  x-parent: employee-group
  description: |
    These endpoints let you manage detailed information about employees in the system.
    It allows you to retrieve and update comprehensive employee profiles, including personal, employment, and other related details.
- name: employment-status
  x-displayName: Employment Status
  x-parent: employee-group
  description: |
    These endpoints let you manage employment statuses in the system.
    It allows you to retrieve, create, update, and delete employment status records.
- name: employee-variable
  x-displayName: Employee Variable
  x-parent: employee-group
  description: |
    These endpoints let you manage employee variables in the system.
    It allows you to retrieve and update custom variables associated with employees.
- name: identity-cards
  x-displayName: Identity Cards
  x-parent: employee-group
  description: |
    These endpoints let you manage identity cards for employees in the system.
    It allows you to retrieve, create, update, and delete identity card records.
- name: contact-information
  x-displayName: Contact Information
  x-parent: employee-group
  description: |
    These endpoints let you manage contact information for employees in the system.
    It allows you to retrieve, create, update, and delete contact information records.
- name: employee-bpjs-membership
  x-displayName: BPJS Membership
  x-parent: employee-group
  description: |
    These endpoints let you manage BPJS memberships for employees in the system.
    It allows you to retrieve, create, update, and delete BPJS membership records.
- name: tax-membership
  x-displayName: Tax Membership
  x-parent: employee-group
  description: |
    These endpoints let you manage tax memberships for employees in the system.
    It allows you to retrieve, create, update, and delete tax membership records.
- name: tax-membership-history
  x-displayName: Tax Membership Histories
  x-parent: employee-group
  description: |
    These endpoints let you manage(retrieve and update) tax membership histories for employees.
- name: bank-account-configuration
  x-displayName: Bank Account Configuration
  x-parent: employee-group
  description: |
    These endpoints let you manage bank account configurations for employees in the system.
    It allows you to retrieve, create, update, and delete bank account configuration records.
- name: employee-bank-account-configuration
  x-displayName: Employee Bank Account Configuration
  x-parent: employee-group
  description: |
    These endpoints let you manage bank account configurations specific to employees in the system.
    It allows you to retrieve, create, update, and delete employee-specific bank account configuration records.
- name: families
  x-displayName: Families
  x-parent: employee-group
  description: |
    These endpoints let you manage family information for employees in the system.
    It allows you to retrieve, create, update, and delete family records.
- name: job-experience
  x-displayName: Job Experience
  x-parent: employee-group
  description: |
    These endpoints let you manage job experience records for employees in the system.
    It allows you to retrieve job experience approval records.
- name: termination
  x-displayName: Termination
  x-parent: employee-group
  description: |
    These endpoints let you manage employee terminations in the system.
    It allows you to retrieve, create, update, and delete termination records.
- name: organization
  x-displayName: Organization
  x-parent: employee-group
  description: |
    These endpoints let you manage organizations in the system.
    It allows you to retrieve, create, update, and delete organization records.
- name: vendor
  x-displayName: Vendor
  x-parent: employee-group
  description: |
    These endpoints let you manage vendor master data in the system.
    It allows you to retrieve vendor records.
- name: master-data
  x-displayName: Master Data
  x-parent: employee-group
  description: |
    These endpoints let you manage master data in the system.
    It allows you to retrieve, create, update, and delete master data records.
- name: custom-table
  x-displayName: Custom Table
  x-parent: employee-group
  description: |
    These endpoints let you manage custom tables in the system.
    It allows you to retrieve, create, update, and delete custom table records.
- name: custom-table-entry
  x-displayName: Custom Table Entry
  x-parent: employee-group
  description: |
    These endpoints let you manage entries in custom tables in the system.
    It allows you to retrieve, create, update, and delete custom table entry records.
- name: payroll-group
  x-displayName: Payroll
  description: |
    These endpoints let you manage payroll features in the system.
    It includes salary calculation, payment processing, tax management, and more.
- name: paygroup
  x-displayName: Paygroup
  x-parent: payroll-group
  description: |
    These endpoints let you manage paygroups in the system.
    It allows you to retrieve, create, update, and delete paygroup records.
- name: salary-template
  x-displayName: Salary Template
  x-parent: payroll-group
  description: |
    These endpoints let you manage salary templates in the system.
    It allows you to retrieve, create, update, and delete salary template records.
- name: salary-item
  x-displayName: Salary Item
  x-parent: payroll-group
  description: |
    These endpoints let you manage salary items in the system.
    It allows you to retrieve, create, update, and delete salary item records.
- name: employee-salary-template
  x-displayName: Employee Salary Template
  x-parent: payroll-group
  description: |
    These endpoints let you manage salary templates specific to employees in the system.
    It allows you to retrieve, create, update, and delete employee-specific salary template records.
- name: employee-salary-template-history
  x-displayName: Employee Salary Template History
  x-parent: payroll-group
  description: |
    These endpoints let you manage employee salary template histories specific to employees in the system.
    It allows you to retrieve employee salary template history records.
- name: company-bank-account
  x-displayName: Company Bank Account
  x-parent: payroll-group
  description: |
    These endpoints let you manage company bank accounts in the system.
    It allows you to retrieve, create, update, and delete company bank account records.
- name: employee-paygroup
  x-displayName: Employee Paygroup
  x-parent: payroll-group
  description: |
    These endpoints let you manage paygroups specific to employees in the system.
    It allows you to retrieve, create, update, and delete employee-specific paygroup records.
- name: editable-salary-preprocess
  x-displayName: Editable Salary Preprocess
  x-parent: payroll-group
  description: |
    These endpoints let you manage editable salary preprocess settings in the system.
    It allows you to retrieve, create, update, and delete editable salary preprocess records.
- name: salary-calculation
  x-displayName: Salary Calculation
  x-parent: payroll-group
  description: |
    These endpoints let you manage salary calculations in the system.
    It allows you to perform salary calculations based on various parameters and settings.
- name: tax
  x-displayName: Tax
  x-parent: payroll-group
  description: |
    These endpoints let you manage tax-related features in the system.
    It allows you to retrieve tax configurations, calculate taxes, and manage tax records.
- name: bpjs-healthcare
  x-displayName: BPJS Healthcare
  x-parent: payroll-group
  description: |
    These endpoints let you manage BPJS Healthcare features in the system.
    It allows you to retrieve BPJS Healthcare configurations, calculate related contributions, and manage BPJS Healthcare records.
- name: bpjs-manpower
  x-displayName: BPJS Manpower
  x-parent: payroll-group
  description: |
    These endpoints let you manage BPJS Manpower features in the system.
    It allows you to retrieve BPJS Manpower configurations, calculate related contributions, and manage BPJS Manpower records.
- name: former-employee-income
  x-displayName: Former Employee Income
  x-parent: payroll-group
  description: |
    These endpoints let you manage former employee income features in the system.
    It allows you to retrieve former employee income configurations, calculate related contributions, and manage former employee income records.
- name: severance
  x-displayName: Severance
  x-parent: payroll-group
  description: |
    These endpoints let you manage severance features in the system.
    It allows you to retrieve severance configurations, calculate related contributions, and manage severance records.
- name: salary-payment
  x-displayName: Salary Payment
  x-parent: payroll-group
  description: |
    These endpoints let you manage salary payment features in the system.
    It allows you to process salary payments, retrieve payment records, and manage related configurations.
- name: loan
  x-displayName: Loan
  x-parent: payroll-group
  description: |
    These endpoints let you manage loan records, entries, and disbursements in the system.
- name: employee-payment-item-group-sequence
  x-displayName: Payment Item Group Sequence
  x-parent: payroll-group
  description: |
    These endpoints let you manage payment item group sequences for employees.
    It allows you to retrieve sequences related to payment item groups (or payroll processes).
    This is useful for payroll processing and ensuring accurate payment calculations.
    It is created after a payroll process is completed, and it is used to track the sequence of payment item groups 
    for each employee.
- name: payslip
  x-displayName: Payslip
  x-parent: payroll-group
  description: |
    These endpoints let you manage payslip features in the system.
    It allows you to generate, retrieve, and manage payslip records for employees.
- name: transition-calculation
  x-displayName: Transition Calculation
  x-parent: payroll-group
  description: |
    These endpoints let you manage transition calculations in the system.
    It allows you to perform transition calculations based on various parameters and settings.
- name: payroll-others
  x-displayName: Others
  x-parent: payroll-group
  description: |
    These endpoints let you manage other payroll-related features in the system.
    It allows you to retrieve, create, update, and delete various payroll records that do not fall under specific categories.
- name: payroll-process-snapshot
  x-displayName: Payroll Process Snapshot
  x-parent: payroll-group
  description: |
    These endpoints let you manage payroll process snapshots in the system.
    It allows you to retrieve, create, update, and delete payroll process snapshot records.
- name: time-management
  x-displayName: Time Management
  description: |
    These endpoints let you manage time management features in the system.
    It consists of various sub-modules related to attendance, shifts, workday configurations, and more.
- name: analytics-group
  x-displayName: Analytics
  description: |
    These endpoints let you manage analytics features in the system.
    It consists of various sub-modules related to data analysis, reporting, and visualization.
- name: analytics
  x-displayName: Analytics
  x-parent: analytics-group
  description: |
    These endpoints let you manage analytics features in the system.
    It consist of various sub-modules related to data analysis, reporting, and visualization.
- name: widgets
  x-displayName: Widgets
  x-parent: analytics-group
  description: |
    These endpoints let you manage widgets in the system.
    It allows you to retrieve, create, update, and delete widget records.
- name: workflow
  x-displayName: Custom Workflow
  description: |
    These endpoints let you manage custom workflows in the system.
- name: user
  x-displayName: User
  description: |
    These endpoints let you manage users in the system.
    It allows you to retrieve user information, roles, and permissions.
- name: role
  x-displayName: Role
  description: |
    These endpoints let you manage roles in the system.
- name: oauth
  x-displayName: OAuth
  description: |
    OAuth 2.0 token endpoint for authentication.
- name: oauth-client
  x-displayName: OAuth Client
  description: |
    These endpoints let you manage OAuth clients in the system.
- name: anomaly-detection
  x-displayName: Anomaly Detection
  description: |
    These endpoints let you manage anomaly detection features in the system.
      It allows you to retrieve and configure anomaly detection settings for various modules.
- name: benefit-management
  x-displayName: Benefit Management
  description: |
    These endpoints let you manage benefit management features in the system.
    It allows you to retrieve, create, update, and delete benefit management records.
paths:
  /core/v1/additional-assignments/approvals:
    get:
      tags:
      - employee
      summary: Get Additional Assignment Approvals
      description: Return the additional assignment approvals.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys          | Supported Operators | Notes                                                                                |
          |-------------------------|---------------------|--------------------------------------------------------------------------------------|
          | id                      | `:`                 | Equal operator                                                                       |
          | employee.id             | `:`                 | Equal operator                                                                       |
          | employee.name           | `:`                 | Like operator                                                                        |
          | approvalStatus          | `:`                 | Equal operator                                                                       |
          | additionalAssignment.id | `:`                 | Equal operator with multiple values. Each value should separated with delimiters `;` |
        schema:
          type: string
        examples:
          one:
            summary: Search by Additional Assignment Approval ID
            value: id:f47ac10b-58cc-4372-a567-0e02b2c3d479
          two:
            summary: Search by Employee ID
            value: employee.id:0ab1c2d3-e4f5-6789-0123-456789abcdef
          three:
            summary: Search additional assignment approvals by multiple Additional Assignment IDs
            value: id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          action:
                            type: string
                            enum:
                            - NONE
                            - ADD
                            - EDIT
                            - DELETE
                            - DELETE_ALL
                          approvalStatus:
                            type: string
                            enum:
                            - APPROVED
                            - REJECTED
                            - OPEN
                            - WAITING_FOR_APPROVAL
                          rejectionReason:
                            type: string
                          employmentStatusType:
                            type: object
                            properties:
                              id:
                                type: string
                              defaultData:
                                type: boolean
                              employmentStatusNumberType:
                                type: string
                                enum:
                                - PKWT_NUMBER
                                - EMPLOYMENT_STATUS_CHANGE_NUMBER
                              name:
                                type: string
                          employmentType:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              employmentGroupCode:
                                type: string
                              monthDuration:
                                type: integer
                              permanent:
                                type: boolean
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
                          effectiveDate:
                            type: string
                          endDate:
                            type: string
                          signDate:
                            type: string
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
                          organization:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              type:
                                type: string
                                enum:
                                - STRUCTURAL
                                - FUNCTIONAL
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              createdBy:
                                type: string
                              createdDate:
                                type: number
                              updatedBy:
                                type: string
                              updatedDate:
                                type: number
                              organizationHierarchy:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  color:
                                    type: string
                                  level:
                                    type: integer
                              organizationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              organizationParent:
                                type: object
                                deprecated: true
                                description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  type:
                                    type: string
                                    enum:
                                    - STRUCTURAL
                                    - FUNCTIONAL
                                  effectiveDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  endDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  createdBy:
                                    type: string
                                  createdDate:
                                    type: number
                                  updatedBy:
                                    type: string
                                  updatedDate:
                                    type: number
                                  organizationHierarchy:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      color:
                                        type: string
                                      level:
                                        type: integer
                                  organizationGroup:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  organizationParent:
                                    type: object
                                    description: Deprecated. Always null.
                                    deprecated: true
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          position:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              organization:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  type:
                                    type: string
                                    enum:
                                    - STRUCTURAL
                                    - FUNCTIONAL
                                  effectiveDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  endDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  createdBy:
                                    type: string
                                  createdDate:
                                    type: number
                                  updatedBy:
                                    type: string
                                  updatedDate:
                                    type: number
                                  organizationHierarchy:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      color:
                                        type: string
                                      level:
                                        type: integer
                                  organizationGroup:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  organizationParent:
                                    type: object
                                    deprecated: true
                                    description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      type:
                                        type: string
                                        enum:
                                        - STRUCTURAL
                                        - FUNCTIONAL
                                      effectiveDate:
                                        type: string
                                        format: date
                                        description: YYYY-MM-DD
                                      endDate:
                                        type: string
                                        format: date
                                        description: YYYY-MM-DD
                                      createdBy:
                                        type: string
                                      createdDate:
                                        type: number
                                      updatedBy:
                                        type: string
                                      updatedDate:
                                        type: number
                                      organizationHierarchy:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          color:
                                            type: string
                                          level:
                                            type: integer
                                      organizationGroup:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      organizationParent:
                                        type: object
                                        description: Deprecated. Always null.
                                        deprecated: true
                                      company:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                              assigned:
                                type: boolean
                              effectiveDate:
                                type: string
                              endDate:
                                type: string
                              maxEmployee:
                                type: integer
                          jobLevel:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              jobPosition:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              level:
                                type: number
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
                          jobTitle:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
                              minJobLevel:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  jobPosition:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  level:
                                    type: number
                                  effectiveDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                              maxJobLevel:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  jobPosition:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  level:
                                    type: number
                                  effectiveDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                          location:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              locationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              city:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                              latitude:
                                type: number
                                format: float
                              longitude:
                                type: number
                                format: float
                              headquarter:
                                type: boolean
                              address:
                                type: string
                              phone:
                                type: string
                              zipCode:
                                type: string
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD, effective date of the location
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD, end date of the location
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                  code:
                                    type: string
                                  name:
                                    type: string
                          costCenter:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                              code:
                                type: string
                              name:
                                type: string
                              description:
                                type: string
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                  code:
                                    type: string
                                  name:
                                    type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          subLocation:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              location:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  effectiveDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  endDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD or null when ongoing
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD or null when ongoing
                          operationalGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          additionalAssignment:
                            type: object
                            properties:
                              id:
                                type: string
                              employmentStatusType:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  defaultData:
                                    type: boolean
                                  employmentStatusNumberType:
                                    type: string
                                    enum:
                                    - PKWT_NUMBER
                                    - EMPLOYMENT_STATUS_CHANGE_NUMBER
                                  name:
                                    type: string
                              employmentType:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  name:
                                    type: string
                                  employmentGroupCode:
                                    type: string
                                  monthDuration:
                                    type: integer
                                  permanent:
                                    type: boolean
                                  effectiveDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                              effectiveDate:
                                type: string
                              endDate:
                                type: string
                              signDate:
                                type: string
                              createdBy:
                                type: string
                              createdDate:
                                type: number
                              updatedBy:
                                type: string
                              updatedDate:
                                type: number
                              organization:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  type:
                                    type: string
                                    enum:
                                    - STRUCTURAL
                                    - FUNCTIONAL
                                  effectiveDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  endDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  createdBy:
                                    type: string
                                  createdDate:
                                    type: number
                                  updatedBy:
                                    type: string
                                  updatedDate:
                                    type: number
                                  organizationHierarchy:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      color:
                                        type: string
                                      level:
                                        type: integer
                                  organizationGroup:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  organizationParent:
                                    type: object
                                    deprecated: true
                                    description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      type:
                                        type: string
                                        enum:
                                        - STRUCTURAL
                                        - FUNCTIONAL
                                      effectiveDate:
                                        type: string
                                        format: date
                                        description: YYYY-MM-DD
                                      endDate:
                                        type: string
                                        format: date
                                        description: YYYY-MM-DD
                                      createdBy:
                                        type: string
                                      createdDate:
                                        type: number
                                      updatedBy:
                                        type: string
                                      updatedDate:
                                        type: number
                                      organizationHierarchy:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          color:
                                            type: string
                                          level:
                                            type: integer
                                      organizationGroup:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      organizationParent:
                                        type: object
                                        description: Deprecated. Always null.
                                        deprecated: true
                                      company:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                              position:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  organization:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      type:
                                        type: string
                                        enum:
                                        - STRUCTURAL
                                        - FUNCTIONAL
                                      effectiveDate:
                                        type: string
                                        format: date
                                        description: YYYY-MM-DD
                                      endDate:
                                        type: string
                                        format: date
                                        description: YYYY-MM-DD
                                      createdBy:
                                        type: string
                                      createdDate:
                                        type: number
                                      updatedBy:
                                        type: string
                                      updatedDate:
                                        type: number
                                      organizationHierarchy:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          color:
                                            type: string
                                          level:
                                            type: integer
                                      organizationGroup:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      organizationParent:
                                        type: object
                                        deprecated: true
                                        description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          type:
                                            type: string
                                            enum:
                                            - STRUCTURAL
                                            - FUNCTIONAL
                                          effectiveDate:
                                            type: string
                                            format: date
                                            description: YYYY-MM-DD
                                          endDate:
                                            type: string
                                            format: date
                                            description: YYYY-MM-DD
                                          createdBy:
                                            type: string
                                          createdDate:
                                            type: number
                                          updatedBy:
                                            type: string
                                          updatedDate:
                                            type: number
                                          organizationHierarchy:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                              color:
                                                type: string
                                              level:
                                                type: integer
                                          organizationGroup:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                          organizationParent:
                                            type: object
                                            description: Deprecated. Always null.
                                            deprecated: true
                                          company:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                      company:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                  assigned:
                                    type: boolean
                                  effectiveDate:
                                    type: string
                                  endDate:
                                    type: string
                                  maxEmployee:
                                    type: integer
                              jobLevel:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  jobPosition:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  level:
                                    type: number
                                  effectiveDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                              jobTitle:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  name:
                                    type: string
                                  code:
                                    type: string
                                  effectiveDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                                  minJobLevel:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      jobPosition:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      level:
                                        type: number
                                      effectiveDate:
                                        type: string
                                        format: date
                                      endDate:
                                        type: string
                                        format: date
                                  maxJobLevel:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      jobPosition:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      level:
                                        type: number
                                      effectiveDate:
                                        type: string
                                        format: date
                                      endDate:
                                        type: string
                                        format: date
                              location:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  locationGroup:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  city:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      state:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          country:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                              callingCode:
                                                type: string
                                              taxTreaty:
                                                type: boolean
                                  latitude:
                                    type: number
                                    format: float
                                  longitude:
                                    type: number
                                    format: float
                                  headquarter:
                                    type: boolean
                                  address:
                                    type: string
                                  phone:
                                    type: string
                                  zipCode:
                                    type: string
                                  effectiveDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD, effective date of the location
                                  endDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD, end date of the location
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                        format: uuid
                                      code:
                                        type: string
                                      name:
                                        type: string
                              costCenter:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  description:
                                    type: string
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                        format: uuid
                                      code:
                                        type: string
                                      name:
                                        type: string
                              employee:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  identificationNumber:
                                    type: string
                                  name:
                                    type: string
                              subLocation:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  location:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      company:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      effectiveDate:
                                        type: string
                                        format: date
                                        description: YYYY-MM-DD
                                      endDate:
                                        type: string
                                        format: date
                                        description: YYYY-MM-DD or null when ongoing
                                  effectiveDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  endDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD or null when ongoing
                              operationalGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
              example:
                content:
                - id: f47ac10b-58cc-4372-a567-0e02b2c3d479
                  action: ADD
                  approvalStatus: WAITING_FOR_APPROVAL
                  rejectionReason: ''
                  employmentStatusType:
                    id: 123e4567-e89b-12d3-a456-426614174000
                    name: Active
                    employmentStatusNumberType: PKWT_NUMBER
                    defaultData: false
                  employmentType:
                    id: a1b2c3d4-e5f6-7890-1234-567890abcdef
                    name: Full-Time
                    employmentGroupCode: '001'
                    monthDuration: 12
                    permanent: true
                    effectiveDate: '2020-01-01'
                    endDate: '2025-01-01'
                  effectiveDate: '2024-08-01'
                  endDate: '1970-01-01'
                  signDate: '2024-07-20'
                  createdBy: system
                  createdDate: 1665455950038
                  updatedBy: system
                  updatedDate: 1665455950038
                  organization:
                    id: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
                    code: '002'
                    name: ICT
                    type: FUNCTIONAL
                    effectiveDate: '1970-01-01'
                    endDate: '1970-01-01'
                    createdBy: system
                    createdDate: 1481024187133
                    updatedBy: system
                    updatedDate: 1481024187133
                    organizationHierarchy:
                      id: a896d062-aba9-11e6-80f5-76304dec7eb7
                      code: '002'
                      name: Departemen
                      color: '#B7783A'
                      level: 2
                    organizationGroup:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: OG
                      name: Organization Group
                    organizationParent: {}
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                  position:
                    id: c4d5e6f7-a8b9-0123-4567-890123def012
                    code: SSE-001
                    name: Senior Software Engineer
                  jobLevel:
                    id: c3d4e5f6-a7b8-9012-3456-789012cdef01
                    name: Level 2
                    code: L2
                    level: 2
                    effectiveDate: '2020-01-01'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: j5e6f7a8-b9c0-1234-5678-901234def012
                      code: SENIOR
                      name: Senior Position
                  jobTitle:
                    id: d4e5f6a7-b8c9-0123-4567-890123def012
                    name: Software Engineer
                    code: SE
                    effectiveDate: '2020-01-01'
                    endDate: '9999-12-31'
                    minJobLevel:
                      id: m6f7a8b9-c0d1-2345-6789-012345ef0123
                      code: L1
                      name: Level 1
                      level: 1
                      effectiveDate: '2020-01-01'
                      endDate: '9999-12-31'
                      jobPosition:
                        id: j7a8b9c0-d1e2-3456-7890-123456ef0123
                        code: JUNIOR
                        name: Junior Position
                    maxJobLevel:
                      id: x8a9b0c1-d2e3-4567-8901-234567ef0123
                      code: L3
                      name: Level 3
                      level: 3
                      effectiveDate: '2020-01-01'
                      endDate: '9999-12-31'
                      jobPosition:
                        id: j9b0c1d2-e3f4-5678-9012-345678ef0123
                        code: LEAD
                        name: Lead Position
                  location:
                    id: e5f6a7b8-c9d0-1234-5678-901234ef0123
                    name: Headquarters
                    code: HQ
                    latitude: -6.1754
                    longitude: 106.8272
                    headquarter: true
                    address: Jl. Jend. Sudirman No. 1
                    zipCode: '10220'
                    phone: '+62213456789'
                    city:
                      id: ci8b9c0d1-e2f3-4567-8901-234567ef0123
                      code: JKT
                      name: Jakarta
                      state:
                        id: st9c0d1e2-f3a4-5678-9012-345678ef0123
                        code: ID-JK
                        name: Jakarta
                        country:
                          id: co0d1e2f3-a4b5-6789-0123-456789ef0123
                          code: ID
                          name: Indonesia
                          callingCode: '+62'
                          taxTreaty: false
                    locationGroup:
                      id: lg1e2f3a4-b5c6-7890-1234-567890ef0123
                      code: MAIN
                      name: Main Offices
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                    effectiveDate: '2023-01-01'
                    endDate: '9999-12-31'
                  costCenter:
                    id: f6e7d8c9-ba09-1234-5678-901234567890
                    code: TECH-CC-001
                    name: Technology Cost Center
                    description: Cost center for technology department
                  employee:
                    id: 0ab1c2d3-e4f5-6789-0123-456789abcdef
                    identificationNumber: JD2024001
                    name: John Doe
                  subLocation:
                    id: sl2f3a4b5-c6d7-8901-2345-678901ef0123
                    code: 4FL
                    name: 4th Floor
                    location:
                      id: e5f6a7b8-c9d0-1234-5678-901234ef0123
                      name: Headquarters
                      code: HQ
                      company:
                        id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                        code: COMP-001
                        name: PT. CATAPA
                      effectiveDate: '2022-01-01'
                      endDate: '9999-12-31'
                    effectiveDate: '2022-01-01'
                    endDate: '9999-12-31'
                  operationalGroup:
                    id: 1a2b3c4d-5e6f-7890-abcd-ef0123456789
                    code: ENG-TEAM-A
                    name: Engineering Team A
                  additionalAssignment:
                    id: f47ac10b-58cc-4372-a567-0e02b2c3d480
                totalPages: 11
                last: false
                totalElements: 11
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 1
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/additional-assignments/approvals?page=0&size=10&query=id%3Af47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.additional_assignments.approvals.list(\n    page=0, size=10, query=\"id:f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/additional-income-payments:
    get:
      deprecated: true
      tags:
      - payroll-others
      summary: Get Additional Income Payments
      description: |
        ### Search Query
        | Supported Keys | Supported Operators |Notes                                                      |
        | -------------- | ------------------- |---------------------------------------------------------- |
        | paymentDate    | :<br>><br><         |Equal<br>Greater than or equal to<br>Less than or equal to |
        | payment.process    | :     |Equal<br>Boolean
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          employeeId:
                            type: string
                          paymentDate:
                            type: string
              example:
                content:
                - employeeId: string
                  paymentDate: string
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/additional-income-payments\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.additional_income_payments.list()"
  /core/v1/analytics/charts:
    get:
      tags:
      - analytics
      summary: Get Analytics Chart Data
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes         |
        |----------------|---------------------|---------------|
        | title          | :                   | Like operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          title:
                            type: string
                          size:
                            type: number
                          options:
                            type: string
                          chartType:
                            type: string
                          aggregationType:
                            type: string
                          tableId:
                            type: string
                          yaxisTitle:
                            type: string
                          ycolumnId:
                            type: string
                          ychartTableRelations:
                            type: array
                            items:
                              type: object
                              properties:
                                chartTableRelationId:
                                  type: string
                                sequence:
                                  type: number
                          xaxisTitle:
                            type: string
                          xcolumnId:
                            type: string
                          xchartTableRelations:
                            type: array
                            items:
                              type: object
                              properties:
                                chartTableRelationId:
                                  type: string
                                sequence:
                                  type: number
                          seriesAxisTitle:
                            type: string
                          seriesColumnId:
                            type: string
                          seriesChartTableRelations:
                            type: array
                            items:
                              type: object
                              properties:
                                chartTableRelationId:
                                  type: string
                                sequence:
                                  type: number
                          colorScheme:
                            type: object
                            properties:
                              id:
                                type: string
                              colorSchemeDetails:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    hexColor:
                                      type: string
                                    sequence:
                                      type: number
                          dataTrusteeEnabled:
                            type: boolean
                          chartFilters:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                chartFilterType:
                                  type: string
                                column:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    createdBy:
                                      type: string
                                    createdDate:
                                      type: number
                                    updatedBy:
                                      type: string
                                    updatedDate:
                                      type: number
                                    name:
                                      type: string
                                    type:
                                      type: string
                                values:
                                  type: array
                                  items:
                                    type: string
                                startDate:
                                  type: string
                                endDate:
                                  type: string
                                timeFrame:
                                  type: string
                                timeUnit:
                                  type: string
                                duration:
                                  type: number
                          maxItems:
                            type: number
                          sortType:
                            type: string
              example:
                content:
                - id: ff6ba12f-adc2-4d9e-910c-9a9a91b062b9
                  title: Gender Distribution
                  size: 1
                  options: options
                  chartType: BAR_VERTICAL_GROUPED_CHART
                  aggregationType: COUNT
                  tableId: 1800f417-e4cb-4a0b-bb22-0913371158fd
                  yaxisTitle: Count Employee
                  ycolumnId: 35e73525-5438-4682-92dd-d5d74f1fd43a
                  ychartTableRelations:
                  - chartTableRelationId: 35e73525-5438-4682-92dd-d5d74f1fd43a
                    sequence: 1
                  xaxisTitle: Gender
                  xcolumnId: c905ab74-188b-40ec-bbba-42cd3e8faed9
                  xchartTableRelations:
                  - chartTableRelationId: 35e73525-5438-4682-92dd-d5d74f1fd43a
                    sequence: 1
                  seriesAxisTitle: ''
                  seriesColumnId: ''
                  seriesChartTableRelations:
                  - chartTableRelationId: 35e73525-5438-4682-92dd-d5d74f1fd43a
                    sequence: 1
                  colorScheme:
                    id: c905ab74-188b-40ec-bbba-42cd3e8faed9
                  chartFilters:
                  - chartFilterType: DYNAMIC
                    duration: 3
                    timeUnit: MONTH
                    timeFrame: LAST
                    startDate: '2022-01-01'
                    endDate: '2022-03-01'
                    analyticsColumn:
                      id: d905ab74-188b-40ec-bbba-42cd3e8faed9
                      name: Payment Date
                      type: LOCAL_DATE
                  - chartFilterType: RANGE
                    startDate: '2022-01-01'
                    endDate: '2022-03-01'
                    analyticsColumn:
                      id: a905ab74-188b-40ec-bbba-42cd3e8faed9
                      name: Effective Date
                      type: LOCAL_DATE
                  - chartFilterType: VALUE
                    values:
                    - ATTENDANCE_PENALTY
                    analyticsColumn:
                      id: a115ab74-188b-40ec-bbba-42cd3e8faed9
                      name: Salary Item Type
                      type: ENUM
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort:
                - direction: ASC
                  property: title
                first: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/analytics/charts\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.analytics.charts.list()"
    post:
      tags:
      - analytics
      summary: Create Analytics Chart
      description: Create a new analytics chart with the given configuration.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  title:
                    type: string
                  size:
                    type: number
                  options:
                    type: string
                  chartType:
                    type: string
                  aggregationType:
                    type: string
                  tableId:
                    type: string
                  yaxisTitle:
                    type: string
                  ycolumnId:
                    type: string
                  ychartTableRelations:
                    type: array
                    items:
                      type: object
                      properties:
                        chartTableRelationId:
                          type: string
                        sequence:
                          type: number
                  xaxisTitle:
                    type: string
                  xcolumnId:
                    type: string
                  xchartTableRelations:
                    type: array
                    items:
                      type: object
                      properties:
                        chartTableRelationId:
                          type: string
                        sequence:
                          type: number
                  seriesAxisTitle:
                    type: string
                  seriesColumnId:
                    type: string
                  seriesChartTableRelations:
                    type: array
                    items:
                      type: object
                      properties:
                        chartTableRelationId:
                          type: string
                        sequence:
                          type: number
                  colorScheme:
                    type: object
                    properties:
                      id:
                        type: string
                      colorSchemeDetails:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            hexColor:
                              type: string
                            sequence:
                              type: number
                  dataTrusteeEnabled:
                    type: boolean
                  chartFilters:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        chartFilterType:
                          type: string
                        column:
                          type: object
                          properties:
                            id:
                              type: string
                            createdBy:
                              type: string
                            createdDate:
                              type: number
                            updatedBy:
                              type: string
                            updatedDate:
                              type: number
                            name:
                              type: string
                            type:
                              type: string
                        values:
                          type: array
                          items:
                            type: string
                        startDate:
                          type: string
                        endDate:
                          type: string
                        timeFrame:
                          type: string
                        timeUnit:
                          type: string
                        duration:
                          type: number
                  maxItems:
                    type: number
                  sortType:
                    type: string
              example:
                title: Gender Distribution
                size: 1
                options: options
                chartType: BAR_VERTICAL_GROUPED_CHART
                aggregationType: COUNT
                tableId: 1800f417-e4cb-4a0b-bb22-0913371158fd
                yaxisTitle: Count Employee
                ycolumnId: 35e73525-5438-4682-92dd-d5d74f1fd43a
                ychartTableRelations:
                - chartTableRelationId: a4b139f7-4841-476c-ad4f-fcea3cf32141
                  sequence: 1
                xaxisTitle: Gender
                xcolumnId: c905ab74-188b-40ec-bbba-42cd3e8faed9
                xchartTableRelations:
                - chartTableRelationId: a4b139f7-4841-476c-ad4f-fcea3cf32141
                  sequence: 1
                seriesAxisTitle: ''
                seriesColumnId: ''
                colorScheme:
                  id: c905ab74-188b-40ec-bbba-42cd3e8faed9
                  colorSchemeDetails:
                  - id: c905ab74-188b-40ec-bbba-42cd3e8faed9
                    hexColor: '#000000'
                    sequence: 1
                dataTrusteeEnabled: false
                maxItems: 10
                sortType: ALPHABETICAL_ASC
                chartFilters:
                - chartFilterType: DYNAMIC
                  duration: 3
                  timeUnit: MONTH
                  timeFrame: LAST
                  startDate: '2022-01-01'
                  endDate: '2022-03-01'
                  analyticsColumn:
                    id: d905ab74-188b-40ec-bbba-42cd3e8faed9
                    name: Payment Date
                    type: LOCAL_DATE
                - chartFilterType: RANGE
                  startDate: '2022-01-01'
                  endDate: '2022-03-01'
                  analyticsColumn:
                    id: a905ab74-188b-40ec-bbba-42cd3e8faed9
                    name: Effective Date
                    type: LOCAL_DATE
                - chartFilterType: VALUE
                  values:
                  - ATTENDANCE_PENALTY
                  analyticsColumn:
                    id: a115ab74-188b-40ec-bbba-42cd3e8faed9
                    name: Salary Item Type
                    type: ENUM
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                size:
                  type: number
                options:
                  type: string
                chartType:
                  type: string
                aggregationType:
                  type: string
                tableId:
                  type: string
                yaxisTitle:
                  type: string
                ycolumnId:
                  type: string
                ychartTableRelations:
                  type: array
                  items:
                    type: object
                    properties:
                      chartTableRelationId:
                        type: string
                      sequence:
                        type: number
                xaxisTitle:
                  type: string
                xcolumnId:
                  type: string
                xchartTableRelations:
                  type: array
                  items:
                    type: object
                    properties:
                      chartTableRelationId:
                        type: string
                      sequence:
                        type: number
                seriesAxisTitle:
                  type: string
                seriesColumnId:
                  type: string
                seriesChartTableRelations:
                  type: array
                  items:
                    type: object
                    properties:
                      chartTableRelationId:
                        type: string
                      sequence:
                        type: number
                colorScheme:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                dataTrusteeEnabled:
                  type: boolean
                chartFilters:
                  type: array
                  items:
                    type: object
                    properties:
                      columnId:
                        type: string
                      chartFilterType:
                        type: string
                      chartValueCollectionFilters:
                        type: array
                        items:
                          type: object
                          properties:
                            value:
                              type: string
                      startDate:
                        type: string
                      endDate:
                        type: string
                      timeFrame:
                        type: string
                      timeUnit:
                        type: string
                      duration:
                        type: number
                maxItems:
                  type: number
                sortType:
                  type: string
              required:
              - title
              - size
              - chartType
              - aggregationType
              - tableId
              - yaxisTitle
              - ycolumnId
              - ychartTableRelations
              - xaxisTitle
              - xcolumnId
              - xchartTableRelations
              - colorScheme
              - maxItems
              - sortType
            example:
              title: Gender Distribution
              size: 1
              options: options
              chartType: BAR_VERTICAL_GROUPED_CHART
              aggregationType: COUNT
              tableId: 1800f417-e4cb-4a0b-bb22-0913371158fd
              yaxisTitle: Count Employee
              ycolumnId: 35e73525-5438-4682-92dd-d5d74f1fd43a
              ychartTableRelations:
              - chartTableRelationId: a4b139f7-4841-476c-ad4f-fcea3cf32141
                sequence: 1
              xaxisTitle: Gender
              xcolumnId: c905ab74-188b-40ec-bbba-42cd3e8faed9
              xchartTableRelations:
              - chartTableRelationId: c3790cc2-2a20-43a4-852a-9b06adae29a7
                sequence: 1
              seriesAxisTitle: ''
              seriesColumnId: ''
              seriesChartTableRelations:
              - chartTableRelationId: ce1a6866-69be-480c-964d-29fc09548e1e
                sequence: 1
              colorScheme:
                id: c905ab74-188b-40ec-bbba-42cd3e8faed9
              dataTrusteeEnabled: true
              maxItems: 10
              sortType: ALPHABETICAL_ASC
              chartFilters:
              - chartFilterType: DYNAMIC
                duration: 3
                timeUnit: MONTH
                timeFrame: LAST
                analyticsColumnId: d905ab74-188b-40ec-bbba-42cd3e8faed9
              - chartFilterType: RANGE
                startDate: '2022-01-01'
                endDate: '2022-03-01'
                analyticsColumnId: a905ab74-188b-40ec-bbba-42cd3e8faed9
              - chartFilterType: VALUE
                values:
                - ATTENDANCE_PENALTY
                analyticsColumnId: a115ab74-188b-40ec-bbba-42cd3e8faed9
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/analytics/charts\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"title\": \"Gender Distribution\",\n  \"size\": 1,\n  \"options\": \"options\",\n  \"chartType\": \"BAR_VERTICAL_GROUPED_CHART\",\n  \"aggregationType\": \"COUNT\",\n  \"tableId\": \"1800f417-e4cb-4a0b-bb22-0913371158fd\",\n  \"yaxisTitle\": \"Count Employee\",\n  \"ycolumnId\": \"35e73525-5438-4682-92dd-d5d74f1fd43a\",\n  \"ychartTableRelations\": [\n    {\n      \"chartTableRelationId\": \"a4b139f7-4841-476c-ad4f-fcea3cf32141\",\n      \"sequence\": 1\n    }\n  ],\n  \"xaxisTitle\": \"Gender\",\n  \"xcolumnId\": \"c905ab74-188b-40ec-bbba-42cd3e8faed9\",\n  \"xchartTableRelations\": [\n    {\n      \"chartTableRelationId\": \"c3790cc2-2a20-43a4-852a-9b06adae29a7\",\n      \"sequence\": 1\n    }\n  ],\n  \"seriesAxisTitle\": \"\",\n  \"seriesColumnId\": \"\",\n  \"seriesChartTableRelations\": [\n    {\n      \"chartTableRelationId\": \"ce1a6866-69be-480c-964d-29fc09548e1e\",\n      \"sequence\": 1\n    }\n  ],\n  \"colorScheme\": {\n    \"id\": \"c905ab74-188b-40ec-bbba-42cd3e8faed9\"\n  },\n  \"dataTrusteeEnabled\": true,\n  \"chartFilters\": [\n    {\n      \"chartFilterType\": \"DYNAMIC\",\n      \"duration\": 3,\n      \"timeUnit\": \"MONTH\",\n      \"timeFrame\": \"LAST\",\n      \"analyticsColumnId\": \"d905ab74-188b-40ec-bbba-42cd3e8faed9\"\n    },\n    {\n      \"chartFilterType\": \"RANGE\",\n      \"startDate\": \"2022-01-01\",\n      \"endDate\": \"2022-03-01\",\n      \"analyticsColumnId\": \"a905ab74-188b-40ec-bbba-42cd3e8faed9\"\n    },\n    {\n      \"chartFilterType\": \"VALUE\",\n      \"values\": [\n        \"ATTENDANCE_PENALTY\"\n      ],\n      \"analyticsColumnId\": \"a115ab74-188b-40ec-bbba-42cd3e8faed9\"\n    }\n  ],\n  \"maxItems\": 10,\n  \"sortType\": \"ALPHABETICAL_ASC\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import AnalyticsChartRequest, IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.analytics.charts.create(\n    analytics_chart_request=AnalyticsChartRequest(\n        title=\"Gender Distribution\",\n        size=1,\n        options=\"options\",\n        chart_type=\"BAR_VERTICAL_GROUPED_CHART\",\n        aggregation_type=\"COUNT\",\n        table_id=\"1800f417-e4cb-4a0b-bb22-0913371158fd\",\n        yaxis_title=\"Count Employee\",\n        ycolumn_id=\"35e73525-5438-4682-92dd-d5d74f1fd43a\",\n        ychart_table_relations=[\n            {\n                \"chartTableRelationId\": \"a4b139f7-4841-476c-ad4f-fcea3cf32141\",\n                \"sequence\": 1,\n            }\n        ],\n        xaxis_title=\"Gender\",\n        xcolumn_id=\"c905ab74-188b-40ec-bbba-42cd3e8faed9\",\n        xchart_table_relations=[\n            {\n                \"chartTableRelationId\": \"c3790cc2-2a20-43a4-852a-9b06adae29a7\",\n                \"sequence\": 1,\n            }\n        ],\n        series_axis_title=\"\",\n        series_column_id=\"\",\n        series_chart_table_relations=[\n            {\n                \"chartTableRelationId\": \"ce1a6866-69be-480c-964d-29fc09548e1e\",\n                \"sequence\": 1,\n            }\n        ],\n        color_scheme=IdRequest(id=\"c905ab74-188b-40ec-bbba-42cd3e8faed9\"),\n        data_trustee_enabled=True,\n        chart_filters=[\n            {\n                \"chartFilterType\": \"DYNAMIC\",\n                \"duration\": 3,\n                \"timeUnit\": \"MONTH\",\n                \"timeFrame\": \"LAST\",\n                \"analyticsColumnId\": \"d905ab74-188b-40ec-bbba-42cd3e8faed9\",\n            },\n            {\n                \"chartFilterType\": \"RANGE\",\n                \"startDate\": \"2022-01-01\",\n                \"endDate\": \"2022-03-01\",\n                \"analyticsColumnId\": \"a905ab74-188b-40ec-bbba-42cd3e8faed9\",\n            },\n            {\n                \"chartFilterType\": \"VALUE\",\n                \"values\": [\"ATTENDANCE_PENALTY\"],\n                \"analyticsColumnId\": \"a115ab74-188b-40ec-bbba-42cd3e8faed9\",\n            },\n        ],\n        max_items=10,\n        sort_type=\"ALPHABETICAL_ASC\",\n    )\n)"
  /core/v1/users:
    get:
      tags:
      - user
      summary: Get Users
      description: Return the users.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys           | Supported Operators | Notes                                                                                     |
          |--------------------------|---------------------|-------------------------------------------------------------------------------------------|
          | usernameIn               | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | emailIn                  | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
        schema:
          type: string
        examples:
          one:
            summary: Search user by username
            value: usernameIn:pros;senior;gamer
          two:
            summary: Search user by email
            value: emailIn:user1@example.com;user2@example.com
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Unique identifier of the user
                          username:
                            type: string
                            description: Username of the user
                          email:
                            type: string
                            description: Email address of the user
                          employee:
                            allOf:
                            - type: object
                              properties:
                                id:
                                  type: string
                                identificationNumber:
                                  type: string
                                name:
                                  type: string
                                joinDate:
                                  type: string
                                  format: date
                                  description: YYYY-MM-DD
                                startDate:
                                  type: string
                                  format: date
                                  description: YYYY-MM-DD
                                active:
                                  type: boolean
                                pointOfHire:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    locationGroup:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                    city:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                        state:
                                          type: object
                                          properties:
                                            id:
                                              type: string
                                            code:
                                              type: string
                                            name:
                                              type: string
                                            country:
                                              type: object
                                              properties:
                                                id:
                                                  type: string
                                                code:
                                                  type: string
                                                name:
                                                  type: string
                                                callingCode:
                                                  type: string
                                                taxTreaty:
                                                  type: boolean
                                    latitude:
                                      type: number
                                    longitude:
                                      type: number
                                    address:
                                      type: string
                                    phone:
                                      type: string
                                    zipCode:
                                      type: string
                                    headquarter:
                                      type: boolean
                                    company:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                photo:
                                  type: object
                                  properties:
                                    url:
                                      type: string
                                manager:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    identificationNumber:
                                      type: string
                                    name:
                                      type: string
                                    joinDate:
                                      type: string
                                      format: date
                                      description: YYYY-MM-DD
                                    startDate:
                                      type: string
                                      format: date
                                      description: YYYY-MM-DD
                                    active:
                                      type: boolean
                                    pointOfHire:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                        locationGroup:
                                          type: object
                                          properties:
                                            id:
                                              type: string
                                            code:
                                              type: string
                                            name:
                                              type: string
                                        city:
                                          type: object
                                          properties:
                                            id:
                                              type: string
                                            code:
                                              type: string
                                            name:
                                              type: string
                                            state:
                                              type: object
                                              properties:
                                                id:
                                                  type: string
                                                code:
                                                  type: string
                                                name:
                                                  type: string
                                                country:
                                                  type: object
                                                  properties:
                                                    id:
                                                      type: string
                                                    code:
                                                      type: string
                                                    name:
                                                      type: string
                                                    callingCode:
                                                      type: string
                                                    taxTreaty:
                                                      type: boolean
                                        latitude:
                                          type: number
                                        longitude:
                                          type: number
                                        address:
                                          type: string
                                        phone:
                                          type: string
                                        zipCode:
                                          type: string
                                        headquarter:
                                          type: boolean
                                        company:
                                          type: object
                                          properties:
                                            id:
                                              type: string
                                            code:
                                              type: string
                                            name:
                                              type: string
                                    photo:
                                      type: object
                                      properties:
                                        url:
                                          type: string
                            description: Employee information associated with the user
                      description: List of users
              example:
                content:
                - id: ccc1c86e-eba5-414a-98f6-58e6db7d61a9
                  username: david
                  email: david@example.com
                  employee:
                    id: eb5269ef-3e7b-4d79-8d30-a04a64b9bfc1
                    identificationNumber: ABC-FTUY
                    name: name
                    joinDate: '2019-01-01'
                    startDate: '2025-07-01'
                    active: true
                    pointOfHire:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: SDT
                      name: Sopo Del Tower
                      locationGroup:
                        id: 81d5f69a-a5a4-1111-80f5-76304dec7eb7
                        code: LG-001
                        name: Location Group Name
                      city:
                        id: 2d1ea6bc-a6ea-11e6-80f5-76304dec7eb7
                        code: '31.74'
                        name: Kota Adm. Jakarta Selatan
                        state:
                          id: 71f59dbe-a699-11e6-80f5-76304dec7eb7
                          name: Jakarta Special Capital Region
                          code: '31'
                          country:
                            id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                            code: IDN
                            callingCode: '+62'
                            name: Indonesia
                            taxTreaty: false
                      latitude: -6.23086
                      longitude: 106.82403
                      address: Sopo Del Office Tower and Lifestyle, Jl. Mega Kuningan Barat III No.RT.5, RT.3/RW.2, Kuningan, Karet Kuningan, Setia Budi, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12950, Indonesia
                      phone: +62 2112345678
                      zipCode: '11410'
                      headquarter: false
                      company:
                        id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                        code: COMP-001
                        name: PT. CATAPA
                    photo:
                      url: https://example.com/photo.jpg
                    manager:
                      id: 0100902f-5d8f-4de4-8fae-5ced86831dd1
                      identificationNumber: MGR-001
                      name: Jane Smith
                      joinDate: '2020-01-01'
                      startDate: '2020-01-01'
                      active: true
                - id: 06b474c6-48ea-4e9f-a627-3b530c68e3cf
                  username: test123999
                  email: test123999@example.com
                  employee:
                    id: cc5c2323-70e1-4e06-b267-66727f7edf88
                    identificationNumber: Test BPJS Wage 5
                    name: Test BPJS Wage 5
                    joinDate: '2025-01-01'
                    startDate: '2025-01-01'
                    active: true
                    pointOfHire:
                      id: 0f2e5cda-78c3-4157-b20a-03b213d6b4dd
                      code: '099'
                      name: '0993'
                      locationGroup:
                        id: 81d5f69a-a5a4-1111-80f5-76304dec7eb7
                        code: LG-001
                        name: Location Group Name
                      city:
                        id: 9d320fbb-2a80-41ad-82c6-057f49115753
                        code: '31.70'
                        name: Jakarta
                        state:
                          id: 71f59dbe-a699-11e6-80f5-76304dec7eb7
                          name: Jakarta Special Capital Region
                          code: '31'
                          country:
                            id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                            code: IDN
                            callingCode: '+62'
                            name: Indonesia
                            taxTreaty: false
                      latitude: -6.21109
                      longitude: 106.84217
                      address: 4, Jl. Menteng Wadas Timur No.5g, RW.7, Kuningan, Ps. Manggis, Kecamatan Setiabudi, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12970, Indonesia
                      phone: ''
                      zipCode: '12333'
                      headquarter: true
                      company:
                        id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                        code: COMP-001
                        name: PT. CATAPA
                    photo:
                      url: https://example.com/photo.jpg
                    manager:
                      id: 0100902f-5d8f-4de4-8fae-5ced86831dd1
                      identificationNumber: MGR-001
                      name: Jane Smith
                      joinDate: '2020-01-01'
                      startDate: '2020-01-01'
                      active: true
                totalPages: 462
                last: false
                totalElements: 4615
                numberOfElements: 10
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/users?page=0&size=10&query=usernameIn%3Apros%3Bsenior%3Bgamer\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.users.list(page=0, size=10, query=\"usernameIn:pros;senior;gamer\")"
  /core/v1/users/me/analytics/charts/{id}/data:
    get:
      tags:
      - analytics
      summary: Get Analytics Data by Chart Id and Current User
      description: Get Analytics Data by Chart ID and Current User
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: c905ab74-188b-40ec-bbba-42cd3e8faed9
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  title:
                    type: string
                    description: Title of the analytics chart
                  size:
                    type: number
                    description: Size of the chart
                  options:
                    type: string
                    description: Additional chart options
                  chartType:
                    type: string
                    description: Type of the chart (e.g., BAR_VERTICAL_GROUPED_CHART)
                  yaxisTitle:
                    type: string
                    description: Title for Y-axis
                  ycolumnType:
                    type: string
                    description: Data type of Y-axis column
                  xaxisTitle:
                    type: string
                    description: Title for X-axis
                  xcolumnType:
                    type: string
                    description: Data type of X-axis column
                  seriesAxisTitle:
                    type: string
                    description: Title for series axis
                  seriesColumnType:
                    type: string
                    description: Data type of series column
                  categories:
                    type: array
                    items:
                      type: string
                    description: Chart categories
                  series:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Series name
                        data:
                          type: array
                          items:
                            type: number
                          description: Series data points
                    description: Chart series data
                  colorScheme:
                    type: object
                    properties:
                      id:
                        type: string
                      colorSchemeDetails:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            hexColor:
                              type: string
                            sequence:
                              type: number
                  chartFilters:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        chartFilterType:
                          type: string
                        column:
                          type: object
                          properties:
                            id:
                              type: string
                            createdBy:
                              type: string
                            createdDate:
                              type: number
                            updatedBy:
                              type: string
                            updatedDate:
                              type: number
                            name:
                              type: string
                            type:
                              type: string
                        values:
                          type: array
                          items:
                            type: string
                        startDate:
                          type: string
                        endDate:
                          type: string
                        timeFrame:
                          type: string
                        timeUnit:
                          type: string
                        duration:
                          type: number
                    description: Chart filter configurations
              example:
                chartType: BAR_VERTICAL_GROUPED_CHART
                title: Gaji Tertinggi
                size: 2
                xaxisTitle: Job Title
                xcolumnType: STRING
                yaxisTitle: Amount
                ycolumnType: BIG_DECIMAL
                seriesAxisTitle: Salary Item Name
                seriesColumnType: STRING
                colorScheme:
                  id: c905ab74-188b-40ec-bbba-42cd3e8faed9
                  colorSchemeDetails:
                  - id: d905ab74-188b-40ec-bbba-42cd3e8faed9
                    hexColor: '#FF0000'
                    sequence: 1
                  - id: e905ab74-188b-40ec-bbba-42cd3e8faed9
                    hexColor: '#00FF00'
                    sequence: 2
                  - id: f905ab74-188b-40ec-bbba-42cd3e8faed9
                    hexColor: '#0000FF'
                    sequence: 3
                categories:
                - Sales Manager
                - Sales Representative
                - Inside Sales Coordinator
                series:
                - name: Gaji Pokok
                  data:
                  - 1000000
                  - 500000
                  - 300000
                - name: Tunjangan Jabatan
                  data:
                  - 100000
                  - 50000
                  - 30000
                - name: Tunjangan Makan
                  data:
                  - 10000
                  - 5000
                  - 3000
                chartFilters:
                - chartFilterType: DYNAMIC
                  duration: 3
                  timeUnit: MONTH
                  timeFrame: LAST
                  startDate: '2022-01-01'
                  endDate: '2022-03-01'
                  analyticsColumn:
                    id: d905ab74-188b-40ec-bbba-42cd3e8faed9
                    name: Payment Date
                    type: LOCAL_DATE
                - chartFilterType: RANGE
                  startDate: '2022-01-01'
                  endDate: '2022-03-01'
                  analyticsColumn:
                    id: a905ab74-188b-40ec-bbba-42cd3e8faed9
                    name: Effective Date
                    type: LOCAL_DATE
                - chartFilterType: VALUE
                  values:
                  - ATTENDANCE_PENALTY
                  analyticsColumn:
                    id: a115ab74-188b-40ec-bbba-42cd3e8faed9
                    name: Salary Item Type
                    type: ENUM
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/users/me/analytics/charts/c905ab74-188b-40ec-bbba-42cd3e8faed9/data\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.users.me.analytics.charts.data.list(\n    id=\"c905ab74-188b-40ec-bbba-42cd3e8faed9\"\n)"
  /core/v1/users/me/widgets:
    get:
      tags:
      - widgets
      summary: Get Widgets by Current User
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes         |
        |----------------|---------------------|---------------|
        | widgetType          | :                   | Equal operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Unique identifier for the widget
                          position:
                            type: number
                            description: Position of the widget in the layout
                          widgetType:
                            type: string
                            description: Type of the widget
                          content:
                            allOf:
                            - type: object
                              properties:
                                id:
                                  type: string
                                  description: Content identifier
                                title:
                                  type: string
                                  description: Content title
                                size:
                                  type: number
                                  description: Content size
                            description: Widget content details
                      description: List of widgets
              example:
                content:
                - id: ff6ba12f-adc2-4d9e-910c-9a9a91b062b9
                  position: 5
                  widgetType: CHART
                  content:
                    id: '1'
                    title: Chart
                    size: 2
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/users/me/widgets\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.users.me.widgets.list()"
  /core/v1/banks:
    get:
      tags:
      - master-data
      summary: Get Banks
      description: Return the banks.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                          code:
                            type: string
                            example: '014'
                          name:
                            type: string
                            example: BCA
                          llg:
                            type: string
                            example: '146789'
              example:
                content:
                - id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  code: '014'
                  name: BANK BCA
                  llg: '140397'
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/banks\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.banks.list()"
  /core/v1/bank-branches:
    get:
      tags:
      - master-data
      summary: Get Bank Branches
      description: |
        ### Search Query
        | Supported Keys     | Supported Operators | Notes                                                                                    |
        |--------------------|---------------------|------------------------------------------------------------------------------------------|
        | id                 | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter|
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                          name:
                            type: string
                            example: BCA Wisma Asia
                          code:
                            type: string
                            example: BCA01
                          address:
                            type: string
                            example: BCA01
                          bank:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                              code:
                                type: string
                                example: '014'
                              name:
                                type: string
                                example: BCA
                              llg:
                                type: string
                                example: '146789'
              example:
                content:
                - id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                  code: BCA01
                  name: BCA Wisma Asia
                  address: Wisma Asia
                  bank:
                    id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code: '014'
                    name: BCA
                    llg: '146789'
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bank-branches\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bank_branches.list()"
  /core/v1/bank-account-configurations:
    get:
      tags:
      - bank-account-configuration
      summary: Get Bank Account Configurations
      description: Get all bank account configurations with pagination
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys  | Supported Operators | Notes                                                                                     |
          |-----------------|---------------------|-------------------------------------------------------------------------------------------|
          | id              | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | employee.id     | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
        schema:
          type: string
        example: employee.id:62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                              active:
                                type: boolean
                          paymentMethod:
                            type: string
                            enum:
                            - CASH
                            - TRANSFER
                            - NONE
                          updatedDate:
                            type: integer
                            format: timestamp in milliseconds
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          distributionMethod:
                            type: string
                          defaultBankAccount:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                              bankId:
                                type: string
                              bank:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                    example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                  code:
                                    type: string
                                    example: '014'
                                  name:
                                    type: string
                                    example: BCA
                                  llg:
                                    type: string
                                    example: '146789'
                              bankBranchId:
                                type: string
                              bankBranch:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                    example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                                  name:
                                    type: string
                                    example: BCA Wisma Asia
                                  code:
                                    type: string
                                    example: BCA01
                                  address:
                                    type: string
                                    example: BCA01
                                  bank:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                        format: uuid
                                        example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                      code:
                                        type: string
                                        example: '014'
                                      name:
                                        type: string
                                        example: BCA
                                      llg:
                                        type: string
                                        example: '146789'
                              accountNumber:
                                type: string
                              accountName:
                                type: string
                              beneficiaryId:
                                type: string
                              priority:
                                type: number
                              currency:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                    example: d1ea18d8-a691-11e6-80f5-76304dec7066
                                  code:
                                    type: string
                                    example: IDR
                                  name:
                                    type: string
                                    example: Indonesian Rupiah
                                  baseCurrency:
                                    type: boolean
                                    example: true
                              percentage:
                                type: number
                              amount:
                                type: number
                          bankAccounts:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  format: uuid
                                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                bankId:
                                  type: string
                                bank:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      format: uuid
                                      example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                    code:
                                      type: string
                                      example: '014'
                                    name:
                                      type: string
                                      example: BCA
                                    llg:
                                      type: string
                                      example: '146789'
                                bankBranchId:
                                  type: string
                                bankBranch:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      format: uuid
                                      example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                                    name:
                                      type: string
                                      example: BCA Wisma Asia
                                    code:
                                      type: string
                                      example: BCA01
                                    address:
                                      type: string
                                      example: BCA01
                                    bank:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                          format: uuid
                                          example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                        code:
                                          type: string
                                          example: '014'
                                        name:
                                          type: string
                                          example: BCA
                                        llg:
                                          type: string
                                          example: '146789'
                                accountNumber:
                                  type: string
                                accountName:
                                  type: string
                                beneficiaryId:
                                  type: string
                                priority:
                                  type: number
                                currency:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      format: uuid
                                      example: d1ea18d8-a691-11e6-80f5-76304dec7066
                                    code:
                                      type: string
                                      example: IDR
                                    name:
                                      type: string
                                      example: Indonesian Rupiah
                                    baseCurrency:
                                      type: boolean
                                      example: true
                                percentage:
                                  type: number
                                amount:
                                  type: number
                          source:
                            type: object
                            properties:
                              id:
                                type: string
                          approvalStatus:
                            type: string
                            enum:
                            - APPROVED
                            - REJECTED
                            - OPEN
                            - WAITING_FOR_APPROVAL
              example:
                content:
                - id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                  employee:
                    id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                    identificationNumber: 123456789abc
                    name: John Doe
                    active: true
                  paymentMethod: TRANSFER
                  updatedDate: 1700000000000
                  effectiveDate: '2023-11-01'
                  distributionMethod: PERCENTAGE
                  defaultBankAccount:
                    id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                    bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    bank:
                      id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      code: '014'
                      name: BCA
                      llg: '146789'
                    bankBranchId: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    bankBranch:
                      id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                      code: BCA01
                      name: BCA Wisma Asia
                      address: Wisma Asia
                      bank:
                        id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                        code: '014'
                        name: BCA
                        llg: '146789'
                    accountNumber: '68492818391829'
                    accountName: Bagus Seto
                    beneficiaryId: BEN-001
                    priority: 1
                    currency:
                      id: d1ea18d8-a691-11e6-80f5-76304dec7066
                      code: IDR
                      name: Indonesian Rupiah
                      baseCurrency: true
                    percentage: 100
                    amount: 0
                  bankAccounts:
                  - id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                    bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    bank:
                      id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      code: '014'
                      name: BCA
                      llg: '146789'
                    bankBranchId: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    bankBranch:
                      id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                      code: BCA01
                      name: BCA Wisma Asia
                      address: Wisma Asia
                      bank:
                        id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                        code: '014'
                        name: BCA
                        llg: '146789'
                    accountNumber: '68492818391829'
                    accountName: Bagus Seto
                    beneficiaryId: BEN-001
                    priority: 1
                    currency:
                      id: d1ea18d8-a691-11e6-80f5-76304dec7066
                      code: IDR
                      name: Indonesian Rupiah
                      baseCurrency: true
                    percentage: 100
                    amount: 0
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bank-account-configurations?page=0&size=10&query=employee.id%3A62b529c7-0cfb-4d34-8ef8-3be3ef0f911d\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bank_account_configurations.list(\n    page=0, size=10, query=\"employee.id:62b529c7-0cfb-4d34-8ef8-3be3ef0f911d\"\n)"
  /core/v1/bank-account-configurations/{id}:
    get:
      tags:
      - bank-account-configuration
      summary: Get Bank Account Configuration by Id
      description: Return the bank account configuration by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      active:
                        type: boolean
                  paymentMethod:
                    type: string
                    enum:
                    - CASH
                    - TRANSFER
                    - NONE
                  updatedDate:
                    type: integer
                    format: timestamp in milliseconds
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  distributionMethod:
                    type: string
                  defaultBankAccount:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      bankId:
                        type: string
                      bank:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                          code:
                            type: string
                            example: '014'
                          name:
                            type: string
                            example: BCA
                          llg:
                            type: string
                            example: '146789'
                      bankBranchId:
                        type: string
                      bankBranch:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                          name:
                            type: string
                            example: BCA Wisma Asia
                          code:
                            type: string
                            example: BCA01
                          address:
                            type: string
                            example: BCA01
                          bank:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                              code:
                                type: string
                                example: '014'
                              name:
                                type: string
                                example: BCA
                              llg:
                                type: string
                                example: '146789'
                      accountNumber:
                        type: string
                      accountName:
                        type: string
                      beneficiaryId:
                        type: string
                      priority:
                        type: number
                      currency:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: d1ea18d8-a691-11e6-80f5-76304dec7066
                          code:
                            type: string
                            example: IDR
                          name:
                            type: string
                            example: Indonesian Rupiah
                          baseCurrency:
                            type: boolean
                            example: true
                      percentage:
                        type: number
                      amount:
                        type: number
                  bankAccounts:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                        bankId:
                          type: string
                        bank:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                            code:
                              type: string
                              example: '014'
                            name:
                              type: string
                              example: BCA
                            llg:
                              type: string
                              example: '146789'
                        bankBranchId:
                          type: string
                        bankBranch:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                            name:
                              type: string
                              example: BCA Wisma Asia
                            code:
                              type: string
                              example: BCA01
                            address:
                              type: string
                              example: BCA01
                            bank:
                              type: object
                              properties:
                                id:
                                  type: string
                                  format: uuid
                                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                code:
                                  type: string
                                  example: '014'
                                name:
                                  type: string
                                  example: BCA
                                llg:
                                  type: string
                                  example: '146789'
                        accountNumber:
                          type: string
                        accountName:
                          type: string
                        beneficiaryId:
                          type: string
                        priority:
                          type: number
                        currency:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: d1ea18d8-a691-11e6-80f5-76304dec7066
                            code:
                              type: string
                              example: IDR
                            name:
                              type: string
                              example: Indonesian Rupiah
                            baseCurrency:
                              type: boolean
                              example: true
                        percentage:
                          type: number
                        amount:
                          type: number
                  source:
                    type: object
                    properties:
                      id:
                        type: string
                  approvalStatus:
                    type: string
                    enum:
                    - APPROVED
                    - REJECTED
                    - OPEN
                    - WAITING_FOR_APPROVAL
              example:
                id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                employee:
                  id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                  identificationNumber: 123456789abc
                  name: John Doe
                  active: true
                paymentMethod: TRANSFER
                updatedDate: 1700000000000
                effectiveDate: '2023-11-01'
                distributionMethod: PERCENTAGE
                defaultBankAccount:
                  id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                  bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  bank:
                    id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code: '014'
                    name: BCA
                    llg: '146789'
                  bankBranchId: ''
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                  accountNumber: '68492818391829'
                  accountName: Bagus Seto
                  beneficiaryId: ''
                  priority: 1
                  currency:
                    id: d1ea18d8-a691-11e6-80f5-76304dec7066
                    code: IDR
                    name: Indonesian Rupiah
                    baseCurrency: true
                  percentage: 100
                  amount: 0
                bankAccounts:
                - id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                  bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  bank:
                    id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code: '014'
                    name: BCA
                    llg: '146789'
                  bankBranchId: ''
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                  accountNumber: '68492818391829'
                  accountName: Bagus Seto
                  beneficiaryId: ''
                  priority: 1
                  currency:
                    id: d1ea18d8-a691-11e6-80f5-76304dec7066
                    code: IDR
                    name: Indonesian Rupiah
                    baseCurrency: true
                  percentage: 100
                  amount: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bank-account-configurations/62b529c7-0cfb-4d34-8ef8-3be3ef0f911d\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bank_account_configurations.retrieve(\n    id=\"62b529c7-0cfb-4d34-8ef8-3be3ef0f911d\"\n)"
  /core/v1/bank-account-configurations/approvals:
    post:
      tags:
      - bank-account-configuration
      summary: Create Bank Account Configuration Approval
      description: Replacement for /v1/employees/{employeeId}/bank-account-configurations.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      active:
                        type: boolean
                  paymentMethod:
                    type: string
                    enum:
                    - CASH
                    - TRANSFER
                    - NONE
                  updatedDate:
                    type: integer
                    format: timestamp in milliseconds
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  distributionMethod:
                    type: string
                  defaultBankAccount:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      bankId:
                        type: string
                      bank:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                          code:
                            type: string
                            example: '014'
                          name:
                            type: string
                            example: BCA
                          llg:
                            type: string
                            example: '146789'
                      bankBranchId:
                        type: string
                      bankBranch:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                          name:
                            type: string
                            example: BCA Wisma Asia
                          code:
                            type: string
                            example: BCA01
                          address:
                            type: string
                            example: BCA01
                          bank:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                              code:
                                type: string
                                example: '014'
                              name:
                                type: string
                                example: BCA
                              llg:
                                type: string
                                example: '146789'
                      accountNumber:
                        type: string
                      accountName:
                        type: string
                      beneficiaryId:
                        type: string
                      priority:
                        type: number
                      currency:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: d1ea18d8-a691-11e6-80f5-76304dec7066
                          code:
                            type: string
                            example: IDR
                          name:
                            type: string
                            example: Indonesian Rupiah
                          baseCurrency:
                            type: boolean
                            example: true
                      percentage:
                        type: number
                      amount:
                        type: number
                  bankAccounts:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                        bankId:
                          type: string
                        bank:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                            code:
                              type: string
                              example: '014'
                            name:
                              type: string
                              example: BCA
                            llg:
                              type: string
                              example: '146789'
                        bankBranchId:
                          type: string
                        bankBranch:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                            name:
                              type: string
                              example: BCA Wisma Asia
                            code:
                              type: string
                              example: BCA01
                            address:
                              type: string
                              example: BCA01
                            bank:
                              type: object
                              properties:
                                id:
                                  type: string
                                  format: uuid
                                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                code:
                                  type: string
                                  example: '014'
                                name:
                                  type: string
                                  example: BCA
                                llg:
                                  type: string
                                  example: '146789'
                        accountNumber:
                          type: string
                        accountName:
                          type: string
                        beneficiaryId:
                          type: string
                        priority:
                          type: number
                        currency:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: d1ea18d8-a691-11e6-80f5-76304dec7066
                            code:
                              type: string
                              example: IDR
                            name:
                              type: string
                              example: Indonesian Rupiah
                            baseCurrency:
                              type: boolean
                              example: true
                        percentage:
                          type: number
                        amount:
                          type: number
                  source:
                    type: object
                    properties:
                      id:
                        type: string
                  approvalStatus:
                    type: string
                    enum:
                    - APPROVED
                    - REJECTED
                    - OPEN
                    - WAITING_FOR_APPROVAL
              example:
                id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                employee:
                  id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                  identificationNumber: 123456789abc
                  name: John Doe
                  active: true
                paymentMethod: TRANSFER
                updatedDate: 1700000000000
                effectiveDate: '2023-11-01'
                distributionMethod: PERCENTAGE
                defaultBankAccount:
                  id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                  bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  bank:
                    id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code: '014'
                    name: BCA
                    llg: '146789'
                  bankBranchId: ''
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                  accountNumber: '68492818391829'
                  accountName: Bagus Seto
                  beneficiaryId: ''
                  priority: 1
                  currency:
                    id: d1ea18d8-a691-11e6-80f5-76304dec7066
                    code: IDR
                    name: Indonesian Rupiah
                    baseCurrency: true
                  percentage: 100
                  amount: 0
                bankAccounts:
                - id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                  bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  bank:
                    id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code: '014'
                    name: BCA
                    llg: '146789'
                  bankBranchId: ''
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                  accountNumber: '68492818391829'
                  accountName: Bagus Seto
                  beneficiaryId: ''
                  priority: 1
                  currency:
                    id: d1ea18d8-a691-11e6-80f5-76304dec7066
                    code: IDR
                    name: Indonesian Rupiah
                    baseCurrency: true
                  percentage: 100
                  amount: 0
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                paymentMethod:
                  type: string
                  enum:
                  - CASH
                  - TRANSFER
                  - NONE
                distributionMethod:
                  type: string
                  enum:
                  - PERCENTAGE
                  - FIXED_AMOUNT
                bankAccounts:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      companyBankAccount:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Unique identifier
                        required:
                        - id
                      bankId:
                        type: string
                      bankBranchId:
                        type: string
                      accountNumber:
                        type: string
                        description: Numeric
                      accountName:
                        type: string
                        minLength: 3
                        maxLength: 255
                      beneficiaryId:
                        type: string
                        maxLength: 255
                      priority:
                        type: number
                        minimum: 1
                      currency:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Unique identifier
                        required:
                        - id
                      percentage:
                        type: number
                        minimum: 0
                        maximum: 100
                      amount:
                        type: number
                        minimum: 0
                    required:
                    - bankId
                    - accountNumber
                    - accountName
                    - priority
                    - currency
                    - percentage
                    - amount
                source:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
              required:
              - paymentMethod
            example:
              employee:
                id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
              effectiveDate: '2023-11-01'
              paymentMethod: TRANSFER
              distributionMethod: PERCENTAGE
              bankAccounts:
              - id: ''
                companyBankAccount:
                  id: eb919ed1-c3c1-4334-a626-b9178b8a98ae
                  name: Comp Bank Account 1
                  companyCode: C001
                  accountNumber: '98343411'
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                bankBranchId: ''
                accountNumber: '68492818391829'
                accountName: John Doe
                beneficiaryId: ''
                priority: 1
                currency:
                  id: d1ea18d8-a691-11e6-80f5-76304dec7066
                percentage: 100
                amount: 0
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/bank-account-configurations/approvals\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '...'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bank_account_configurations.approvals.create(...)"
  /core/v1/bank-account-configurations/approvals/approve:
    put:
      tags:
      - bank-account-configuration
      summary: Update Bank Account Configuration
      description: Approve the bank account configuration.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              examples:
                Success:
                  value:
                    successes:
                    - id: 7eb20b1e-577b-45c0-adf4-c76ae17cdeae
                    - id: 6a4d1903-b453-4694-9806-65101f0aec64
                    failures: []
                Failure:
                  value:
                    successes: []
                    failures:
                    - code: COM-UNABLE_TO_APPROVE
                      message: can't approve or reject because approval status is APPROVED
                      params:
                        id: b4138808-3ec9-4a44-b58d-ef161f870778
                    - code: COM-UNABLE_TO_APPROVE
                      message: can't approve or reject because approval status is APPROVED
                      params:
                        id: 6a4d1903-b453-4694-9806-65101f0aec64
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              example:
                successes: []
                failures:
                - code: COM-UNABLE_TO_APPROVE
                  message: can't approve or reject because approval status is APPROVED
                  params:
                    id: b4138808-3ec9-4a44-b58d-ef161f870778
                - code: COM-UNABLE_TO_APPROVE
                  message: can't approve or reject because approval status is APPROVED
                  params:
                    id: 6a4d1903-b453-4694-9806-65101f0aec64
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier
                required:
                - id
            example:
            - id: 7eb20b1e-577b-45c0-adf4-c76ae17cdeae
            - id: 6a4d1903-b453-4694-9806-65101f0aec64
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/bank-account-configurations/approvals/approve\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"id\": \"7eb20b1e-577b-45c0-adf4-c76ae17cdeae\"\n  },\n  {\n    \"id\": \"6a4d1903-b453-4694-9806-65101f0aec64\"\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bank_account_configurations.approvals.approve(\n    approval_ids_request=[\n        IdRequest(id=\"7eb20b1e-577b-45c0-adf4-c76ae17cdeae\"),\n        IdRequest(id=\"6a4d1903-b453-4694-9806-65101f0aec64\"),\n    ]\n)"
  /core/v1/bank-account-configurations/approvals/reject:
    put:
      tags:
      - bank-account-configuration
      summary: Reject Bank Account Configuration
      description: Reject the bank account configuration.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              examples:
                Success:
                  value:
                    successes:
                    - id: 7eb20b1e-577b-45c0-adf4-c76ae17cdeae
                    - id: 6a4d1903-b453-4694-9806-65101f0aec64
                    failures: []
                Failure:
                  value:
                    successes: []
                    failures:
                    - code: COM-UNABLE_TO_REJECT
                      message: can't approve or reject because approval status is REJECTED
                      params:
                        id: b4138808-3ec9-4a44-b58d-ef161f870778
                    - code: COM-UNABLE_TO_REJECT
                      message: can't approve or reject because approval status is REJECTED
                      params:
                        id: b4138808-3ec9-4a44-b58d-ef161f870778
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              example:
                successes: []
                failures:
                - code: COM-UNABLE_TO_APPROVE
                  message: can't approve or reject because approval status is APPROVED
                  params:
                    id: b4138808-3ec9-4a44-b58d-ef161f870778
                - code: COM-UNABLE_TO_APPROVE
                  message: can't approve or reject because approval status is APPROVED
                  params:
                    id: 6a4d1903-b453-4694-9806-65101f0aec64
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Approval ID
                  reason:
                    type: string
                    description: Reason of Rejection
                required:
                - id
                - reason
            example:
            - id: 59a7fdc8-888c-437b-afec-44ffa490b160
              reason: reason
            - id: 032f6fd4-67d5-423f-9522-283f79391019
              reason: reason
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/bank-account-configurations/approvals/reject\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"id\": \"59a7fdc8-888c-437b-afec-44ffa490b160\",\n    \"reason\": \"reason\"\n  },\n  {\n    \"id\": \"032f6fd4-67d5-423f-9522-283f79391019\",\n    \"reason\": \"reason\"\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import RejectApprovalRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bank_account_configurations.approvals.reject(\n    reject_approval_list_request=[\n        RejectApprovalRequest(\n            id=\"59a7fdc8-888c-437b-afec-44ffa490b160\", reason=\"reason\"\n        ),\n        RejectApprovalRequest(\n            id=\"032f6fd4-67d5-423f-9522-283f79391019\", reason=\"reason\"\n        ),\n    ]\n)"
  /core/v1/bank-account-configurations/approvals/undo:
    put:
      tags:
      - bank-account-configuration
      summary: Undo Bank Account Configuration
      description: Undo the bank account configuration approval.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              examples:
                Success:
                  value:
                    successes:
                    - id: 7eb20b1e-577b-45c0-adf4-c76ae17cdeae
                    - id: 6a4d1903-b453-4694-9806-65101f0aec64
                    failures: []
                Failure:
                  value:
                    successes: []
                    failures:
                    - code: COM-UNABLE_TO_UNDO
                      message: Unable to undo due to some constraints
                      params:
                        id: b4138808-3ec9-4a44-b58d-ef161f870778
                    - code: COM-UNABLE_TO_UNDO
                      message: Unable to undo due to some constraints
                      params:
                        id: 6a4d1903-b453-4694-9806-65101f0aec64
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier
                required:
                - id
            example:
            - id: 7eb20b1e-577b-45c0-adf4-c76ae17cdeae
            - id: 6a4d1903-b453-4694-9806-65101f0aec64
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/bank-account-configurations/approvals/undo\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"id\": \"7eb20b1e-577b-45c0-adf4-c76ae17cdeae\"\n  },\n  {\n    \"id\": \"6a4d1903-b453-4694-9806-65101f0aec64\"\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bank_account_configurations.approvals.undo(\n    approval_ids_request=[\n        IdRequest(id=\"7eb20b1e-577b-45c0-adf4-c76ae17cdeae\"),\n        IdRequest(id=\"6a4d1903-b453-4694-9806-65101f0aec64\"),\n    ]\n)"
  /core/v1/bank-account-configurations/approvals/{id}:
    put:
      tags:
      - bank-account-configuration
      summary: Update Bank Account Configuration Approval
      description: Update the bank account configuration approval.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      active:
                        type: boolean
                  paymentMethod:
                    type: string
                    enum:
                    - CASH
                    - TRANSFER
                    - NONE
                  updatedDate:
                    type: integer
                    format: timestamp in milliseconds
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  distributionMethod:
                    type: string
                  defaultBankAccount:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      bankId:
                        type: string
                      bank:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                          code:
                            type: string
                            example: '014'
                          name:
                            type: string
                            example: BCA
                          llg:
                            type: string
                            example: '146789'
                      bankBranchId:
                        type: string
                      bankBranch:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                          name:
                            type: string
                            example: BCA Wisma Asia
                          code:
                            type: string
                            example: BCA01
                          address:
                            type: string
                            example: BCA01
                          bank:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                              code:
                                type: string
                                example: '014'
                              name:
                                type: string
                                example: BCA
                              llg:
                                type: string
                                example: '146789'
                      accountNumber:
                        type: string
                      accountName:
                        type: string
                      beneficiaryId:
                        type: string
                      priority:
                        type: number
                      currency:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: d1ea18d8-a691-11e6-80f5-76304dec7066
                          code:
                            type: string
                            example: IDR
                          name:
                            type: string
                            example: Indonesian Rupiah
                          baseCurrency:
                            type: boolean
                            example: true
                      percentage:
                        type: number
                      amount:
                        type: number
                  bankAccounts:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                        bankId:
                          type: string
                        bank:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                            code:
                              type: string
                              example: '014'
                            name:
                              type: string
                              example: BCA
                            llg:
                              type: string
                              example: '146789'
                        bankBranchId:
                          type: string
                        bankBranch:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                            name:
                              type: string
                              example: BCA Wisma Asia
                            code:
                              type: string
                              example: BCA01
                            address:
                              type: string
                              example: BCA01
                            bank:
                              type: object
                              properties:
                                id:
                                  type: string
                                  format: uuid
                                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                code:
                                  type: string
                                  example: '014'
                                name:
                                  type: string
                                  example: BCA
                                llg:
                                  type: string
                                  example: '146789'
                        accountNumber:
                          type: string
                        accountName:
                          type: string
                        beneficiaryId:
                          type: string
                        priority:
                          type: number
                        currency:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: d1ea18d8-a691-11e6-80f5-76304dec7066
                            code:
                              type: string
                              example: IDR
                            name:
                              type: string
                              example: Indonesian Rupiah
                            baseCurrency:
                              type: boolean
                              example: true
                        percentage:
                          type: number
                        amount:
                          type: number
                  source:
                    type: object
                    properties:
                      id:
                        type: string
                  approvalStatus:
                    type: string
                    enum:
                    - APPROVED
                    - REJECTED
                    - OPEN
                    - WAITING_FOR_APPROVAL
              example:
                id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                employee:
                  id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                  identificationNumber: 123456789abc
                  name: John Doe
                  active: true
                paymentMethod: TRANSFER
                updatedDate: 1700000000000
                effectiveDate: '2023-11-01'
                distributionMethod: PERCENTAGE
                defaultBankAccount:
                  id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                  bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  bank:
                    id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code: '014'
                    name: BCA
                    llg: '146789'
                  bankBranchId: ''
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                  accountNumber: '68492818391829'
                  accountName: Bagus Seto
                  beneficiaryId: ''
                  priority: 1
                  currency:
                    id: d1ea18d8-a691-11e6-80f5-76304dec7066
                    code: IDR
                    name: Indonesian Rupiah
                    baseCurrency: true
                  percentage: 100
                  amount: 0
                bankAccounts:
                - id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                  bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  bank:
                    id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code: '014'
                    name: BCA
                    llg: '146789'
                  bankBranchId: ''
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                  accountNumber: '68492818391829'
                  accountName: Bagus Seto
                  beneficiaryId: ''
                  priority: 1
                  currency:
                    id: d1ea18d8-a691-11e6-80f5-76304dec7066
                    code: IDR
                    name: Indonesian Rupiah
                    baseCurrency: true
                  percentage: 100
                  amount: 0
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                paymentMethod:
                  type: string
                  enum:
                  - CASH
                  - TRANSFER
                  - NONE
                distributionMethod:
                  type: string
                  enum:
                  - PERCENTAGE
                  - FIXED_AMOUNT
                bankAccounts:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      companyBankAccount:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Unique identifier
                        required:
                        - id
                      bankId:
                        type: string
                      bankBranchId:
                        type: string
                      accountNumber:
                        type: string
                        description: Numeric
                      accountName:
                        type: string
                        minLength: 3
                        maxLength: 255
                      beneficiaryId:
                        type: string
                        maxLength: 255
                      priority:
                        type: number
                        minimum: 1
                      currency:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Unique identifier
                        required:
                        - id
                      percentage:
                        type: number
                        minimum: 0
                        maximum: 100
                      amount:
                        type: number
                        minimum: 0
                    required:
                    - bankId
                    - accountNumber
                    - accountName
                    - priority
                    - currency
                    - percentage
                    - amount
                source:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
              required:
              - paymentMethod
            example:
              employee:
                id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
              effectiveDate: '2023-11-01'
              paymentMethod: TRANSFER
              distributionMethod: PERCENTAGE
              bankAccounts:
              - id: ''
                companyBankAccount:
                  id: eb919ed1-c3c1-4334-a626-b9178b8a98ae
                  name: Comp Bank Account 1
                  companyCode: C001
                  accountNumber: '98343411'
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                bankBranchId: ''
                accountNumber: '68492818391829'
                accountName: John Doe
                beneficiaryId: ''
                priority: 1
                currency:
                  id: d1ea18d8-a691-11e6-80f5-76304dec7066
                percentage: 100
                amount: 0
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/bank-account-configurations/approvals/62b529c7-0cfb-4d34-8ef8-3be3ef0f911d\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '...'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bank_account_configurations.approvals.update(...)"
  /core/v1/bank-account-configurations/approvals/{id}/cancel:
    put:
      tags:
      - bank-account-configuration
      summary: Cancel Bank Account Configuration
      description: Cancel the bank account configuration approval.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/bank-account-configurations/approvals/f47ac10b-58cc-4372-a567-0e02b2c3d479/cancel\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bank_account_configurations.approvals.cancel(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/bpjs-healthcare-premiums/summaries:
    get:
      tags:
      - bpjs-healthcare
      summary: Get BPJS Healthcare Premium Summaries
      description: |
        ### Search Query
        | Supported Keys       | Supported Operators | Notes         |
        |----------------------|---------------------|---------------|
        | employeeName         | :                   | Like Operator |
        | identificationNumber | :                   | Like Operator |
        | cutoffEndDate        | :<br>><br><         | Equal operator<br>Greater than or equal to operator<br>Less than or equal to equal operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employeeIdentificationNumber:
                            type: string
                          employeeName:
                            type: string
                          monthlyWage:
                            type: number
                          companyAmount:
                            type: number
                          employeeAmount:
                            type: number
              example:
                content:
                - id: 00905f5b-ff54-4d40-8f0e-d4e7d37c22da
                  employeeIdentificationNumber: 0035/EMP/09-2017
                  employeeName: Alice
                  monthlyWage: 16000000
                  companyAmount: 137192.8
                  employeeAmount: 34298.13
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 2147483647
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-healthcare-premiums/summaries\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_healthcare_premiums.summaries.list()"
  /core/v1/bpjs-healthcare-premiums/summaries/{id}/details:
    get:
      tags:
      - bpjs-healthcare
      summary: Get BPJS Healthcare Premium Summary Details
      description: Return the BPJS healthcare premium summary details.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  employeeId:
                    type: string
                  employeeIdentificationNumber:
                    type: string
                  employeeName:
                    type: string
                  monthlyWage:
                    type: number
                  currentMonthDetail:
                    type: object
                    properties:
                      startCutoffDate:
                        type: string
                      endCutoffDate:
                        type: string
                      companyAmount:
                        type: number
                      employeeAmount:
                        type: number
                  details:
                    type: array
                    items:
                      type: object
                      properties:
                        startCutoffDate:
                          type: string
                        endCutoffDate:
                          type: string
                        companyAmount:
                          type: number
                          description: Value can be null if the date period is not processed yet
                        employeeAmount:
                          type: number
                          description: Value can be null if the date period is not processed yet
              example:
                employeeId: 00905f5b-ff54-4d40-8f0e-d4e7d37c22da
                employeeIdentificationNumber: 0035/EMP/09-2017
                employeeName: Alice
                monthlyWage: 16000000
                currentMonthDetail:
                  startCutoffDate: '2020-09-30'
                  endCutoffDate: '2020-10-27'
                  companyAmount: 282763.5
                  employeeAmount: 70690.8725
                details:
                - startCutoffDate: '2020-09-30'
                  endCutoffDate: '2020-10-06'
                  companyAmount: 42763.5
                  employeeAmount: 10690.8725
                - startCutoffDate: '2020-10-07'
                  endCutoffDate: '2020-10-13'
                  companyAmount: 42763.5
                  employeeAmount: 10690.8725
                - startCutoffDate: '2020-10-14'
                  endCutoffDate: '2020-10-20'
                  companyAmount: 197236.5
                  employeeAmount: 49309.1275
                - startCutoffDate: '2020-10-21'
                  endCutoffDate: '2020-10-27'
                  companyAmount: 0
                  employeeAmount: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-healthcare-premiums/summaries/f47ac10b-58cc-4372-a567-0e02b2c3d479/details\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_healthcare_premiums.summaries.details.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/bpjs-healthcare-providers:
    get:
      tags:
      - bpjs-healthcare
      summary: Get BPJS Healthcare Providers
      description: |
        ### Search Query
        | Supported Keys          | Supported Operators | Notes         |
        | ----------------------- | ------------------- | ------------- |
        | name                    | :                   | Like Operator |
        | code                    | :                   | Like Operator |
        | address                 | :                   | Like Operator |
        | registrationNumber      | :                   | Like Operator |
        | reportSignatoryName     | :                   | Like Operator |
        | reportSignatoryJobTitle | :                   | Like Operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          address:
                            type: string
                          registrationNumber:
                            type: string
                          reportSignatoryName:
                            type: string
                          reportSignatoryJobTitle:
                            type: string
              example:
                content:
                - id: 00905f5b-ff54-4d40-8f0e-d4e7d37c22da
                  code: '001'
                  name: Jakarta Mampang Prapatan
                  address: Jalan Ampera Raya, Jakarta Selatan
                  registrationNumber: '80022533'
                  reportSignatoryName: Brian Wicaksono
                  reportSignatoryJobTitle: Manager
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-healthcare-providers\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_healthcare_providers.list()"
  /core/v1/bpjs-healthcare-reports/edabu-advance-members:
    get:
      tags:
      - bpjs-healthcare
      summary: Download E-Dabu Advance Member Report
      description: |
        ### Search Query
        | Request Parameter Name   | Description                                 |
        | ------------------------ | ------------------------------------------- |
        | month                    | Month of the report<br>Value: 1-12.         |
        | year                     | Year of the report<br>Value: YYYY, eg: 2021 |
        | bpjsHealthcareProviderId | Provider Id                                 |
      parameters: []
      responses:
        '200':
          description: OK - File download response
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=filename.xlsx
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-healthcare-reports/edabu-advance-members\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_healthcare_reports.edabu_advance_members.list()"
  /core/v1/bpjs-healthcare-reports/edabu-employee-identity-card-number-check:
    get:
      tags:
      - bpjs-healthcare
      summary: Download E-Dabu Employee Identity Card Member Check Report
      description: |
        ### Search Query
        | Request Parameter Name   | Description                                 |
        | ------------------------ | ------------------------------------------- |
        | month                    | Month of the report<br>Value: 1-12.         |
        | year                     | Year of the report<br>Value: YYYY, eg: 2021 |
        | bpjsHealthcareProviderId | Provider Id                                 |
      parameters: []
      responses:
        '200':
          description: OK - File download response
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=filename.xlsx
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-healthcare-reports/edabu-employee-identity-card-number-check\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = (\n    client.core.bpjs_healthcare_reports.edabu_employee_identity_card_number_check.list()\n)"
  /core/v1/bpjs-healthcare-reports/edabu-new-members:
    get:
      tags:
      - bpjs-healthcare
      summary: Download E-Dabu New Member Report
      description: |
        ### Search Query
        | Request Parameter Name   | Description                                 |
        | ------------------------ | ------------------------------------------- |
        | month                    | Month of the report<br>Value: 1-12.         |
        | year                     | Year of the report<br>Value: YYYY, eg: 2021 |
        | bpjsHealthcareProviderId | Provider Id                                 |
      parameters: []
      responses:
        '200':
          description: OK - File download response
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=filename.xlsx
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-healthcare-reports/edabu-new-members\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_healthcare_reports.edabu_new_members.list()"
  /core/v1/bpjs-healthcare-reports/edabu-wage-update:
    get:
      tags:
      - bpjs-healthcare
      summary: Download E-Dabu Wage Update Report
      description: |
        ### Search Query
        | Request Parameter Name   | Description                                 |
        | ------------------------ | ------------------------------------------- |
        | month                    | Month of the report<br>Value: 1-12.         |
        | year                     | Year of the report<br>Value: YYYY, eg: 2021 |
        | bpjsHealthcareProviderId | Provider Id. UUID4                          |
        | paygroupId               | Paygroup id from payroll. UUID4             |
      parameters: []
      responses:
        '200':
          description: OK - File download response
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=filename.xlsx
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-healthcare-reports/edabu-wage-update\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_healthcare_reports.edabu_wage_update.list()"
  /core/v1/bpjs-healthcare-reports/payment-details:
    get:
      tags:
      - bpjs-healthcare
      summary: Download BPJS Healthcare Payment Details Report
      description: |
        ### Search Query
        | Request Parameter Name   | Description                                 |
        | ------------------------ | --------------------------------------------|
        | month                    | Month of the report<br>Value: 1-12.         |
        | year                     | Year of the report<br>Value: YYYY, eg: 2021 |
        | bpjsHealthcareProviderId | Provider Id                                 |
      parameters: []
      responses:
        '200':
          description: OK - File download response
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=filename.xlsx
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-healthcare-reports/payment-details\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_healthcare_reports.payment_details.list()"
  /core/v1/bpjs-healthcare-templates:
    get:
      tags:
      - bpjs-healthcare
      summary: Get BPJS Healthcare Templates
      description: |
        ### Search Query
        | Supported Keys | Supported Operators |Notes                                                                                     |
        | -------------- | ------------------- |------------------------------------------------------------------------------------------|
        | code           | :                   | Like Operator                                                                            |
        | name           | :                   | Like Operator                                                                            |
        | salaryType     | :                   | Equal Operator<br>Enum, available values:<br>\[BY\_PRORATED\_SALARY, BY\_SALARY\_DECREE\]|
        | linkToPayroll  | :                   | Equal Operator.<br>Boolean                                                               |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          salaryType:
                            type: string
                          linkToPayroll:
                            type: boolean
              example:
                content:
                - id: 00905f5b-ff54-4d40-8f0e-d4e7d37c22da
                  code: BPJSKS
                  name: BPJS KS
                  salaryType: BY_SALARY_DECREE
                  linkToPayroll: true
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-healthcare-templates\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_healthcare_templates.list()"
  /core/v1/bpjs-manpower-premiums/summaries:
    get:
      tags:
      - bpjs-manpower
      summary: Get BPJS Manpower Premium Summaries
      description: |
        ### Search Query
        | Supported Keys       | Supported Operators | Notes         |
        |----------------------|---------------------|---------------|
        | employeeName         | :                   | Like Operator |
        | identificationNumber | :                   | Like Operator |
        | cutoffEndDate        | :<br>><br><         | Equal operator<br>Greater than or equal to operator<br>Less than or equal to equal operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employeeIdentificationNumber:
                            type: string
                          employeeName:
                            type: string
                          monthlyWage:
                            type: number
                          jkkAmount:
                            type: number
                          jkmAmount:
                            type: number
                          jhtpkAmount:
                            type: number
                          jhtpAmount:
                            type: number
                          jppkAmount:
                            type: number
                          jppAmount:
                            type: number
                          jkpAmount:
                            type: number
              example:
                content:
                - id: 00905f5b-ff54-4d40-8f0e-d4e7d37c22da
                  employeeIdentificationNumber: 0035/EMP/09-2017
                  employeeName: Alice
                  monthlyWage: 16000000
                  jkkAmount: 137192.8
                  jkmAmount: 34298.13
                  jhtpkAmount: 12321.45
                  jhtpAmount: 4342.32
                  jppkAmount: 8762.45
                  jppAmount: 2412.32
                  jkpAmount: 12000
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-manpower-premiums/summaries\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_manpower_premiums.summaries.list()"
  /core/v1/bpjs-manpower-premiums/summaries/{id}/details:
    get:
      tags:
      - bpjs-manpower
      summary: Get BPJS Manpower Premium Summary Details
      description: Return the BPJS manpower premium summary details.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  employeeId:
                    type: string
                  employeeIdentificationNumber:
                    type: string
                  employeeName:
                    type: string
                  monthlyWage:
                    type: number
                  currentMonthDetail:
                    type: object
                    properties:
                      startCutoffDate:
                        type: string
                      endCutoffDate:
                        type: string
                      jkkAmount:
                        type: number
                      jkmAmount:
                        type: number
                      jhtpkAmount:
                        type: number
                      jhtpAmount:
                        type: number
                      jppkAmount:
                        type: number
                      jppAmount:
                        type: number
                      jkpAmount:
                        type: number
                  details:
                    type: array
                    description: Possible empty list
                    items:
                      type: object
                      properties:
                        startCutoffDate:
                          type: string
                        endCutoffDate:
                          type: string
                        jkkAmount:
                          type: number
                          description: Amount can be null because the date period is not processed yet
                        jkmAmount:
                          type: number
                          description: Amount can be null because the date period is not processed yet
                        jhtpkAmount:
                          type: number
                          description: Amount can be null because the date period is not processed yet
                        jhtpAmount:
                          type: number
                          description: Amount can be null because the date period is not processed yet
                        jppkAmount:
                          type: number
                          description: Amount can be null because the date period is not processed yet
                        jppAmount:
                          type: number
                          description: Amount can be null because the date period is not processed yet
                        jkpAmount:
                          type: number
              example:
                employeeId: uuidv4
                employeeIdentificationNumber: 0035/EMP/09-2017
                employeeName: Alice
                monthlyWage: 16000000
                currentMonthDetail:
                  startCutoffDate: '2020-09-30'
                  endCutoffDate: '2020-10-27'
                  jkkAmount: 480000
                  jkmAmount: 120000
                  jhtpkAmount: 480000
                  jhtpAmount: 120000
                  jppkAmount: 480000
                  jppAmount: 120000
                  jkpAmount: 120000
                details:
                - startCutoffDate: '2020-09-30'
                  endCutoffDate: '2020-10-06'
                  jkkAmount: 480000
                  jkmAmount: 120000
                  jhtpkAmount: 480000
                  jhtpAmount: 120000
                  jppkAmount: 480000
                  jppAmount: 120000
                  jkpAmount: 120000
                - startCutoffDate: '2020-10-07'
                  endCutoffDate: '2020-10-13'
                  jkkAmount: 480000
                  jkmAmount: 120000
                  jhtpkAmount: 480000
                  jhtpAmount: 120000
                  jppkAmount: 480000
                  jppAmount: 120000
                  jkpAmount: 120000
                - startCutoffDate: '2020-10-14'
                  endCutoffDate: '2020-10-20'
                  jkkAmount: 480000
                  jkmAmount: 120000
                  jhtpkAmount: 480000
                  jhtpAmount: 120000
                  jppkAmount: 480000
                  jppAmount: 120000
                  jkpAmount: 120000
                - startCutoffDate: '2020-10-21'
                  endCutoffDate: '2020-10-27'
                  jkkAmount: 0
                  jkmAmount: 0
                  jhtpkAmount: 0
                  jhtpAmount: 0
                  jppkAmount: 0
                  jppAmount: 0
                  jkpAmount: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-manpower-premiums/summaries/f47ac10b-58cc-4372-a567-0e02b2c3d479/details\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_manpower_premiums.summaries.details.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/bpjs-manpower-providers:
    get:
      tags:
      - bpjs-manpower
      summary: Get BPJS Manpower Providers
      description: |
        ### Search Query
        | Supported Keys          | Supported Operators | Notes         |
        | ----------------------- | ------------------- | ------------- |
        | name                    | :                   | Like Operator |
        | code                    | :                   | Like Operator |
        | address                 | :                   | Like Operator |
        | registrationNumber      | :                   | Like Operator |
        | reportSignatoryName     | :                   | Like Operator |
        | reportSignatoryJobTitle | :                   | Like Operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          address:
                            type: string
                          registrationNumber:
                            type: string
                          reportSignatoryName:
                            type: string
                          reportSignatoryJobTitle:
                            type: string
              example:
                content:
                - id: 00905f5b-ff54-4d40-8f0e-d4e7d37c22da
                  code: '001'
                  name: Jakarta Mampang Prapatan
                  address: Jalan Ampera Raya, Jakarta Selatan
                  registrationNumber: '80022533'
                  reportSignatoryName: Brian Wicaksono
                  reportSignatoryJobTitle: Manager
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-manpower-providers\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_manpower_providers.list()"
  /core/v1/bpjs-manpower-reports/payment-details:
    get:
      tags:
      - bpjs-manpower
      summary: Download BPJS Manpower Payment Details Report
      description: |
        ### Search Query
        | Request Parameter Name | Description                                      |
        | ---------------------- | ------------------------------------------------ |
        | month                  | Month of the report<br>Value: 1-12.              |
        | year                   | Year of the report<br>Value: YYYY, example: 2021 |
        | bpjsManpowerProviderId | Provider Id                                      |
      parameters: []
      responses:
        '200':
          description: OK - File download response
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=filename.xlsx
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-manpower-reports/payment-details\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_manpower_reports.payment_details.list()"
  /core/v1/bpjs-manpower-reports/pension-debt-report:
    get:
      tags:
      - bpjs-manpower
      summary: Download Pension Debt Report
      description: |
        To comply with [PP No. 49 Tahun
        2020](https://peraturan.bpk.go.id/Home/Details/144869/pp-no-49-tahun-2020#:~:text=PP%20No.%2049%20Tahun%202020,19\)%20%5BJDIH%20BPK%20RI%5D&text=LN.2020%2FNo.199,go.id%20%3A%2020%20hlm.)
        for “Jaminan Pensiun”

        ### Search Query
        | Request Parameter Name | Description        |
        | ---------------------- | ------------------ |
        | bpjsManpowerProviderId | Provider Id. UUID4 |
      parameters: []
      responses:
        '200':
          description: OK - File download response
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=filename.xlsx
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-manpower-reports/pension-debt-report\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_manpower_reports.pension_debt_report.list()"
  /core/v1/bpjs-manpower-reports/sipp-advance-members:
    get:
      tags:
      - bpjs-manpower
      summary: Download SIPP Advance Member Report
      description: |
        ### Search Query
        | Request Parameter Name | Description                                        |
        | ---------------------- | ------------------------------------------------   |
        | month                  | Month of the report<br>Value: 1-12.                |
        | year                   | Year of the report<br>Value: YYYY, example: 2021   |
        | bpjsManpowerProviderId | Provider Id                                        |
      parameters: []
      responses:
        '200':
          description: OK - File download response
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=filename.xlsx
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-manpower-reports/sipp-advance-members\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_manpower_reports.sipp_advance_members.list()"
  /core/v1/bpjs-manpower-reports/sipp-new-members:
    get:
      tags:
      - bpjs-manpower
      summary: Download SIPP New Member Report
      description: |
        ### Search Query
        | Request Parameter Name | Description                                        |
        | ---------------------- | ------------------------------------------------   |
        | month                  | Month of the report<br>Value: 1-12.                |
        | year                   | Year of the report<br>Value: YYYY, example: 2021   |
        | bpjsManpowerProviderId | Provider Id                                        |
      parameters: []
      responses:
        '200':
          description: OK - File download response
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=filename.xlsx
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-manpower-reports/sipp-new-members\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_manpower_reports.sipp_new_members.list()"
  /core/v1/bpjs-manpower-reports/sipp-terminated-member:
    get:
      tags:
      - bpjs-manpower
      summary: Download SIPP Terminated Member Report
      description: |
        ### Search Query
        | Request Parameter Name | Description                                        |
        | ---------------------- | ------------------------------------------------   |
        | month                  | Month of the report<br>Value: 1-12.                |
        | year                   | Year of the report<br>Value: YYYY, example: 2021   |
        | bpjsManpowerProviderId | Provider Id                                        |
      parameters: []
      responses:
        '200':
          description: OK - File download response
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=filename.xlsx
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-manpower-reports/sipp-terminated-member\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_manpower_reports.sipp_terminated_member.list()"
  /core/v1/bpjs-manpower-reports/sipp-wage-update:
    get:
      tags:
      - bpjs-manpower
      summary: Download SIPP Wage Update Report
      description: |
        ### Search Query
        | Request Parameter Name | Description                                        |
        | ---------------------- | ------------------------------------------------   |
        | month                  | Month of the report<br>Value: 1-12.                |
        | year                   | Year of the report<br>Value: YYYY, example: 2021   |
        | bpjsManpowerProviderId | Provider Id. UUID4                                 |
        | paygroupId             | Provider Id from payroll. UUID4                    |
      parameters: []
      responses:
        '200':
          description: OK - File download response
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=filename.xlsx
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-manpower-reports/sipp-wage-update\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_manpower_reports.sipp_wage_update.list()"
  /core/v1/bpjs-manpower-templates:
    get:
      tags:
      - bpjs-manpower
      summary: Get BPJS Manpower Templates
      description: |
        ### Search Query
        | Supported Keys | Supported Operators |Notes                                                                                     |
        | -------------- | ------------------- |------------------------------------------------------------------------------------------|
        | code           | :                   | Like Operator                                                                            |
        | name           | :                   | Like Operator                                                                            |
        | salaryType     | :                   | Equal Operator<br>Enum, available values:<br>\[BY\_PRORATED\_SALARY, BY\_SALARY\_DECREE\]|
        | linkToPayroll  | :                   | Equal Operator.<br>Boolean                                                               |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          salaryType:
                            type: string
                          linkToPayroll:
                            type: boolean
              example:
                content:
                - id: 00905f5b-ff54-4d40-8f0e-d4e7d37c22da
                  code: BPJSKS
                  name: BPJS KS
                  salaryType: BY_SALARY_DECREE
                  linkToPayroll: true
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/bpjs-manpower-templates\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.bpjs_manpower_templates.list()"
  /core/v1/company-bank-accounts:
    get:
      tags:
      - company-bank-account
      summary: Get Company Bank Accounts
      description: Return the company bank accounts.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search query  
          | Supported Keys         | Supported Operators | Notes                                                         |
          |------------------------|---------------------|---------------------------------------------------------------|
          | id                     | `:`                 | Equal operator with multiple values. Each value should separated with delimiters `;` |                                                |
        schema:
          type: string
        examples:
          one:
            summary: Search a company bank account by id
            value: id:eb919ed1-c3c1-4334-a626-b9178b8a98ae
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: eb919ed1-c3c1-4334-a626-b9178b8a98ae
                          name:
                            type: string
                            example: Comp Bank Account 1
                          companyCode:
                            type: string
                            example: C001
                          accountNumber:
                            type: string
                            example: '98343411'
                          bankBranch:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                              name:
                                type: string
                                example: BCA Wisma Asia
                              code:
                                type: string
                                example: BCA01
                              address:
                                type: string
                                example: BCA01
                              bank:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                    example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                  code:
                                    type: string
                                    example: '014'
                                  name:
                                    type: string
                                    example: BCA
                                  llg:
                                    type: string
                                    example: '146789'
                          currency:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: d1ea18d8-a691-11e6-80f5-76304dec7066
                              createdBy:
                                type: string
                                example: system
                              createdDate:
                                type: integer
                                format: timestamp in milliseconds
                                example: 1478586884810
                              updatedBy:
                                type: string
                                example: system
                              updatedDate:
                                type: integer
                                format: timestamp in milliseconds
                                example: 1478586884810
                              code:
                                type: string
                                example: IDR
                              name:
                                type: string
                                example: Indonesian Rupiah
                              baseCurrency:
                                type: boolean
                                example: true
              example:
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                first: true
                last: true
                size: 20
                number: 0
                content:
                - id: eb919ed1-c3c1-4334-a626-b9178b8a98ae
                  name: Comp Bank Account 1
                  companyCode: C001
                  accountNumber: '98343411'
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    name: BCA Wisma Asia
                    code: BCA01
                    address: Jl. Sudirman No. 1
                    bank:
                      id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      code: '014'
                      name: BCA
                      llg: '146789'
                  currency:
                    id: d1ea18d8-a691-11e6-80f5-76304dec7066
                    code: IDR
                    name: Indonesian Rupiah
                    baseCurrency: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/company-bank-accounts?page=0&size=10&query=id%3Aeb919ed1-c3c1-4334-a626-b9178b8a98ae\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.company_bank_accounts.list(\n    page=0, size=10, query=\"id:eb919ed1-c3c1-4334-a626-b9178b8a98ae\"\n)"
  /core/v1/cities:
    get:
      tags:
      - master-data
      summary: Get Cities
      description: Return the cities.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
              example:
                content:
                - id: fffef432-9d5f-4c41-b20f-2a2eb3ac6f9c
                  code: '91.17'
                  name: Kab. Mappi
                  state:
                    id: 71f5c140-a699-11e6-80f5-76304dec7eb7
                    name: Papua
                    code: '91'
                    country:
                      id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                      code: IDN
                      callingCode: '+62'
                      name: Indonesia
                      taxTreaty: false
                totalPages: 1
                last: false
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 1
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/cities\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.cities.list()"
    post:
      tags:
      - master-data
      summary: Create City
      description: Create a city.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  state:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      country:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          callingCode:
                            type: string
                          taxTreaty:
                            type: boolean
              example:
                id: fffef432-9d5f-4c41-b20f-2a2eb3ac6f9c
                code: '91.17'
                name: Kab. Mappi
                state:
                  id: 71f5c140-a699-11e6-80f5-76304dec7eb7
                  name: Papua
                  code: '91'
                  country:
                    id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                    code: IDN
                    callingCode: '+62'
                    name: Indonesia
                    taxTreaty: false
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                state:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
              required:
              - code
              - name
              - state
            example:
              code: '91.17'
              name: Kab. Mappi
              state:
                id: 71f5c140-a699-11e6-80f5-76304dec7eb7
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/cities\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"91.17\",\n  \"name\": \"Kab. Mappi\",\n  \"state\": {\n    \"id\": \"71f5c140-a699-11e6-80f5-76304dec7eb7\"\n  }\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import CityRequest, IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.cities.create(\n    city_request=CityRequest(\n        code=\"91.17\",\n        name=\"Kab. Mappi\",\n        state=IdRequest(id=\"71f5c140-a699-11e6-80f5-76304dec7eb7\"),\n    )\n)"
  /core/v1/states:
    get:
      tags:
      - master-data
      summary: Get States
      description: Return the states.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          country:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              callingCode:
                                type: string
                              taxTreaty:
                                type: boolean
                          description:
                            type: string
              example:
                content:
                - id: 71f5c140-a699-11e6-80f5-76304dec7eb7
                  name: Papua
                  code: '91'
                  description: Province in eastern Indonesia
                  country:
                    id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                    name: Indonesia
                    code: IDN
                totalPages: 1
                last: false
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 1
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/states\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.states.list()"
  /core/v1/companies:
    get:
      tags:
      - organization
      summary: Get Company
      description: Return the current tenant's company.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  code:
                    type: string
                  website:
                    type: string
                  siup:
                    type: string
                  tdp:
                    type: string
                  logo:
                    type: string
                  logoOriginalFilename:
                    type: string
                  logoFileMetadata:
                    type: object
                    properties:
                      filename:
                        type: string
                      path:
                        type: string
                      url:
                        type: string
                        format: uri
                  timeZone:
                    type: object
                    properties:
                      code:
                        type: string
                      offset:
                        type: string
                  email:
                    type: string
                  companySuperior:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                      website:
                        type: string
                      siup:
                        type: string
                      tdp:
                        type: string
                      logo:
                        type: string
                      logoOriginalFilename:
                        type: string
                      logoFileMetadata:
                        type: object
                        properties:
                          filename:
                            type: string
                          path:
                            type: string
                          url:
                            type: string
                            format: uri
                      timeZone:
                        type: object
                        properties:
                          code:
                            type: string
                          offset:
                            type: string
                      email:
                        type: string
                      location:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          locationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          city:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          latitude:
                            type: number
                            format: float
                          longitude:
                            type: number
                            format: float
                          headquarter:
                            type: boolean
                          address:
                            type: string
                          phone:
                            type: string
                          zipCode:
                            type: string
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD, effective date of the location
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD, end date of the location
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                              code:
                                type: string
                              name:
                                type: string
                  location:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      locationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      latitude:
                        type: number
                        format: float
                      longitude:
                        type: number
                        format: float
                      headquarter:
                        type: boolean
                      address:
                        type: string
                      phone:
                        type: string
                      zipCode:
                        type: string
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD, effective date of the location
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD, end date of the location
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          code:
                            type: string
                          name:
                            type: string
                  companyGroup:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
              example:
                id: b6be6665-9907-4585-af8b-944a475fc8e2
                name: Company Name
                code: Company Name
                website: http://www.company.com
                siup: SIUP/123/000-67.8
                tdp: TDP/123/000-67.8
                logo: company/b6be6665-9907-4585-af8b-944a475fc8e2.png
                logoOriginalFilename: catapa.png
                logoFileMetadata:
                  filename: catapa.png
                  path: company/b6be6665-9907-4585-af8b-944a475fc8e2.png
                  url: https://www.company.com/logo.png
                timeZone:
                  code: Asia/Jakarta
                  offset: +07:00
                email: company@example.com
                companySuperior:
                  id: 0332e2b1-ba56-4a33-9d8a-6e66a4acde21
                  name: blebelbelbelbel
                  code: blebelbelbelbel
                  website: www.companysuperior.com
                  siup: ''
                  tdp: ''
                  logo: company/0332e2b1-ba56-4a33-9d8a-6e66a4acde21.png
                  logoOriginalFilename: catapa.png
                  logoFileMetadata:
                    filename: catapa.png
                    path: company/0332e2b1-ba56-4a33-9d8a-6e66a4acde21.png
                    url: https://example.com/logo.png
                  timeZone:
                    code: Universal
                    offset: +00:00
                  email: superior@example.com
                  location:
                    id: a31aa166-70be-4303-81e4-5ada93b5213a
                    code: JOG
                    name: Yogyakarta
                    locationGroup:
                      id: 12345678-1234-1234-1234-123456789012
                      code: GRP01
                      name: Group 1
                    city:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                      code: '34.71'
                      name: Kota Yogyakarta
                      state:
                        id: 71f5a5fc-a699-11e6-80f5-76304dec7eb7
                        name: Special Region Yogyakarta
                        code: '34'
                        country:
                          id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                          code: IDN
                          callingCode: '+62'
                          name: Indonesia
                          taxTreaty: false
                    latitude: -7.72087
                    longitude: 110.35946
                    address: Jl. Turgo No.1, Beran, Tridadi, Daerah Istimewa Yogyakarta 63352, Indonesia
                    phone: '+628123456789'
                    zipCode: '60123'
                    headquarter: false
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                    effectiveDate: '2023-01-01'
                    endDate: '9999-12-31'
                location:
                  id: a31aa166-70be-4303-81e4-5ada93b5213a
                  code: JOG
                  name: Yogyakarta
                  locationGroup:
                    id: 12345678-1234-1234-1234-123456789012
                    code: GRP01
                    name: Group 1
                  city:
                    id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    code: '34.71'
                    name: Kota Yogyakarta
                    state:
                      id: 71f5a5fc-a699-11e6-80f5-76304dec7eb7
                      name: Special Region Yogyakarta
                      code: '34'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        code: IDN
                        callingCode: '+62'
                        name: Indonesia
                        taxTreaty: false
                  latitude: -7.72087
                  longitude: 110.35946
                  address: Jl. Turgo No.1, Beran, Tridadi, Daerah Istimewa Yogyakarta 63352, Indonesia
                  phone: '+628123456789'
                  zipCode: '60123'
                  headquarter: false
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: COMP-001
                    name: PT. CATAPA
                  effectiveDate: '2023-01-01'
                  endDate: '9999-12-31'
                companyGroup:
                  id: 045c6624-ea38-4b12-8827-e3197659b656
                  code: CG-1
                  name: Company Group 1
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/companies\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.companies.list()"
    post:
      tags:
      - organization
      summary: Create Company
      description: Create a new company. Send company data and optional logo as multipart/form-data.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  code:
                    type: string
                  website:
                    type: string
                  siup:
                    type: string
                  tdp:
                    type: string
                  logo:
                    type: string
                  logoOriginalFilename:
                    type: string
                  logoFileMetadata:
                    type: object
                    properties:
                      filename:
                        type: string
                      path:
                        type: string
                      url:
                        type: string
                        format: uri
                  timeZone:
                    type: object
                    properties:
                      code:
                        type: string
                      offset:
                        type: string
                  email:
                    type: string
                  companySuperior:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                      website:
                        type: string
                      siup:
                        type: string
                      tdp:
                        type: string
                      logo:
                        type: string
                      logoOriginalFilename:
                        type: string
                      logoFileMetadata:
                        type: object
                        properties:
                          filename:
                            type: string
                          path:
                            type: string
                          url:
                            type: string
                            format: uri
                      timeZone:
                        type: object
                        properties:
                          code:
                            type: string
                          offset:
                            type: string
                      email:
                        type: string
                      location:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          locationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          city:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          latitude:
                            type: number
                            format: float
                          longitude:
                            type: number
                            format: float
                          headquarter:
                            type: boolean
                          address:
                            type: string
                          phone:
                            type: string
                          zipCode:
                            type: string
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD, effective date of the location
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD, end date of the location
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                              code:
                                type: string
                              name:
                                type: string
                  location:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      locationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      latitude:
                        type: number
                        format: float
                      longitude:
                        type: number
                        format: float
                      headquarter:
                        type: boolean
                      address:
                        type: string
                      phone:
                        type: string
                      zipCode:
                        type: string
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD, effective date of the location
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD, end date of the location
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          code:
                            type: string
                          name:
                            type: string
                  companyGroup:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
              example:
                id: b6be6665-9907-4585-af8b-944a475fc8e2
                name: Company Name
                code: Company Name
                website: http://www.company.com
                siup: SIUP/123/000-67.8
                tdp: TDP/123/000-67.8
                logo: company/b6be6665-9907-4585-af8b-944a475fc8e2.png
                logoOriginalFilename: catapa.png
                logoFileMetadata:
                  filename: catapa.png
                  path: company/b6be6665-9907-4585-af8b-944a475fc8e2.png
                  url: https://example.com/logo.png
                timeZone:
                  code: Asia/Jakarta
                  offset: +07:00
                email: company@example.com
                companySuperior:
                  id: 0332e2b1-ba56-4a33-9d8a-6e66a4acde21
                  name: Company Superior Name
                  code: Company Superior Code
                  website: ''
                  siup: ''
                  tdp: ''
                  logo: company/0332e2b1-ba56-4a33-9d8a-6e66a4acde21.png
                  logoOriginalFilename: catapa.png
                  logoFileMetadata:
                    filename: catapa.png
                    path: company/0332e2b1-ba56-4a33-9d8a-6e66a4acde21.png
                    url: https://example.com/logo.png
                  timeZone:
                    code: Universal
                    offset: +00:00
                  email: superior@example.com
                  location:
                    id: a31aa166-70be-4303-81e4-5ada93b5213a
                    code: JOG
                    name: Yogyakarta
                    locationGroup:
                      id: 12345678-1234-1234-1234-123456789012
                      code: GRP01
                      name: Group 1
                    city:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                      code: '34.71'
                      name: Kota Yogyakarta
                      state:
                        id: 71f5a5fc-a699-11e6-80f5-76304dec7eb7
                        name: Special Region Yogyakarta
                        code: '34'
                        country:
                          id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                          code: IDN
                          callingCode: '+62'
                          name: Indonesia
                          taxTreaty: false
                    latitude: -7.72087
                    longitude: 110.35946
                    address: Jl. Turgo No.1, Beran, Tridadi, Daerah Istimewa Yogyakarta 63352, Indonesia
                    phone: '+628123456789'
                    zipCode: '60123'
                    headquarter: false
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                    effectiveDate: '2023-01-01'
                    endDate: '9999-12-31'
                location:
                  id: a31aa166-70be-4303-81e4-5ada93b5213a
                  code: JOG
                  name: Yogyakarta
                  locationGroup:
                    id: 12345678-1234-1234-1234-123456789012
                    code: GRP01
                    name: Group 1
                  city:
                    id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    code: '34.71'
                    name: Kota Yogyakarta
                    state:
                      id: 71f5a5fc-a699-11e6-80f5-76304dec7eb7
                      name: Special Region Yogyakarta
                      code: '34'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        code: IDN
                        callingCode: '+62'
                        name: Indonesia
                        taxTreaty: false
                  latitude: -7.72087
                  longitude: 110.35946
                  address: Jl. Turgo No.1, Beran, Tridadi, Daerah Istimewa Yogyakarta 63352, Indonesia
                  phone: '+628123456789'
                  zipCode: '60123'
                  headquarter: false
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: COMP-001
                    name: PT. CATAPA
                  effectiveDate: '2023-01-01'
                  endDate: '9999-12-31'
        '400':
          description: Bad Request
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                request:
                  type: object
                  format: json
                  description: The Content-Type must be `application/json`
                  properties:
                    name:
                      type: string
                      minLength: 1
                      maxLength: 255
                    code:
                      type: string
                      minLength: 1
                      maxLength: 255
                    website:
                      type: string
                      minLength: 3
                      maxLength: 80
                    siup:
                      type: string
                      minLength: 1
                      maxLength: 255
                      pattern: '[a-zA-Z0-9-/. ]+'
                      description: Alphanumeric, hyphen (-), slash (/), period (.), and space
                    tdp:
                      type: string
                      minLength: 1
                      maxLength: 255
                      pattern: '[a-zA-Z0-9-/. ]+'
                      description: Alphanumeric, hyphen (-), slash (/), period (.), and space
                    timeZone:
                      type: object
                      description: Please refer to [Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). The `code` refers to the `TZ identifier` column, and the `offset` corresponds to the `UTC offset` > `SDT` column.
                      properties:
                        code:
                          type: string
                        offset:
                          type: string
                          pattern: ([+-][0-1][0-9]|[+-]2[0-3]):([0-5][0-9])
                          description: The `offset` must be between `-18` and `+18` hours, e.g. `+07:00`
                      required:
                      - code
                      - offset
                    email:
                      type: string
                      format: email
                      maxLength: 255
                    companySuperior:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Unique identifier
                      required:
                      - id
                    location:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Unique identifier
                      required:
                      - id
                  required:
                  - name
                  - timeZone
                  - email
                  - location
                file:
                  type: string
                  format: binary
                  description: 'Upload the company logo. Allowed file types: `jpg`, `jpeg`, `png`, and `svg`. The Content-Type must be `image/jpeg`, `image/png`, or `image/svg+xml`. The maximum file size is `4MB`.'
              required:
              - request
            encoding:
              request:
                contentType: application/json
            example:
              request:
                name: Company Name
                code: Company Name
                website: http://www.company.com
                siup: SIUP/123/000-67.8
                tdp: TDP/123/000-67.8
                timeZone:
                  code: Asia/Jakarta
                  offset: +07:00
                email: company@example.com
                companySuperior:
                  id: 0332e2b1-ba56-4a33-9d8a-6e66a4acde21
                location:
                  id: a31aa166-70be-4303-81e4-5ada93b5213a
              file: catapa.png
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/companies\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -F 'request={\"name\": \"Company Name\", \"code\": \"Company Name\", \"website\": \"http://www.company.com\", \"siup\": \"SIUP/123/000-67.8\", \"tdp\": \"TDP/123/000-67.8\", \"timeZone\": {\"code\": \"Asia/Jakarta\", \"offset\": \"+07:00\"}, \"email\": \"company@example.com\", \"companySuperior\": {\"id\": \"0332e2b1-ba56-4a33-9d8a-6e66a4acde21\"}, \"location\": {\"id\": \"a31aa166-70be-4303-81e4-5ada93b5213a\"}};type=application/json' \\\n  -F 'file=@catapa.png'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import CompanyDetailRequest, CompanyDetailTimeZoneRequest, IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.companies.create(\n    request=CompanyDetailRequest(\n        name=\"Company Name\",\n        code=\"Company Name\",\n        website=\"http://www.company.com\",\n        siup=\"SIUP/123/000-67.8\",\n        tdp=\"TDP/123/000-67.8\",\n        time_zone=CompanyDetailTimeZoneRequest(code=\"Asia/Jakarta\", offset=\"+07:00\"),\n        email=\"company@example.com\",\n        company_superior=IdRequest(id=\"0332e2b1-ba56-4a33-9d8a-6e66a4acde21\"),\n        location=IdRequest(id=\"a31aa166-70be-4303-81e4-5ada93b5213a\"),\n    ),\n    file=open(\"catapa.png\", \"rb\"),\n)"
  /core/v1/contact-information:
    get:
      tags:
      - contact-information
      summary: Get Historical Contact Information
      description: Return the historical contact information.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                                                                                                                                   |
          |--------------------|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
          | id                 | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter<br/>The contact information ID value is the same as the ID of the employee who owns this contact information  |
          | employee.id        | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter<br/>The contact information ID value is the same as the ID of the employee who owns this contact information  |
        schema:
          type: string
        examples:
          id:
            summary: Search Contact Information by Multiple Contact Information or Employee IDs
            value: id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;0100902f-5d8f-4de4-8fae-5ced86831dd1
          employee.id:
            summary: Search Contact Information by Multiple Contact Information or Employee IDs
            value: employee.id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;0100902f-5d8f-4de4-8fae-5ced86831dd1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          mobilePhone:
                            type: string
                          email:
                            type: string
                            description: deprecated
                          workEmail:
                            type: string
                          personalEmail:
                            type: string
                          originalAddress:
                            type: string
                          originalAddressPhoneNumber:
                            type: string
                          originalAddressDetail:
                            type: object
                            properties:
                              address:
                                type: string
                              zipCode:
                                type: string
                              phone:
                                type: string
                              district:
                                type: string
                              city:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                          facebook:
                            type: string
                          linkedIn:
                            type: string
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
                          residentialAddress:
                            type: object
                            properties:
                              address:
                                type: string
                              zipCode:
                                type: string
                              phone:
                                type: string
                              district:
                                type: string
                              city:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                          emergencyContact:
                            type: object
                            properties:
                              name:
                                type: string
                              relation:
                                type: string
                              phone:
                                type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                              joinDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              startDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              active:
                                type: boolean
                              pointOfHire:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  locationGroup:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  city:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      state:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          country:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                              callingCode:
                                                type: string
                                              taxTreaty:
                                                type: boolean
                                  latitude:
                                    type: number
                                  longitude:
                                    type: number
                                  address:
                                    type: string
                                  phone:
                                    type: string
                                  zipCode:
                                    type: string
                                  headquarter:
                                    type: boolean
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                              photo:
                                type: object
                                properties:
                                  url:
                                    type: string
                              manager:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  identificationNumber:
                                    type: string
                                  name:
                                    type: string
                                  joinDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  startDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  active:
                                    type: boolean
                                  pointOfHire:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      locationGroup:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      city:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          state:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                              country:
                                                type: object
                                                properties:
                                                  id:
                                                    type: string
                                                  code:
                                                    type: string
                                                  name:
                                                    type: string
                                                  callingCode:
                                                    type: string
                                                  taxTreaty:
                                                    type: boolean
                                      latitude:
                                        type: number
                                      longitude:
                                        type: number
                                      address:
                                        type: string
                                      phone:
                                        type: string
                                      zipCode:
                                        type: string
                                      headquarter:
                                        type: boolean
                                      company:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                  photo:
                                    type: object
                                    properties:
                                      url:
                                        type: string
              example:
                content:
                - id: c78d4a0f-9db1-47d0-b93e-960ea2d7b0ab
                  mobilePhone: '+1231'
                  email: email123@gmail.com
                  workEmail: work.email@company.com
                  personalEmail: personal.email@gmail.com
                  originalAddress: 10 Bayfront Ave
                  originalAddressPhoneNumber: '+2231'
                  originalAddressDetail:
                    address: 10 Bayfront Ave
                    zipCode: '54321'
                    phone: '+2231'
                    district: San Andreas
                    city:
                      id: 2d1e9f5a-a6ea-11e6-80f5-76304dec7eb7
                      code: NYC
                      name: New York City
                      state:
                        id: 71f59dbe-a699-11e6-80f5-76304dec7eb7
                        code: NY
                        name: New York
                        country:
                          id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                          code: US
                          name: United States
                  facebook: www.facebook.com/johndoe
                  linkedIn: www.linkedin.com/in/johndoe
                  effectiveDate: '2023-01-15'
                  createdBy: system
                  createdDate: 1481024187133
                  updatedBy: system
                  updatedDate: 1481024187133
                  residentialAddress:
                    address: 123 Main Street
                    zipCode: '12345'
                    phone: '+1234567890'
                    district: San Andreas
                    city:
                      id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                      code: '31.70'
                      name: Jakarta
                      state:
                        id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                        code: '31'
                        name: Jakarta Special Capital Region
                        country:
                          id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                          code: IDN
                          name: Indonesia
                  emergencyContact:
                    name: Emergency Contact
                    relation: Friend
                    phone: '+1234567890'
                  employee:
                    id: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                    identificationNumber: EMP12345
                    name: John Doe
                    joinDate: '2022-08-15'
                    startDate: '2022-08-15'
                    active: true
                    pointOfHire:
                      id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                      code: JKT-01
                      name: Jakarta Head Office
                      locationGroup:
                        id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                        code: HQ
                        name: Headquarters
                      city:
                        id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                        code: '31.70'
                        name: Jakarta
                        state:
                          id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                          name: Jakarta Special Capital Region
                          code: '31'
                          country:
                            id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                            code: IDN
                            callingCode: '62'
                            name: Indonesia
                            taxTreaty: true
                      latitude: -6.2088
                      longitude: 106.8456
                      address: Jl. Jenderal Sudirman Kav. 52-53
                      phone: '+62215151234'
                      zipCode: '12190'
                      headquarter: true
                      company:
                        id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                        code: COMP-A
                        name: PT Example Company
                    photo:
                      url: https://example.com/photos/john_doe.jpg
                    manager:
                      id: 0100902f-5d8f-4de4-8fae-5ced86831dd1
                      identificationNumber: MGR5678
                      name: Jane Smith
                      joinDate: '2020-01-14'
                      startDate: '2020-01-14'
                      active: true
                      pointOfHire:
                        id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                        code: JKT-01
                        name: Jakarta Head Office
                        locationGroup:
                          id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                          code: HQ
                          name: Headquarters
                        city:
                          id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                          code: '31.70'
                          name: Jakarta
                          state:
                            id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                            name: Jakarta Special Capital Region
                            code: '31'
                            country:
                              id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                              code: IDN
                              callingCode: '62'
                              name: Indonesia
                              taxTreaty: true
                        latitude: -6.2088
                        longitude: 106.8456
                        address: Jl. Jenderal Sudirman Kav. 52-53
                        phone: '+62215151234'
                        zipCode: '12190'
                        headquarter: true
                        company:
                          id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                          code: COMP-A
                          name: PT Example Company
                      photo:
                        url: https://example.com/photos/jane_smith.jpg
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/contact-information?page=0&size=10&query=id%3Ae18f5618-bc6c-11e6-80f5-76304dec7eb1%3B0100902f-5d8f-4de4-8fae-5ced86831dd1\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.contact_information.list(\n    page=0,\n    size=10,\n    query=\"id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;0100902f-5d8f-4de4-8fae-5ced86831dd1\",\n)"
  /core/v1/company-groups:
    get:
      tags:
      - organization
      summary: Get Company Groups
      description: Return the company groups.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys  | Supported Operators | Notes                                                                                     |
          |-----------------|---------------------|-------------------------------------------------------------------------------------------|
          | code            | `:`                 | Like operator                                                                             |
          | name            | `:`                 | Like operator                                                                             |
        schema:
          type: string
        examples:
          one:
            summary: Search a company group by code
            value: code:CG-1
          two:
            summary: Search a company group by name
            value: name:Company Group 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            description: The unique identifier for the company group
                          name:
                            type: string
                            description: The name of the company group
                          code:
                            type: string
                            description: The code of the company group
              example:
                content:
                - id: a31aa166-70be-4303-81e4-5ada93b5213a
                  code: CG-1
                  name: Company Group 1
                - id: f4eaf74f-3e63-414f-b7be-54c46902407f
                  code: CG-2
                  name: Company Group 2
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                sort:
                - direction: ASC
                  property: name
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: true
                  descending: false
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/company-groups?page=0&size=10&query=code%3ACG-1\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.company_groups.list(page=0, size=10, query=\"code:CG-1\")"
  /core/v1/cost-centers:
    get:
      tags:
      - organization
      summary: Get Cost Center
      description: Return the cost centers.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          code:
                            type: string
                          name:
                            type: string
                          description:
                            type: string
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                              code:
                                type: string
                              name:
                                type: string
              example:
                content:
                - id: 840d6569-97aa-4a9a-be38-e808a39b0832
                  code: CC1
                  name: CC API 1
                  description: Isn't it a great cost center?
                  company:
                    id: 12345678-1234-1234-1234-123456789012
                    code: COMP-001
                    name: Company Name
                - id: 37a119e0-9b5c-4f5a-829c-cb27fe65a410
                  code: CC3
                  name: CC API 3
                  description: 10 Bayfront Ave, Singapore 018956
                  company:
                    id: 12345678-1234-1234-1234-123456789012
                    code: COMP-001
                    name: Company Name
                - id: 2c0821e2-9c15-4626-a4c1-9e3ee380c100
                  code: CC2
                  name: CC API 2
                  description: is this one also a great cost center?
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: C1
                    name: Company 1
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 3
                totalElements: 3
                last: true
                sort:
                - direction: ASC
                  property: id
                first: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/cost-centers\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.cost_centers.list()"
    post:
      tags:
      - organization
      summary: Create Cost Center
      description: Create a cost center.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  code:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  company:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      code:
                        type: string
                      name:
                        type: string
              example:
                id: f1358390-54f8-4cee-9464-6dc0607fe25b
                code: CC
                name: Cost
                description: ''
                company:
                  id: 12345678-1234-1234-1234-123456789012
                  code: COMP-001
                  name: Company Name
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                description:
                  type: string
                  maxLength: 65535
              required:
              - code
              - name
            example:
              code: CC
              name: Cost
              description: ''
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/cost-centers\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"CC\",\n  \"name\": \"Cost\",\n  \"description\": \"\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import CostCenterRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.cost_centers.create(\n    cost_center_request=CostCenterRequest(code=\"CC\", name=\"Cost\", description=\"\")\n)"
  /core/v1/cost-centers/{id}:
    put:
      tags:
      - organization
      summary: Update Cost Center
      description: Update the cost center.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  code:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  company:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      code:
                        type: string
                      name:
                        type: string
              example:
                id: f1358390-54f8-4cee-9464-6dc0607fe25b
                code: CC Edit
                name: Cost Edit
                description: ''
                company:
                  id: 12345678-1234-1234-1234-123456789012
                  code: COMP-001
                  name: Company Name
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                description:
                  type: string
                  maxLength: 65535
              required:
              - code
              - name
            example:
              code: CC Edit
              name: Cost Edit
              description: ''
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/cost-centers/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"CC Edit\",\n  \"name\": \"Cost Edit\",\n  \"description\": \"\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import CostCenterRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.cost_centers.update(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    cost_center_request=CostCenterRequest(\n        code=\"CC Edit\", name=\"Cost Edit\", description=\"\"\n    ),\n)"
  /core/v1/countries:
    get:
      tags:
      - master-data
      summary: Get Countries
      description: Return the countries.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          callingCode:
                            type: string
                          taxTreaty:
                            type: boolean
              example:
                content:
                - id: d1eb9334-a691-11e6-80f5-76304dec7eb7
                  code: ZWE
                  callingCode: '+263'
                  name: Zimbabwe
                  taxTreaty: false
                totalPages: 1
                last: false
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 1
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/countries\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.countries.list()"
    post:
      tags:
      - master-data
      summary: Create Country
      description: Create a country.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  callingCode:
                    type: string
                  taxTreaty:
                    type: boolean
              example:
                id: d1eb9334-a691-11e6-80f5-76304dec7eb7
                code: ZWE
                callingCode: '+263'
                name: Zimbabwe
                taxTreaty: false
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                callingCode:
                  type: string
                  minLength: 1
                  maxLength: 5
                  pattern: ^\+\d{1,5}$
                  description: e.g. `+62`
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                taxTreaty:
                  type: boolean
                  default: false
              required:
              - code
              - callingCode
              - name
            example:
              code: IDN
              callingCode: '+62'
              name: Indonesia
              taxTreaty: true
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/countries\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"IDN\",\n  \"callingCode\": \"+62\",\n  \"name\": \"Indonesia\",\n  \"taxTreaty\": true\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import CountryRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.countries.create(\n    country_request=CountryRequest(\n        code=\"IDN\", calling_code=\"+62\", name=\"Indonesia\", tax_treaty=True\n    )\n)"
  /core/v1/currencies:
    get:
      tags:
      - master-data
      summary: Get Currencies
      description: Return the currencies.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: d1ea18d8-a691-11e6-80f5-76304dec7066
                          createdBy:
                            type: string
                            example: system
                          createdDate:
                            type: integer
                            format: timestamp in milliseconds
                            example: 1478586884810
                          updatedBy:
                            type: string
                            example: system
                          updatedDate:
                            type: integer
                            format: timestamp in milliseconds
                            example: 1478586884810
                          code:
                            type: string
                            example: IDR
                          name:
                            type: string
                            example: Indonesian Rupiah
                          baseCurrency:
                            type: boolean
                            example: true
              example:
                content:
                - id: d1ea18d8-a691-11e6-80f5-76304dec7179
                  code: ZWL
                  name: Zimbabwean Dollar A/10
                  baseCurrency: false
                totalPages: 1
                last: false
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 1
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/currencies\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.currencies.list()"
  /core/v1/educations:
    get:
      tags:
      - master-data
      summary: Get Historical Educations
      description: Return the historical educations.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                |
          |--------------------|---------------------|--------------------------------------------------------------------------------------|
          | id                 | `:`                 | Equal operator with multiple values. Each value should separated with delimiters `;` |
          | employee.id        | `:`                 | Equal operator with multiple values. Each value should separated with delimiters `;` |
        schema:
          type: string
        examples:
          one:
            summary: Search Educations by Multiple IDs
            value: id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6
          two:
            summary: Search Educations by Multiple Employee IDs
            value: employee.id:d290f1ee-6c54-4b01-90e6-d701748f0851;0100902f-5d8f-4de4-8fae-5ced86831dd1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          educationLevel:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                          fieldOfStudy:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                          country:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              callingCode:
                                type: string
                              taxTreaty:
                                type: boolean
                          institution:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                          startDate:
                            type: string
                          graduationDate:
                            type: string
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
              example:
                content:
                - id: e28f5618-bc6c-11e6-80f5-76304dec7eb1
                  educationLevel:
                    id: 17ddbb6c-c74e-46ca-b828-45099db71670
                    name: Bachelor Degree
                    code: BACHELOR
                  fieldOfStudy:
                    id: dc5c5267-686b-4050-8f10-3f5c3c7d6aba
                    name: Computer Science
                    code: COMPSC
                  country:
                    id: 4f09406b-a143-428a-8b93-855483f4de80
                    name: Indonesia
                    code: IDN
                  institution:
                    id: 6248cd57-68cd-48a9-af19-5ebdecd59482
                    name: University of Indonesia
                    code: UI
                  startDate: '2015-09-17'
                  graduationDate: '2019-06-30'
                  createdBy: system
                  createdDate: 1745996853000
                  updatedBy: system
                  updatedDate: 1745996853000
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: startDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/educations?page=0&size=10&query=id%3Ae18f5618-bc6c-11e6-80f5-76304dec7eb1%3Bf38f5618-bc6c-11e6-80f5-76304dec7ec6\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.educations.list(\n    page=0,\n    size=10,\n    query=\"id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6\",\n)"
  /core/v1/education-levels:
    get:
      tags:
      - master-data
      summary: Get Education Levels
      description: Return the education levels.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                |
          |--------------------|---------------------|--------------------------------------------------------------------------------------|
          | id                 | `:`                 | Equal operator with multiple values. Each value should separated with delimiters `;` |
        schema:
          type: string
        examples:
          one:
            summary: Search education levels by multiple IDs
            value: id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
              example:
                content:
                - id: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                  name: Sekolah Dasar
                  code: EDLV4
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: name
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/education-levels?page=0&size=10&query=id%3Ae18f5618-bc6c-11e6-80f5-76304dec7eb1%3Bf38f5618-bc6c-11e6-80f5-76304dec7ec6\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.education_levels.list(\n    page=0,\n    size=10,\n    query=\"id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6\",\n)"
  /core/v1/employees:
    get:
      tags:
      - employee
      summary: Get Employees
      description: Return the employees.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search query  
          | Supported Keys                    | Supported Operators | Notes                                                                                                                                                 |
          |-----------------------------------|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
          | id                                | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter                                                             |
          | active                            | `:`                 | Equal operator                                                                                                                                        |
          | createdDate                       | `>`<br/>`<`         | Greater than or equal operator<br/>Less than or equal operator<br/><br/>Use unix timestamp in milliseconds, e.g. `createdDate>1675827618944`          |
          | employmentStatus.organization.id  | `:`                 | Equal operator                                                                                                                                        |
          | identificationNumber              | `:`                 | Like operator                                                                                                                                         |
          | identificationNumberIn            | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter                                                             |
          | name                              | `:`                 | Like operator                                                                                                                                         |
          | startDate                         | `:`<br/>`>`<br/>`<` | Equal operator<br/>Greater than or equal operator<br/>Less than or equal operator<br/><br/>Use `yyyy-MM-dd` format, e.g. `startDate>2023-05-31`       |
          | lastWorkingDate                   | `>`<br/>`<`         | Greater than or equal operator<br/>Less than or equal operator<br/><br/>Use `yyyy-MM-dd` format, e.g. `lastWorkingDate>2023-05-31`                    |
        schema:
          type: string
        examples:
          one:
            summary: Search an employee by identification number
            value: identificationNumberIn:E001
          two:
            summary: Search employees by multiple identification number
            value: identificationNumberIn:E001;E002
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          identificationNumber:
                            type: string
                          name:
                            type: string
                          joinDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          startDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          active:
                            type: boolean
                          pointOfHire:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              locationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              city:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                              latitude:
                                type: number
                              longitude:
                                type: number
                              address:
                                type: string
                              phone:
                                type: string
                              zipCode:
                                type: string
                              headquarter:
                                type: boolean
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          photo:
                            type: object
                            properties:
                              url:
                                type: string
                          manager:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                              joinDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              startDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              active:
                                type: boolean
                              pointOfHire:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  locationGroup:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  city:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      state:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          country:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                              callingCode:
                                                type: string
                                              taxTreaty:
                                                type: boolean
                                  latitude:
                                    type: number
                                  longitude:
                                    type: number
                                  address:
                                    type: string
                                  phone:
                                    type: string
                                  zipCode:
                                    type: string
                                  headquarter:
                                    type: boolean
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                              photo:
                                type: object
                                properties:
                                  url:
                                    type: string
              example:
                content:
                - id: 24ce2a29-58d5-4c38-beb6-a6a738e9d729
                  identificationNumber: E001
                  name: John Doe
                  joinDate: '2019-01-01'
                  startDate: '2019-01-01'
                  pointOfHire:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: JKT
                    name: Jakarta
                    address: Menara Citicon, 17th Floor, Jl. Letjen. S. Parman Kav 72
                    phone: +62-21-1234567
                    zipCode: '11410'
                    locationGroup:
                      id: 81d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: LG-001
                      name: Location Group Name
                    city:
                      id: 2d1e9f5a-a6ea-11e6-80f5-76304dec7eb7
                      code: '31.73'
                      name: Kota Adm. Jakarta Barat
                      state:
                        id: 71f59dbe-a699-11e6-80f5-76304dec7eb7
                        code: '31'
                        name: Jakarta Special Capital Region
                        country:
                          id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                          code: IDN
                          callingCode: '+62'
                          name: Indonesia
                          taxTreaty: false
                  photo:
                    url: ''
                  manager:
                    id: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
                    identificationNumber: E002
                    name: Jane Smith
                    joinDate: '2018-01-01'
                    startDate: '2018-01-01'
                    pointOfHire:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: JKT
                      name: Jakarta
                      address: Menara Citicon, 17th Floor, Jl. Letjen. S. Parman Kav 72
                      phone: +62-21-7654321
                      zipCode: '11410'
                      locationGroup:
                        id: 81d5f69a-a5a4-1111-80f5-76304dec7eb7
                        code: LG-001
                        name: Location Group Name
                      city:
                        id: 2d1e9f5a-a6ea-11e6-80f5-76304dec7eb7
                        code: '31.73'
                        name: Kota Adm. Jakarta Barat
                        state:
                          id: 71f59dbe-a699-11e6-80f5-76304dec7eb7
                          code: '31'
                          name: Jakarta Special Capital Region
                          country:
                            id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                            code: IDN
                            name: Indonesia
                            callingCode: '+62'
                            taxTreaty: false
                    photo:
                      url: ''
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees?page=0&size=10&query=identificationNumberIn%3AE001\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.list(\n    page=0, size=10, query=\"identificationNumberIn:E001\"\n)"
    post:
      tags:
      - employee
      summary: Add Employee
      description: Add an employee.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  maritalStatus:
                    type: string
                    enum:
                    - SINGLE
                    - MARRIED
                    - WIDOW
                    - WIDOWER
                  religion:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                  foreignLabour:
                    type: boolean
                  citizenship:
                    type: object
                  identificationNumber:
                    type: string
                  name:
                    type: string
                  dateOfBirth:
                    type: string
                  placeOfBirth:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      state:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          country:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              callingCode:
                                type: string
                              taxTreaty:
                                type: boolean
                  joinDate:
                    type: string
                  startDate:
                    type: string
                  gender:
                    type: string
                    enum:
                    - MALE
                    - FEMALE
                  pointOfHire:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      locationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      latitude:
                        type: number
                      longitude:
                        type: number
                      address:
                        type: string
                      phone:
                        type: string
                      zipCode:
                        type: string
                      headquarter:
                        type: boolean
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                  employmentStatusNumber:
                    type: string
                  organization:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      type:
                        type: string
                        enum:
                        - STRUCTURAL
                        - FUNCTIONAL
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      createdBy:
                        type: string
                      createdDate:
                        type: number
                      updatedBy:
                        type: string
                      updatedDate:
                        type: number
                      organizationHierarchy:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          color:
                            type: string
                          level:
                            type: integer
                      organizationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      organizationParent:
                        type: object
                        deprecated: true
                        description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          type:
                            type: string
                            enum:
                            - STRUCTURAL
                            - FUNCTIONAL
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
                          organizationHierarchy:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              color:
                                type: string
                              level:
                                type: integer
                          organizationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          organizationParent:
                            type: object
                            description: Deprecated. Always null.
                            deprecated: true
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                  jobTitle:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                      effectiveDate:
                        type: string
                        format: date
                      endDate:
                        type: string
                        format: date
                      minJobLevel:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          jobPosition:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          level:
                            type: number
                          effectiveDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
                      maxJobLevel:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          jobPosition:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          level:
                            type: number
                          effectiveDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
                  jobLevel:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      jobPosition:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      level:
                        type: number
                      effectiveDate:
                        type: string
                        format: date
                      endDate:
                        type: string
                        format: date
                  location:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      locationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      latitude:
                        type: number
                        format: float
                      longitude:
                        type: number
                        format: float
                      headquarter:
                        type: boolean
                      address:
                        type: string
                      phone:
                        type: string
                      zipCode:
                        type: string
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD, effective date of the location
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD, end date of the location
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          code:
                            type: string
                          name:
                            type: string
                  employmentType:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      employmentGroupCode:
                        type: string
                      monthDuration:
                        type: integer
                      permanent:
                        type: boolean
                      effectiveDate:
                        type: string
                        format: date
                      endDate:
                        type: string
                        format: date
                  contractStart:
                    type: string
                  contractEnd:
                    type: string
                  identityCardNumber:
                    type: string
                  identityCardExpiredDate:
                    type: string
                    format: date
                  email:
                    type: string
              example:
                id: 24ce2a29-58d5-4c38-beb6-a6a738e9d729
                maritalStatus: SINGLE
                religion:
                  id: daa7f10k-a734-11e6-80f5-76304dec7eb7
                  name: Others
                  code: Others
                foreignLabour: false
                citizenship:
                  id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                  code: IDN
                  callingCode: '+62'
                  name: Indonesia
                  taxTreaty: false
                identificationNumber: '123456789'
                name: name
                dateOfBirth: '2000-01-01'
                placeOfBirth:
                  id: 2e2eaa46-481a-4bde-89b2-56c033aa48d7
                  code: '53.15'
                  name: Kab. Manggarai Barat
                  state:
                    id: 71f5aad4-a699-11e6-80f5-76304dec7eb7
                    name: East Nusa Tenggara
                    code: '53'
                    country:
                      id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                      code: IDN
                      callingCode: '+62'
                      name: Indonesia
                      taxTreaty: false
                joinDate: '2019-01-01'
                startDate: '2019-01-01'
                gender: MALE
                pointOfHire:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                  code: JKT
                  name: Jakarta
                  locationGroup:
                    id: 12345678-1234-1234-1234-123456789012
                    code: GRP01
                    name: Group 1
                  city:
                    id: 2d1e9f5a-a6ea-11e6-80f5-76304dec7eb7
                    code: '31.73'
                    name: Kota Adm. Jakarta Barat
                    state:
                      id: 71f59dbe-a699-11e6-80f5-76304dec7eb7
                      name: Jakarta Special Capital Region
                      code: '31'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        code: IDN
                        callingCode: '+62'
                        name: Indonesia
                        taxTreaty: false
                  latitude: 0
                  longitude: 0
                  address: Menara Citicon, 17th Floor, Jl. Letjen. S. Parman Kav 72
                  phone: ''
                  zipCode: '11410'
                  headquarter: false
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: COMP-001
                    name: PT. CATAPA
                employmentStatusNumber: 001/PKWT/01/2019
                organization:
                  id: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
                  code: '002'
                  name: ICT
                  type: FUNCTIONAL
                  effectiveDate: '1970-01-01'
                  endDate: '2099-12-31'
                  createdBy: system
                  createdDate: 1481024187133
                  updatedBy: system
                  updatedDate: 1481024187133
                  organizationHierarchy:
                    id: a896d062-aba9-11e6-80f5-76304dec7eb7
                    code: '002'
                    name: Departemen
                    color: '#B7783A'
                    level: 2
                  organizationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: OG
                    name: Organization Group
                  organizationParent: {}
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: COMP-001
                    name: PT. CATAPA
                jobTitle:
                  id: 3fb954ed-f00d-4f6f-b9ee-35f3ef817df9
                  code: JT010
                  name: Staff
                  minJobLevel:
                    id: 4211c096-4c06-4cce-8bf3-c6060a46ac34
                    code: '01'
                    name: House Staff
                    jobPosition:
                      id: 4a1666cc-d7e8-11e6-bf26-cec0c932ce01
                      code: OUTSOURCE
                      name: PIHAK KETIGA
                    level: 1
                  maxJobLevel:
                    id: 4211c096-4c06-4cce-8bf3-c6060a46ac34
                    code: '01'
                    name: House Staff
                    jobPosition:
                      id: 4a1666cc-d7e8-11e6-bf26-cec0c932ce01
                      code: OUTSOURCE
                      name: PIHAK KETIGA
                    level: 1
                jobLevel:
                  id: 944e67fc-3ac4-463d-9854-db536f4dad56
                  code: '020'
                  name: Staff
                  jobPosition:
                    id: 12345678-1234-1234-1234-123456789012
                    code: JP01
                    name: Position 1
                  level: 1
                location:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                  code: JKT
                  name: Jakarta
                  locationGroup:
                    id: 12345678-1234-1234-1234-123456789012
                    code: GRP01
                    name: Group 1
                  city:
                    id: 2d1e9f5a-a6ea-11e6-80f5-76304dec7eb7
                    code: '31.73'
                    name: Kota Adm. Jakarta Barat
                    state:
                      id: 71f59dbe-a699-11e6-80f5-76304dec7eb7
                      name: Jakarta Special Capital Region
                      code: '31'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        code: IDN
                        callingCode: '+62'
                        name: Indonesia
                        taxTreaty: false
                  latitude: 0
                  longitude: 0
                  address: Menara Citicon, 17th Floor, Jl. Letjen. S. Parman Kav 72
                  phone: ''
                  zipCode: '11410'
                  headquarter: false
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: COMP-001
                    name: PT. CATAPA
                  effectiveDate: '2023-01-01'
                  endDate: '9999-12-31'
                employmentType:
                  id: a896cc20-aba9-11e6-80f7-76304dec7eb7
                  name: Contract - 6 months
                  employmentGroupCode: '002'
                  monthDuration: 6
                  permanent: false
                contractStart: '2019-01-01'
                contractEnd: '2019-07-01'
                identityCardNumber: '1234567890'
                identityCardExpiredDate: '1970-01-01'
                email: test@gmail.com
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                username:
                  type: string
                  maxLength: 255
                email:
                  type: string
                  format: email
                  maxLength: 255
                joinDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                startDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                contractStart:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                contractEnd:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                dateOfBirth:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                employmentStatusNumber:
                  type: string
                  maxLength: 255
                employmentTypeId:
                  type: string
                foreignLabour:
                  type: boolean
                  default: false
                gender:
                  type: string
                  enum:
                  - MALE
                  - FEMALE
                identificationNumber:
                  type: string
                  maxLength: 255
                identityCardExpiredDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                identityCardNumber:
                  type: string
                  minLength: 1
                  maxLength: 255
                jobLevelId:
                  type: string
                jobTitleId:
                  type: string
                locationId:
                  type: string
                maritalStatus:
                  type: string
                  enum:
                  - SINGLE
                  - MARRIED
                  - WIDOW
                  - WIDOWER
                organizationId:
                  type: string
                placeOfBirthId:
                  type: string
                  description: City
                pointOfHireId:
                  type: string
                  description: Location
                religionId:
                  type: string
                citizenshipId:
                  type: string
                  description: Country
                positionId:
                  type: string
                subLocationId:
                  type: string
                operationalGroupId:
                  type: string
                workEmail:
                  type: string
                  format: email
                  maxLength: 255
                costCenterId:
                  type: string
              required:
              - name
              - joinDate
              - startDate
              - dateOfBirth
              - employmentTypeId
              - gender
              - identityCardNumber
              - jobLevelId
              - jobTitleId
              - locationId
              - maritalStatus
              - organizationId
              - pointOfHireId
              - religionId
              - citizenshipId
            example:
              jobTitleId: 3fb954ed-f00d-4f6f-b9ee-35f3ef817df9
              gender: MALE
              identityCardNumber: '1234567890'
              contractEnd: '2019-07-01'
              foreignLabour: false
              dateOfBirth: '2000-01-01'
              jobLevelId: 944e67fc-3ac4-463d-9854-db536f4dad56
              religionId: daa7f10k-a734-11e6-80f5-76304dec7eb7
              citizenshipId: d1eac40e-a691-11e6-80f5-76304dec7eb7
              organizationId: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
              joinDate: '2019-01-01'
              employmentTypeId: a896cc20-aba9-11e6-80f7-76304dec7eb7
              locationId: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
              name: name
              placeOfBirthId: 2e2eaa46-481a-4bde-89b2-56c033aa48d7
              identificationNumber: '1234567890'
              identityCardExpiredDate: '1970-01-01'
              pointOfHireId: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
              contractStart: '2019-01-01'
              maritalStatus: SINGLE
              startDate: '2019-01-01'
              email: test@gmail.com
              employmentStatusNumber: ESN
              username: test
              positionId: e308b10e-9138-415f-b240-a5ef417193e3
              subLocationId: 8b0d8fb8-9643-4b39-83fa-c06bdc783357
              operationalGroupId: fa411e7e-2404-4764-b786-7ca3c35e7b07
              workEmail: work@email.com
              costCenterId: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/employees\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"name\": \"name\",\n  \"username\": \"test\",\n  \"email\": \"test@gmail.com\",\n  \"joinDate\": \"2019-01-01\",\n  \"startDate\": \"2019-01-01\",\n  \"contractStart\": \"2019-01-01\",\n  \"contractEnd\": \"2019-07-01\",\n  \"dateOfBirth\": \"2000-01-01\",\n  \"employmentStatusNumber\": \"ESN\",\n  \"employmentTypeId\": \"a896cc20-aba9-11e6-80f7-76304dec7eb7\",\n  \"foreignLabour\": false,\n  \"gender\": \"MALE\",\n  \"identificationNumber\": \"1234567890\",\n  \"identityCardExpiredDate\": \"1970-01-01\",\n  \"identityCardNumber\": \"1234567890\",\n  \"jobLevelId\": \"944e67fc-3ac4-463d-9854-db536f4dad56\",\n  \"jobTitleId\": \"3fb954ed-f00d-4f6f-b9ee-35f3ef817df9\",\n  \"locationId\": \"61d5f69a-a5a4-1111-80f5-76304dec7eb7\",\n  \"maritalStatus\": \"SINGLE\",\n  \"organizationId\": \"8adeb8b6-acab-11e6-80f5-76304dec7eb7\",\n  \"placeOfBirthId\": \"2e2eaa46-481a-4bde-89b2-56c033aa48d7\",\n  \"pointOfHireId\": \"61d5f69a-a5a4-1111-80f5-76304dec7eb7\",\n  \"religionId\": \"daa7f10k-a734-11e6-80f5-76304dec7eb7\",\n  \"citizenshipId\": \"d1eac40e-a691-11e6-80f5-76304dec7eb7\",\n  \"positionId\": \"e308b10e-9138-415f-b240-a5ef417193e3\",\n  \"subLocationId\": \"8b0d8fb8-9643-4b39-83fa-c06bdc783357\",\n  \"operationalGroupId\": \"fa411e7e-2404-4764-b786-7ca3c35e7b07\",\n  \"workEmail\": \"work@email.com\",\n  \"costCenterId\": \"61d5f69a-a5a4-1111-80f5-76304dec7eb7\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.create(\n    employee_request=EmployeeRequest(\n        name=\"name\",\n        username=\"test\",\n        email=\"test@gmail.com\",\n        join_date=\"2019-01-01\",\n        start_date=\"2019-01-01\",\n        contract_start=\"2019-01-01\",\n        contract_end=\"2019-07-01\",\n        date_of_birth=\"2000-01-01\",\n        employment_status_number=\"ESN\",\n        employment_type_id=\"a896cc20-aba9-11e6-80f7-76304dec7eb7\",\n        foreign_labour=False,\n        gender=\"MALE\",\n        identification_number=\"1234567890\",\n        identity_card_expired_date=\"1970-01-01\",\n        identity_card_number=\"1234567890\",\n        job_level_id=\"944e67fc-3ac4-463d-9854-db536f4dad56\",\n        job_title_id=\"3fb954ed-f00d-4f6f-b9ee-35f3ef817df9\",\n        location_id=\"61d5f69a-a5a4-1111-80f5-76304dec7eb7\",\n        marital_status=\"SINGLE\",\n        organization_id=\"8adeb8b6-acab-11e6-80f5-76304dec7eb7\",\n        place_of_birth_id=\"2e2eaa46-481a-4bde-89b2-56c033aa48d7\",\n        point_of_hire_id=\"61d5f69a-a5a4-1111-80f5-76304dec7eb7\",\n        religion_id=\"daa7f10k-a734-11e6-80f5-76304dec7eb7\",\n        citizenship_id=\"d1eac40e-a691-11e6-80f5-76304dec7eb7\",\n        position_id=\"e308b10e-9138-415f-b240-a5ef417193e3\",\n        sub_location_id=\"8b0d8fb8-9643-4b39-83fa-c06bdc783357\",\n        operational_group_id=\"fa411e7e-2404-4764-b786-7ca3c35e7b07\",\n        work_email=\"work@email.com\",\n        cost_center_id=\"61d5f69a-a5a4-1111-80f5-76304dec7eb7\",\n    )\n)"
    delete:
      tags:
      - employee
      summary: Delete Employee
      description: |
        This endpoint expects a JSON array in the request body,  where each item is an object containing an `id` field representing the employee to delete. The array must contain between 1 and 50 items.
        **Request body schema:** ```json [
          { "id": "string" }
        ] ```
        **Example payload:** ```json [
          { "id": "7eb20b1e-577b-45c0-adf4-c76ae17cdeae" }
        ] ```
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier
                required:
                - id
            example:
            - id: 7eb20b1e-577b-45c0-adf4-c76ae17cdeae
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              examples:
                Success:
                  value:
                    successes:
                    - id: 7eb20b1e-577b-45c0-adf4-c76ae17cdeae
                    failures: []
                Failure:
                  value:
                    successes: []
                    failures:
                    - code: PRS-FAILED_DELETE_EMPLOYEE
                      message: Data tidak dapat dihapus karena sudah pernah diproses. Silakan periksa riwayat proses penggajian atau lainnya dan batalkan semua proses terlebih dahulu.
                      params:
                        id: b4138808-3ec9-4a44-b58d-ef161f870778
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/employees\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"id\": \"7eb20b1e-577b-45c0-adf4-c76ae17cdeae\"\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.delete_many(\n    approval_ids_request=[IdRequest(id=\"7eb20b1e-577b-45c0-adf4-c76ae17cdeae\")]\n)"
  /core/v1/employees/supervisors/approvals:
    get:
      tags:
      - employee
      summary: Get Historical Employee Supervisor Approvals
      description: Return historical employee supervisor approvals.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys | Supported Operators | Notes |
          |----------------|---------------------|-------|
          | employee.id    | `:`                 | Equal operator. Support multiple values with each value separated by the `;` delimiter |
          | supervisor.id  | `:`                 | Equal operator. Support multiple values with each value separated by the `;` delimiter |
          | approvalStatus | `:`                 | Equal operator. Values: APPROVED, REJECTED, OPEN, WAITING_FOR_APPROVAL |
          | effectiveDate  | `:`<br/>`>`<br/>`<` | Equal operator, greater than or equal, less than or equal. Use `yyyy-MM-dd` format, e.g. `effectiveDate>2024-01-01` |
        schema:
          type: string
        examples:
          employeeIds:
            summary: Search by employee IDs
            value: employee.id:0ab1c2d3-e4f5-6789-0123-456789abcdef;1ab1c2d3-e4f5-6789-0123-456789abcdef
          supervisorIds:
            summary: Search by supervisor IDs
            value: supervisor.id:0ab1c2d3-e4f5-6789-0123-456789abcdef;1ab1c2d3-e4f5-6789-0123-456789abcdef
          effectiveDateRange:
            summary: Search by effective date range
            value: effectiveDate>2024-01-01,effectiveDate<2024-12-31
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        allOf:
                        - type: object
                          allOf:
                          - type: object
                            properties:
                              id:
                                type: string
                              employee:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  identificationNumber:
                                    type: string
                                  name:
                                    type: string
                                  employmentStatus:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      employmentStatusNumber:
                                        type: string
                                      effectiveDate:
                                        type: string
                                        format: date
                                        description: YYYY-MM-DD
                                      organization:
                                        type: object
                                        allOf:
                                        - type: object
                                          properties:
                                            id:
                                              type: string
                                            code:
                                              type: string
                                            name:
                                              type: string
                                        - type: object
                                          properties:
                                            type:
                                              type: string
                                              enum:
                                              - STRUCTURAL
                                              - FUNCTIONAL
                                            company:
                                              type: object
                                              properties:
                                                id:
                                                  type: string
                                                code:
                                                  type: string
                                                name:
                                                  type: string
                                      jobLevel:
                                        type: object
                                        allOf:
                                        - type: object
                                          properties:
                                            id:
                                              type: string
                                            code:
                                              type: string
                                            name:
                                              type: string
                                        - type: object
                                          properties:
                                            level:
                                              type: integer
                                      employmentType:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      jobTitle:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      location:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      costCenter:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      position:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                              supervisor:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  identificationNumber:
                                    type: string
                                  name:
                                    type: string
                                  employmentStatus:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      employmentStatusNumber:
                                        type: string
                                      effectiveDate:
                                        type: string
                                        format: date
                                        description: YYYY-MM-DD
                                      organization:
                                        type: object
                                        allOf:
                                        - type: object
                                          properties:
                                            id:
                                              type: string
                                            code:
                                              type: string
                                            name:
                                              type: string
                                        - type: object
                                          properties:
                                            type:
                                              type: string
                                              enum:
                                              - STRUCTURAL
                                              - FUNCTIONAL
                                            company:
                                              type: object
                                              properties:
                                                id:
                                                  type: string
                                                code:
                                                  type: string
                                                name:
                                                  type: string
                                      jobLevel:
                                        type: object
                                        allOf:
                                        - type: object
                                          properties:
                                            id:
                                              type: string
                                            code:
                                              type: string
                                            name:
                                              type: string
                                        - type: object
                                          properties:
                                            level:
                                              type: integer
                                      employmentType:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      jobTitle:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      location:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      costCenter:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      position:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                          - type: object
                            properties:
                              action:
                                type: string
                                enum:
                                - NONE
                                - ADD
                                - EDIT
                                - DELETE
                                - DELETE_ALL
                              approvalStatus:
                                type: string
                                enum:
                                - APPROVED
                                - REJECTED
                                - OPEN
                                - WAITING_FOR_APPROVAL
              example:
                content:
                - id: 0193b7d1-2a3b-7c4d-8e5f-0a1b2c3d4e5f
                  employee:
                    id: 0193b7d1-2a3c-7c4d-8e5f-1b2c3d4e5f6a
                    identificationNumber: EMP0001
                    name: John Doe
                    employmentStatus:
                      id: 0193b7d1-2a3d-7c4d-8e5f-2c3d4e5f6a7b
                      employmentStatusNumber: ES-0001
                      effectiveDate: '2024-01-01'
                      organization:
                        id: 0193b7d1-2a3e-7c4d-8e5f-3d4e5f6a7b8c
                        code: ORG-001
                        name: Head Office
                        type: FUNCTIONAL
                        company:
                          id: 0193b7d1-2a3f-7c4d-8e5f-4e5f6a7b8c9d
                          code: COMP-001
                          name: Company
                      jobLevel:
                        id: 0193b7d1-2a40-7c4d-8e5f-5f6a7b8c9d0e
                        code: JL-001
                        name: Level 1
                      employmentType:
                        id: 0193b7d1-2a41-7c4d-8e5f-6a7b8c9d0e1f
                        code: ET-001
                        name: Full Time
                      jobTitle:
                        id: 0193b7d1-2a42-7c4d-8e5f-7b8c9d0e1f2a
                        code: JT-001
                        name: Software Engineer
                      location:
                        id: 0193b7d1-2a43-7c4d-8e5f-8c9d0e1f2a3b
                        code: LOC-001
                        name: Jakarta
                  supervisor:
                    id: 0193b7d1-2a44-7c4d-8e5f-9d0e1f2a3b4c
                    identificationNumber: SUP0001
                    name: Jane Smith
                    employmentStatus:
                      id: 0193b7d1-2a45-7c4d-8e5f-ae1f2a3b4c5d
                      employmentStatusNumber: ES-0002
                      effectiveDate: '2023-05-01'
                      organization:
                        id: 0193b7d1-2a46-7c4d-8e5f-bf2a3b4c5d6e
                        code: ORG-001
                        name: Head Office
                        type: FUNCTIONAL
                        company:
                          id: 0193b7d1-2a47-7c4d-8e5f-cf3b4c5d6e7f
                          code: COMP-001
                          name: Company
                      jobLevel:
                        id: 0193b7d1-2a48-7c4d-8e5f-df4c5d6e7f8a
                        code: JL-002
                        name: Level 2
                      employmentType:
                        id: 0193b7d1-2a49-7c4d-8e5f-ef5d6e7f8a9b
                        code: ET-001
                        name: Full Time
                      jobTitle:
                        id: 0193b7d1-2a4a-7c4d-8e5f-f06e7f8a9b0c
                        code: JT-002
                        name: Engineering Manager
                      location:
                        id: 0193b7d1-2a4b-7c4d-8e5f-017f8a9b0c1d
                        code: LOC-001
                        name: Jakarta
                  effectiveDate: '2024-02-01'
                  endDate: '2025-02-01'
                  action: ADD
                  approvalStatus: APPROVED
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/supervisors/approvals?page=0&size=10&query=employee.id%3A0ab1c2d3-e4f5-6789-0123-456789abcdef%3B1ab1c2d3-e4f5-6789-0123-456789abcdef\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.supervisors.approvals.list(\n    page=0,\n    size=10,\n    query=\"employee.id:0ab1c2d3-e4f5-6789-0123-456789abcdef;1ab1c2d3-e4f5-6789-0123-456789abcdef\",\n)"
  /core/v1/employees/{id}/employee-salary-templates:
    get:
      tags:
      - employee-salary-template
      summary: Get Latest Employee Salary Template
      description: Return the latest employee salary templates.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  effectiveDate:
                    type: string
                  proportional:
                    type: boolean
                  retroactive:
                    type: boolean
                  salaryDecreeNumber:
                    type: string
                  salaryTemplateId:
                    type: string
                  employeeSalaries:
                    type: array
                    items:
                      type: object
                      properties:
                        salaryItemId:
                          type: string
                        salaryItemCode:
                          type: string
                        amount:
                          type: number
                        recurringConfiguration:
                          type: object
                          properties:
                            monthInterval:
                              type: number
                            recurringEndType:
                              type: string
                            maxRecurringTimes:
                              type: number
                            recurringPeriodEnd:
                              type: object
                              properties:
                                year:
                                  type: number
                                month:
                                  type: number
              example:
                id: find-public-employee-salary-template
                effectiveDate: '2019-06-01'
                employeeSalaries:
                - salaryItemId: find-public-employee-salary-template
                  salaryItemCode: INDI5
                  amount: 4000000
                  recurringConfiguration:
                    monthInterval: 1
                    recurringEndType: NEVER
                    recurringPeriodEnd:
                      year: 0
                      month: 0
                    maxRecurringTimes: 0
                proportional: false
                retroactive: false
                salaryDecreeNumber: SK/DIR/2/SIEA
                salaryTemplateId: find-public-employee-salary-template
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/f47ac10b-58cc-4372-a567-0e02b2c3d479/employee-salary-templates\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.employee_salary_templates.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
    patch:
      tags:
      - employee-salary-template
      summary: Create or Update Employee Salary Template
      description: Create or update the employee salary template.
      parameters:
      - in: path
        name: id
        schema:
          type: string
          description: |
            `<employee.id>` or `identificationNumber=<employee.identificationNumber>`
        required: true
        examples:
          employeeId:
            summary: Using <employee.id>
            value: c2424497-9c63-46d1-88e4-6b4ebe399866
          employeeIdentificationNumber:
            summary: Using <employee.identificationNumber>
            value: identificationNumber=EMP0001
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  employeeId:
                    type: string
              example:
                employeeId: public-employee-salary-template
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                effectiveDate:
                  type: string
                employeeSalaries:
                  type: array
                  items:
                    type: object
                    properties:
                      salaryItemId:
                        type: string
                      amount:
                        type: number
                      formula:
                        type: string
                      recurringConfiguration:
                        type: object
                        properties:
                          maxRecurringTimes:
                            type: number
                          periodInterval:
                            type: number
                          recurringEndType:
                            type: string
                          recurringPeriodEnd:
                            type: object
                            properties:
                              year:
                                type: number
                              month:
                                type: number
                            required:
                            - month
                            - year
                        required:
                        - maxRecurringTimes
                        - periodInterval
                        - recurringEndType
                        - recurringPeriodEnd
                    required:
                    - amount
                    - formula
                    - recurringConfiguration
                    - salaryItemId
                proportional:
                  type: boolean
                retroactive:
                  type: boolean
                salaryDecreeNumber:
                  type: string
                salaryTemplateId:
                  type: string
              required:
              - effectiveDate
              - employeeSalaries
              - proportional
              - retroactive
              - salaryDecreeNumber
              - salaryTemplateId
            example:
              effectiveDate: string
              employeeSalaries:
              - amount: 0
                formula: string
                recurringConfiguration:
                  maxRecurringTimes: 0
                  periodInterval: 1
                  recurringEndType: NEVER
                  recurringPeriodEnd:
                    month: 1
                    year: 1970
                salaryItemId: string
              proportional: true
              retroactive: true
              salaryDecreeNumber: string
              salaryTemplateId: string
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PATCH \\\n  \"https://api.catapa.com/core/v1/employees/c2424497-9c63-46d1-88e4-6b4ebe399866/employee-salary-templates\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"effectiveDate\": \"string\",\n  \"employeeSalaries\": [\n    {\n      \"amount\": 0,\n      \"formula\": \"string\",\n      \"recurringConfiguration\": {\n        \"maxRecurringTimes\": 0,\n        \"periodInterval\": 1,\n        \"recurringEndType\": \"NEVER\",\n        \"recurringPeriodEnd\": {\n          \"month\": 1,\n          \"year\": 1970\n        }\n      },\n      \"salaryItemId\": \"string\"\n    }\n  ],\n  \"proportional\": true,\n  \"retroactive\": true,\n  \"salaryDecreeNumber\": \"string\",\n  \"salaryTemplateId\": \"string\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeSalaryTemplateRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.employee_salary_templates.partial_update_many(\n    id=\"c2424497-9c63-46d1-88e4-6b4ebe399866\",\n    employee_salary_template_request=EmployeeSalaryTemplateRequest(\n        effective_date=\"string\",\n        employee_salaries=[\n            {\n                \"amount\": 0,\n                \"formula\": \"string\",\n                \"recurringConfiguration\": {\n                    \"maxRecurringTimes\": 0,\n                    \"periodInterval\": 1,\n                    \"recurringEndType\": \"NEVER\",\n                    \"recurringPeriodEnd\": {\"month\": 1, \"year\": 1970},\n                },\n                \"salaryItemId\": \"string\",\n            }\n        ],\n        proportional=True,\n        retroactive=True,\n        salary_decree_number=\"string\",\n        salary_template_id=\"string\",\n    ),\n)"
  /core/v1/employees/{id}/employee-salary-templates/effective:
    get:
      tags:
      - employee-salary-template
      summary: Get Effective Employee Salary Template
      description: Return the effective employee salary template.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      - in: query
        name: year
        schema:
          type: number
        example: 2024
      - in: query
        name: month
        schema:
          type: number
        example: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          effectiveDate:
                            type: string
                          proportional:
                            type: boolean
                          retroactive:
                            type: boolean
                          salaryDecreeNumber:
                            type: string
                          salaryTemplateId:
                            type: string
                          employeeSalaries:
                            type: array
                            items:
                              type: object
                              properties:
                                salaryItemId:
                                  type: string
                                salaryItemCode:
                                  type: string
                                amount:
                                  type: number
                                recurringConfiguration:
                                  type: object
                                  properties:
                                    monthInterval:
                                      type: number
                                    recurringEndType:
                                      type: string
                                    maxRecurringTimes:
                                      type: number
                                    recurringPeriodEnd:
                                      type: object
                                      properties:
                                        year:
                                          type: number
                                        month:
                                          type: number
              example:
                content:
                - id: find-public-employee-salary-template
                  effectiveDate: '2019-06-01'
                  employeeSalaries:
                  - salaryItemId: find-public-employee-salary-template
                    salaryItemCode: INDI5
                    amount: 4000000
                    recurringConfiguration:
                      monthInterval: 1
                      recurringEndType: NEVER
                      recurringPeriodEnd:
                        year: 0
                        month: 0
                      maxRecurringTimes: 0
                  proportional: false
                  retroactive: false
                  salaryDecreeNumber: SK/DIR/2/SIEA
                  salaryTemplateId: find-public-employee-salary-template
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/f47ac10b-58cc-4372-a567-0e02b2c3d479/employee-salary-templates/effective?year=2024&month=1\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.employee_salary_templates.effective.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\", year=2024, month=1\n)"
  /core/v1/employees/{employeeId}/bank-account-configurations:
    get:
      tags:
      - employee-bank-account-configuration
      summary: Get Employee Bank Account Configuration
      deprecated: true
      description: This endpoint is deprecated. Please use /v1/employees/{employeeId}/bank-account-configurations/histories instead.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      active:
                        type: boolean
                  paymentMethod:
                    type: string
                    enum:
                    - CASH
                    - TRANSFER
                    - NONE
                  updatedDate:
                    type: integer
                    format: timestamp in milliseconds
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  distributionMethod:
                    type: string
                  defaultBankAccount:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      bankId:
                        type: string
                      bank:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                          code:
                            type: string
                            example: '014'
                          name:
                            type: string
                            example: BCA
                          llg:
                            type: string
                            example: '146789'
                      bankBranchId:
                        type: string
                      bankBranch:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                          name:
                            type: string
                            example: BCA Wisma Asia
                          code:
                            type: string
                            example: BCA01
                          address:
                            type: string
                            example: BCA01
                          bank:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                              code:
                                type: string
                                example: '014'
                              name:
                                type: string
                                example: BCA
                              llg:
                                type: string
                                example: '146789'
                      accountNumber:
                        type: string
                      accountName:
                        type: string
                      beneficiaryId:
                        type: string
                      priority:
                        type: number
                      currency:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: d1ea18d8-a691-11e6-80f5-76304dec7066
                          code:
                            type: string
                            example: IDR
                          name:
                            type: string
                            example: Indonesian Rupiah
                          baseCurrency:
                            type: boolean
                            example: true
                      percentage:
                        type: number
                      amount:
                        type: number
                  bankAccounts:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                        bankId:
                          type: string
                        bank:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                            code:
                              type: string
                              example: '014'
                            name:
                              type: string
                              example: BCA
                            llg:
                              type: string
                              example: '146789'
                        bankBranchId:
                          type: string
                        bankBranch:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                            name:
                              type: string
                              example: BCA Wisma Asia
                            code:
                              type: string
                              example: BCA01
                            address:
                              type: string
                              example: BCA01
                            bank:
                              type: object
                              properties:
                                id:
                                  type: string
                                  format: uuid
                                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                code:
                                  type: string
                                  example: '014'
                                name:
                                  type: string
                                  example: BCA
                                llg:
                                  type: string
                                  example: '146789'
                        accountNumber:
                          type: string
                        accountName:
                          type: string
                        beneficiaryId:
                          type: string
                        priority:
                          type: number
                        currency:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: d1ea18d8-a691-11e6-80f5-76304dec7066
                            code:
                              type: string
                              example: IDR
                            name:
                              type: string
                              example: Indonesian Rupiah
                            baseCurrency:
                              type: boolean
                              example: true
                        percentage:
                          type: number
                        amount:
                          type: number
                  source:
                    type: object
                    properties:
                      id:
                        type: string
                  approvalStatus:
                    type: string
                    enum:
                    - APPROVED
                    - REJECTED
                    - OPEN
                    - WAITING_FOR_APPROVAL
              example:
                id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                employee:
                  id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                  identificationNumber: 123456789abc
                  name: John Doe
                  active: true
                paymentMethod: TRANSFER
                updatedDate: 1700000000000
                effectiveDate: '2023-11-01'
                distributionMethod: PERCENTAGE
                defaultBankAccount:
                  id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                  bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  bank:
                    id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code: '014'
                    name: BCA
                    llg: '146789'
                  bankBranchId: ''
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                  accountNumber: '68492818391829'
                  accountName: Bagus Seto
                  beneficiaryId: ''
                  priority: 1
                  currency:
                    id: d1ea18d8-a691-11e6-80f5-76304dec7066
                    code: IDR
                    name: Indonesian Rupiah
                    baseCurrency: true
                  percentage: 100
                  amount: 0
                bankAccounts:
                - id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                  bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  bank:
                    id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code: '014'
                    name: BCA
                    llg: '146789'
                  bankBranchId: ''
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                  accountNumber: '68492818391829'
                  accountName: Bagus Seto
                  beneficiaryId: ''
                  priority: 1
                  currency:
                    id: d1ea18d8-a691-11e6-80f5-76304dec7066
                    code: IDR
                    name: Indonesian Rupiah
                    baseCurrency: true
                  percentage: 100
                  amount: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/bank-account-configurations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.bank_account_configurations.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\"\n)"
    put:
      tags:
      - employee-bank-account-configuration
      summary: Update Bank Account Configuration
      deprecated: true
      description: This endpoint is deprecated. Please use /v1/bank-account-configurations/approvals instead.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      active:
                        type: boolean
                  paymentMethod:
                    type: string
                    enum:
                    - CASH
                    - TRANSFER
                    - NONE
                  updatedDate:
                    type: integer
                    format: timestamp in milliseconds
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  distributionMethod:
                    type: string
                  defaultBankAccount:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      bankId:
                        type: string
                      bank:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                          code:
                            type: string
                            example: '014'
                          name:
                            type: string
                            example: BCA
                          llg:
                            type: string
                            example: '146789'
                      bankBranchId:
                        type: string
                      bankBranch:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                          name:
                            type: string
                            example: BCA Wisma Asia
                          code:
                            type: string
                            example: BCA01
                          address:
                            type: string
                            example: BCA01
                          bank:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                              code:
                                type: string
                                example: '014'
                              name:
                                type: string
                                example: BCA
                              llg:
                                type: string
                                example: '146789'
                      accountNumber:
                        type: string
                      accountName:
                        type: string
                      beneficiaryId:
                        type: string
                      priority:
                        type: number
                      currency:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: d1ea18d8-a691-11e6-80f5-76304dec7066
                          code:
                            type: string
                            example: IDR
                          name:
                            type: string
                            example: Indonesian Rupiah
                          baseCurrency:
                            type: boolean
                            example: true
                      percentage:
                        type: number
                      amount:
                        type: number
                  bankAccounts:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                        bankId:
                          type: string
                        bank:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                            code:
                              type: string
                              example: '014'
                            name:
                              type: string
                              example: BCA
                            llg:
                              type: string
                              example: '146789'
                        bankBranchId:
                          type: string
                        bankBranch:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                            name:
                              type: string
                              example: BCA Wisma Asia
                            code:
                              type: string
                              example: BCA01
                            address:
                              type: string
                              example: BCA01
                            bank:
                              type: object
                              properties:
                                id:
                                  type: string
                                  format: uuid
                                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                code:
                                  type: string
                                  example: '014'
                                name:
                                  type: string
                                  example: BCA
                                llg:
                                  type: string
                                  example: '146789'
                        accountNumber:
                          type: string
                        accountName:
                          type: string
                        beneficiaryId:
                          type: string
                        priority:
                          type: number
                        currency:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: d1ea18d8-a691-11e6-80f5-76304dec7066
                            code:
                              type: string
                              example: IDR
                            name:
                              type: string
                              example: Indonesian Rupiah
                            baseCurrency:
                              type: boolean
                              example: true
                        percentage:
                          type: number
                        amount:
                          type: number
                  source:
                    type: object
                    properties:
                      id:
                        type: string
                  approvalStatus:
                    type: string
                    enum:
                    - APPROVED
                    - REJECTED
                    - OPEN
                    - WAITING_FOR_APPROVAL
              example:
                id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                employee:
                  id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                  identificationNumber: 123456789abc
                  name: John Doe
                  active: true
                paymentMethod: TRANSFER
                updatedDate: 1700000000000
                effectiveDate: '2023-11-01'
                distributionMethod: PERCENTAGE
                defaultBankAccount:
                  id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                  bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  bank:
                    id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code: '014'
                    name: BCA
                    llg: '146789'
                  bankBranchId: ''
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                  accountNumber: '68492818391829'
                  accountName: Bagus Seto
                  beneficiaryId: ''
                  priority: 1
                  currency:
                    id: d1ea18d8-a691-11e6-80f5-76304dec7066
                    code: IDR
                    name: Indonesian Rupiah
                    baseCurrency: true
                  percentage: 100
                  amount: 0
                bankAccounts:
                - id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                  bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  bank:
                    id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code: '014'
                    name: BCA
                    llg: '146789'
                  bankBranchId: ''
                  bankBranch:
                    id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    code: BCA01
                    name: BCA Wisma Asia
                    address: Wisma Asia
                  accountNumber: '68492818391829'
                  accountName: Bagus Seto
                  beneficiaryId: ''
                  priority: 1
                  currency:
                    id: d1ea18d8-a691-11e6-80f5-76304dec7066
                    code: IDR
                    name: Indonesian Rupiah
                    baseCurrency: true
                  percentage: 100
                  amount: 0
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                paymentMethod:
                  type: string
                  enum:
                  - CASH
                  - TRANSFER
                  - NONE
                distributionMethod:
                  type: string
                  enum:
                  - PERCENTAGE
                  - FIXED_AMOUNT
                bankAccounts:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      companyBankAccount:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Unique identifier
                        required:
                        - id
                      bankId:
                        type: string
                      bankBranchId:
                        type: string
                      accountNumber:
                        type: string
                        description: Numeric
                      accountName:
                        type: string
                        minLength: 3
                        maxLength: 255
                      beneficiaryId:
                        type: string
                        maxLength: 255
                      priority:
                        type: number
                        minimum: 1
                      currency:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Unique identifier
                        required:
                        - id
                      percentage:
                        type: number
                        minimum: 0
                        maximum: 100
                      amount:
                        type: number
                        minimum: 0
                    required:
                    - bankId
                    - accountNumber
                    - accountName
                    - priority
                    - currency
                    - percentage
                    - amount
                source:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
              required:
              - paymentMethod
            example:
              employee:
                id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
              effectiveDate: '2023-11-01'
              paymentMethod: TRANSFER
              distributionMethod: PERCENTAGE
              bankAccounts:
              - id: ''
                companyBankAccount:
                  id: eb919ed1-c3c1-4334-a626-b9178b8a98ae
                  name: Comp Bank Account 1
                  companyCode: C001
                  accountNumber: '98343411'
                bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                bankBranchId: ''
                accountNumber: '68492818391829'
                accountName: John Doe
                beneficiaryId: ''
                priority: 1
                currency:
                  id: d1ea18d8-a691-11e6-80f5-76304dec7066
                percentage: 100
                amount: 0
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/bank-account-configurations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '...'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.bank_account_configurations.update_many(...)"
  /core/v1/employees/{employeeId}/bank-account-configurations/histories:
    get:
      tags:
      - employee-bank-account-configuration
      summary: Get Employee Bank Account Configuration Histories
      description: Use this endpoint as a replacement for /v1/employees/{employeeId}/bank-account-configurations.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                              active:
                                type: boolean
                          paymentMethod:
                            type: string
                            enum:
                            - CASH
                            - TRANSFER
                            - NONE
                          updatedDate:
                            type: integer
                            format: timestamp in milliseconds
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          distributionMethod:
                            type: string
                          defaultBankAccount:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                              bankId:
                                type: string
                              bank:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                    example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                  code:
                                    type: string
                                    example: '014'
                                  name:
                                    type: string
                                    example: BCA
                                  llg:
                                    type: string
                                    example: '146789'
                              bankBranchId:
                                type: string
                              bankBranch:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                    example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                                  name:
                                    type: string
                                    example: BCA Wisma Asia
                                  code:
                                    type: string
                                    example: BCA01
                                  address:
                                    type: string
                                    example: BCA01
                                  bank:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                        format: uuid
                                        example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                      code:
                                        type: string
                                        example: '014'
                                      name:
                                        type: string
                                        example: BCA
                                      llg:
                                        type: string
                                        example: '146789'
                              accountNumber:
                                type: string
                              accountName:
                                type: string
                              beneficiaryId:
                                type: string
                              priority:
                                type: number
                              currency:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                    example: d1ea18d8-a691-11e6-80f5-76304dec7066
                                  code:
                                    type: string
                                    example: IDR
                                  name:
                                    type: string
                                    example: Indonesian Rupiah
                                  baseCurrency:
                                    type: boolean
                                    example: true
                              percentage:
                                type: number
                              amount:
                                type: number
                          bankAccounts:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  format: uuid
                                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                bankId:
                                  type: string
                                bank:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      format: uuid
                                      example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                    code:
                                      type: string
                                      example: '014'
                                    name:
                                      type: string
                                      example: BCA
                                    llg:
                                      type: string
                                      example: '146789'
                                bankBranchId:
                                  type: string
                                bankBranch:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      format: uuid
                                      example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                                    name:
                                      type: string
                                      example: BCA Wisma Asia
                                    code:
                                      type: string
                                      example: BCA01
                                    address:
                                      type: string
                                      example: BCA01
                                    bank:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                          format: uuid
                                          example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                        code:
                                          type: string
                                          example: '014'
                                        name:
                                          type: string
                                          example: BCA
                                        llg:
                                          type: string
                                          example: '146789'
                                accountNumber:
                                  type: string
                                accountName:
                                  type: string
                                beneficiaryId:
                                  type: string
                                priority:
                                  type: number
                                currency:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      format: uuid
                                      example: d1ea18d8-a691-11e6-80f5-76304dec7066
                                    code:
                                      type: string
                                      example: IDR
                                    name:
                                      type: string
                                      example: Indonesian Rupiah
                                    baseCurrency:
                                      type: boolean
                                      example: true
                                percentage:
                                  type: number
                                amount:
                                  type: number
                          source:
                            type: object
                            properties:
                              id:
                                type: string
                          approvalStatus:
                            type: string
                            enum:
                            - APPROVED
                            - REJECTED
                            - OPEN
                            - WAITING_FOR_APPROVAL
              example:
                content:
                - id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                  employee:
                    id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                    identificationNumber: 123456789abc
                    name: John Doe
                    active: true
                  paymentMethod: TRANSFER
                  updatedDate: 1700000000000
                  effectiveDate: '2023-11-01'
                  distributionMethod: PERCENTAGE
                  defaultBankAccount:
                    id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                    bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    bank:
                      id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      code: '014'
                      name: BCA
                      llg: '146789'
                    bankBranchId: ''
                    bankBranch:
                      id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                      code: BCA01
                      name: BCA Wisma Asia
                      address: Wisma Asia
                      bank:
                        id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                        code: '014'
                        name: BCA
                        llg: '146789'
                    accountNumber: '68492818391829'
                    accountName: Bagus Seto
                    beneficiaryId: ''
                    priority: 1
                    currency:
                      id: d1ea18d8-a691-11e6-80f5-76304dec7066
                      code: IDR
                      name: Indonesian Rupiah
                      baseCurrency: true
                    percentage: 100
                    amount: 0
                  bankAccounts:
                  - id: 2b1a24c6-cf5c-47c3-b6a5-df7911a26c51
                    bankId: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    bank:
                      id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      code: '014'
                      name: BCA
                      llg: '146789'
                    bankBranchId: ''
                    bankBranch:
                      id: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                      code: BCA01
                      name: BCA Wisma Asia
                      address: Wisma Asia
                      bank:
                        id: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                        code: '014'
                        name: BCA
                        llg: '146789'
                    accountNumber: '68492818391829'
                    accountName: Bagus Seto
                    beneficiaryId: ''
                    priority: 1
                    currency:
                      id: d1ea18d8-a691-11e6-80f5-76304dec7066
                      code: IDR
                      name: Indonesian Rupiah
                      baseCurrency: true
                    percentage: 100
                    amount: 0
                pageable:
                  sort: []
                  offset: 0
                  pageSize: 20
                  pageNumber: 0
                  paged: true
                  unpaged: false
                last: true
                totalElements: 1
                totalPages: 1
                size: 20
                number: 0
                sort: []
                first: true
                numberOfElements: 1
                empty: false
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/bank-account-configurations/histories?page=0&size=10\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.bank_account_configurations.histories.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\", page=0, size=10\n)"
  /core/v1/employees/{employeeId}/bpjs-healthcare-memberships:
    get:
      tags:
      - employee-bpjs-membership
      summary: Get BPJS Healthcare Membership
      description: Return the BPJS healthcare memberships.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the BPJS Healthcare Membership
                  employeeId:
                    type: string
                  membershipNumber:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  effectiveDate:
                    type: string
                  firstLevelHealthcareFacility:
                    type: string
                  dentalHealthcareFacility:
                    type: string
                  bpjsHealthcareProvider:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      address:
                        type: string
                      registrationNumber:
                        type: string
                      reportSignatoryName:
                        type: string
                      reportSignatoryJobTitle:
                        type: string
                  bpjsHealthcareTemplate:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      salaryType:
                        type: string
                      linkToPayroll:
                        type: boolean
                  bpjsHealthcareTreatmentClass:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      minSalaryType:
                        type: string
                      minSalaryValue:
                        type: string
                      maxSalaryType:
                        type: string
                      maxSalaryValue:
                        type: string
                  additionalFamilyMemberships:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        familyMemberName:
                          type: string
                        familyMemberRelation:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            code:
                              type: string
                            relationType:
                              type: string
                              enum:
                              - MOTHER
                              - FATHER
                              - SPOUSE
                              - FIRST_CHILD
                              - SECOND_CHILD
                              - THIRD_CHILD
                              - OTHER_CHILD
                              - OTHER
                        firstLevelHealthcareFacility:
                          type: string
                        dentalHealthcareFacility:
                          type: string
              example:
                id: 6c571c34-9981-4223-ae04-f21647edec5e
                employeeId: 532eba49-1784-4224-9e0c-c8e70db96697
                membershipNumber: '34235'
                startDate: '2025-01-01'
                effectiveDate: '2025-07-01'
                firstLevelHealthcareFacility: healthcare
                dentalHealthcareFacility: dental
                bpjsHealthcareProvider:
                  id: 29b37992-6b61-4f8e-85f4-78b664847b9b
                  code: '001'
                  name: BPJS Kesehatan Cabang Bandung
                  address: Jl. Khp Hasan Mustopa No.81, Cikutra, Kec. Cibeunying Kidul, Kota Bandung, Jawa Barat 40124
                  registrationNumber: '556332'
                  reportSignatoryName: Budi
                  reportSignatoryJobTitle: Manager
                bpjsHealthcareTemplate:
                  id: 178f77de-39a0-48b4-8c33-89ff256ccf35
                  code: '001'
                  name: BPJS KS
                  salaryType: BY_SALARY_DECREE
                  linkToPayroll: true
                bpjsHealthcareTreatmentClass:
                  id: 3f0afd17-af9a-4274-a3da-7cba7f96b7f1
                  name: CLASS 1
                  minSalaryType: UMP
                  minSalaryValue: '5000000'
                  maxSalaryType: UMP
                  maxSalaryValue: '10000000'
                additionalFamilyMemberships:
                - id: 62cecc2b-cff9-46ec-91f5-11235e1969ad
                  familyMemberName: Siti Rahayu
                  familyMemberRelation:
                    id: 1f29ea4e-a7e9-11e6-80f5-76304dec7eb7
                    name: Ibu Kandung
                    code: Ibu Kandung
                    relationType: MOTHER
                  firstLevelHealthcareFacility: first level
                  dentalHealthcareFacility: dental
                - id: ccad2cc6-e02e-4770-add3-f4226857d47f
                  familyMemberName: Ahmad Suryanto
                  familyMemberRelation:
                    id: 1f29e7ec-a7e9-11e6-80f5-76304dec7eb7
                    name: Ayah Kandung
                    code: Ayah Kandung
                    relationType: FATHER
                  firstLevelHealthcareFacility: first level
                  dentalHealthcareFacility: dental
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/bpjs-healthcare-memberships\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.bpjs_healthcare_memberships.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\"\n)"
    put:
      tags:
      - employee-bpjs-membership
      summary: Update BPJS Healthcare Membership
      description: Update the BPJS healthcare membership.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the BPJS Healthcare Membership
                  employeeId:
                    type: string
                  membershipNumber:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  effectiveDate:
                    type: string
                  firstLevelHealthcareFacility:
                    type: string
                  dentalHealthcareFacility:
                    type: string
                  bpjsHealthcareProvider:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      address:
                        type: string
                      registrationNumber:
                        type: string
                      reportSignatoryName:
                        type: string
                      reportSignatoryJobTitle:
                        type: string
                  bpjsHealthcareTemplate:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      salaryType:
                        type: string
                      linkToPayroll:
                        type: boolean
                  bpjsHealthcareTreatmentClass:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      minSalaryType:
                        type: string
                      minSalaryValue:
                        type: string
                      maxSalaryType:
                        type: string
                      maxSalaryValue:
                        type: string
                  additionalFamilyMemberships:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        familyMemberName:
                          type: string
                        familyMemberRelation:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            code:
                              type: string
                            relationType:
                              type: string
                              enum:
                              - MOTHER
                              - FATHER
                              - SPOUSE
                              - FIRST_CHILD
                              - SECOND_CHILD
                              - THIRD_CHILD
                              - OTHER_CHILD
                              - OTHER
                        firstLevelHealthcareFacility:
                          type: string
                        dentalHealthcareFacility:
                          type: string
              example:
                id: 6c571c34-9981-4223-ae04-f21647edec5e
                employeeId: 532eba49-1784-4224-9e0c-c8e70db96697
                membershipNumber: '34235'
                startDate: '2025-01-01'
                effectiveDate: '2025-07-01'
                firstLevelHealthcareFacility: healthcare
                dentalHealthcareFacility: dental
                bpjsHealthcareProvider:
                  id: 29b37992-6b61-4f8e-85f4-78b664847b9b
                  code: '001'
                  name: BPJS Kesehatan Cabang Bandung
                  address: Jl. Khp Hasan Mustopa No.81, Cikutra, Kec. Cibeunying Kidul, Kota Bandung, Jawa Barat 40124
                  registrationNumber: '556332'
                  reportSignatoryName: Budi
                  reportSignatoryJobTitle: Manager
                bpjsHealthcareTemplate:
                  id: 178f77de-39a0-48b4-8c33-89ff256ccf35
                  code: '001'
                  name: BPJS KS
                  salaryType: BY_SALARY_DECREE
                  linkToPayroll: true
                bpjsHealthcareTreatmentClass:
                  id: 3f0afd17-af9a-4274-a3da-7cba7f96b7f1
                  name: CLASS 1
                  minSalaryType: UMP
                  minSalaryValue: '5000000'
                  maxSalaryType: UMP
                  maxSalaryValue: '10000000'
                additionalFamilyMemberships:
                - id: 62cecc2b-cff9-46ec-91f5-11235e1969ad
                  familyMemberName: Siti Rahayu
                  familyMemberRelation:
                    id: 1f29ea4e-a7e9-11e6-80f5-76304dec7eb7
                    name: Ibu Kandung
                    code: Ibu Kandung
                    relationType: MOTHER
                  firstLevelHealthcareFacility: first level
                  dentalHealthcareFacility: dental
                - id: ccad2cc6-e02e-4770-add3-f4226857d47f
                  familyMemberName: Ahmad Suryanto
                  familyMemberRelation:
                    id: 1f29e7ec-a7e9-11e6-80f5-76304dec7eb7
                    name: Ayah Kandung
                    code: Ayah Kandung
                    relationType: FATHER
                  firstLevelHealthcareFacility: first level
                  dentalHealthcareFacility: dental
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: COM-REQUEST_NOT_READABLE
                message: Request is not readable
                status: 400
                timestamp: '2025-07-23T08:37:28.076680499'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                additionalFamilyMemberships:
                  type: array
                  items:
                    type: object
                    properties:
                      dentalHealthcareFacility:
                        type: string
                      familyMemberName:
                        type: string
                      familyMemberRelationId:
                        type: string
                      firstLevelHealthcareFacility:
                        type: string
                      id:
                        type: string
                    required:
                    - familyMemberName
                    - familyMemberRelationId
                    - id
                bpjsHealthcareProviderId:
                  type: string
                bpjsHealthcareTemplateId:
                  type: string
                bpjsHealthcareTreatmentClassId:
                  type: string
                dentalHealthcareFacility:
                  type: string
                firstLevelHealthcareFacility:
                  type: string
                membershipNumber:
                  type: string
                startDate:
                  type: string
                effectiveDate:
                  type: string
                  description: Effective Date of the BPJS Healthcare Membership default to start date
              required:
              - additionalFamilyMemberships
              - bpjsHealthcareProviderId
              - bpjsHealthcareTemplateId
              - membershipNumber
              - startDate
            example:
              additionalFamilyMemberships:
              - dentalHealthcareFacility: dental
                familyMemberName: Alfian Hanafi
                familyMemberRelationId: 1f29ea4e-a7e9-11e6-80f5-76304dec7eb7
                firstLevelHealthcareFacility: Level 1
                id: af4a47376-e964-4cb2-a6b5-d540b17bfea0
              bpjsHealthcareProviderId: 11f6b427-b7a8-11e6-b782-d0bf9cdd43ca
              bpjsHealthcareTemplateId: 38322fb6-b129-11e6-80f5-76304dec7eb7
              bpjsHealthcareTreatmentClassId: 3f0afd17-af9a-4274-a3da-7cba7f96b7f1
              dentalHealthcareFacility: dental
              firstLevelHealthcareFacility: first level
              membershipNumber: '555556666'
              startDate: '2022-11-11'
              effectiveDate: '2022-11-11'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/bpjs-healthcare-memberships\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"additionalFamilyMemberships\": [\n    {\n      \"dentalHealthcareFacility\": \"dental\",\n      \"familyMemberName\": \"Alfian Hanafi\",\n      \"familyMemberRelationId\": \"1f29ea4e-a7e9-11e6-80f5-76304dec7eb7\",\n      \"firstLevelHealthcareFacility\": \"Level 1\",\n      \"id\": \"af4a47376-e964-4cb2-a6b5-d540b17bfea0\"\n    }\n  ],\n  \"bpjsHealthcareProviderId\": \"11f6b427-b7a8-11e6-b782-d0bf9cdd43ca\",\n  \"bpjsHealthcareTemplateId\": \"38322fb6-b129-11e6-80f5-76304dec7eb7\",\n  \"bpjsHealthcareTreatmentClassId\": \"3f0afd17-af9a-4274-a3da-7cba7f96b7f1\",\n  \"dentalHealthcareFacility\": \"dental\",\n  \"firstLevelHealthcareFacility\": \"first level\",\n  \"membershipNumber\": \"555556666\",\n  \"startDate\": \"2022-11-11\",\n  \"effectiveDate\": \"2022-11-11\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import BpjsHealthcareMembershipRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.bpjs_healthcare_memberships.update_many(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    bpjs_healthcare_membership_request=BpjsHealthcareMembershipRequest(\n        additional_family_memberships=[\n            {\n                \"dentalHealthcareFacility\": \"dental\",\n                \"familyMemberName\": \"Alfian Hanafi\",\n                \"familyMemberRelationId\": \"1f29ea4e-a7e9-11e6-80f5-76304dec7eb7\",\n                \"firstLevelHealthcareFacility\": \"Level 1\",\n                \"id\": \"af4a47376-e964-4cb2-a6b5-d540b17bfea0\",\n            }\n        ],\n        bpjs_healthcare_provider_id=\"11f6b427-b7a8-11e6-b782-d0bf9cdd43ca\",\n        bpjs_healthcare_template_id=\"38322fb6-b129-11e6-80f5-76304dec7eb7\",\n        bpjs_healthcare_treatment_class_id=\"3f0afd17-af9a-4274-a3da-7cba7f96b7f1\",\n        dental_healthcare_facility=\"dental\",\n        first_level_healthcare_facility=\"first level\",\n        membership_number=\"555556666\",\n        start_date=\"2022-11-11\",\n        effective_date=\"2022-11-11\",\n    ),\n)"
  /core/v1/employees/{employeeId}/bpjs-manpower-memberships:
    get:
      tags:
      - employee-bpjs-membership
      summary: Get BPJS Manpower Membership
      description: Return the BPJS manpower memberships.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the BPJS Manpower Membership
                  membershipNumber:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  effectiveDate:
                    type: string
                  pensionEnd:
                    type: string
                  bpjsManpowerProvider:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      address:
                        type: string
                      registrationNumber:
                        type: string
                      reportSignatoryName:
                        type: string
                      reportSignatoryJobTitle:
                        type: string
                  bpjsManpowerTemplate:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      salaryType:
                        type: string
                      linkToPayroll:
                        type: boolean
              example:
                id: f0ff94df-aac6-49ac-8da2-c34a63159b56
                bpjsManpowerProvider:
                  id: 3cb8182b-639b-4897-b124-2b5bffcfdd63
                  code: '001'
                  name: BPJS Bandung
                  address: Bandung
                  registrationNumber: '63456456346'
                  reportSignatoryName: ''
                  reportSignatoryJobTitle: ''
                membershipNumber: '345345'
                startDate: '2025-01-01'
                endDate: ''
                bpjsManpowerTemplate:
                  id: 19523198-8d9e-44f1-a14d-5e6d747ea4d2
                  code: '001'
                  name: BPJS TK
                  salaryType: BY_PRORATED_SALARY
                  linkToPayroll: true
                pensionEnd: ''
                effectiveDate: '2025-01-01'
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/bpjs-manpower-memberships\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.bpjs_manpower_memberships.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\"\n)"
    put:
      tags:
      - employee-bpjs-membership
      summary: Update BPJS Manpower Membership
      description: Update the BPJS manpower membership.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the BPJS Manpower Membership
                  membershipNumber:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  effectiveDate:
                    type: string
                  pensionEnd:
                    type: string
                  bpjsManpowerProvider:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      address:
                        type: string
                      registrationNumber:
                        type: string
                      reportSignatoryName:
                        type: string
                      reportSignatoryJobTitle:
                        type: string
                  bpjsManpowerTemplate:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      salaryType:
                        type: string
                      linkToPayroll:
                        type: boolean
              example:
                id: f0ff94df-aac6-49ac-8da2-c34a63159b56
                bpjsManpowerProvider:
                  id: 3cb8182b-639b-4897-b124-2b5bffcfdd63
                  code: '001'
                  name: BPJS Bandung
                  address: Bandung
                  registrationNumber: '63456456346'
                  reportSignatoryName: ''
                  reportSignatoryJobTitle: ''
                membershipNumber: '345345'
                startDate: '2025-01-01'
                endDate: ''
                bpjsManpowerTemplate:
                  id: 19523198-8d9e-44f1-a14d-5e6d747ea4d2
                  code: '001'
                  name: BPJS TK
                  salaryType: BY_PRORATED_SALARY
                  linkToPayroll: true
                pensionEnd: ''
                effectiveDate: '2025-01-01'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: COM-REQUEST_NOT_READABLE
                message: Request is not readable
                status: 400
                timestamp: '2025-07-23T08:37:28.076680499'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                bpjsManpowerProviderId:
                  type: string
                bpjsManpowerTemplateId:
                  type: string
                membershipNumber:
                  type: string
                startDate:
                  type: string
                effectiveDate:
                  type: string
                  description: Effective Date of the BPJS Manpower Membership default value is start date
              required:
              - bpjsManpowerProviderId
              - bpjsManpowerTemplateId
              - startDate
            example:
              bpjsManpowerProviderId: 11f6b427-b7a8-11e6-b782-d0bf9cdd43ca
              bpjsManpowerTemplateId: 48322fb6-b129-11e6-80f5-76304dec7eb7
              membershipNumber: '555556666'
              startDate: '2022-11-11'
              effectiveDate: '2022-11-11'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/bpjs-manpower-memberships\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"bpjsManpowerProviderId\": \"11f6b427-b7a8-11e6-b782-d0bf9cdd43ca\",\n  \"bpjsManpowerTemplateId\": \"48322fb6-b129-11e6-80f5-76304dec7eb7\",\n  \"membershipNumber\": \"555556666\",\n  \"startDate\": \"2022-11-11\",\n  \"effectiveDate\": \"2022-11-11\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import BpjsManpowerMembershipRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.bpjs_manpower_memberships.update_many(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    bpjs_manpower_membership_request=BpjsManpowerMembershipRequest(\n        bpjs_manpower_provider_id=\"11f6b427-b7a8-11e6-b782-d0bf9cdd43ca\",\n        bpjs_manpower_template_id=\"48322fb6-b129-11e6-80f5-76304dec7eb7\",\n        membership_number=\"555556666\",\n        start_date=\"2022-11-11\",\n        effective_date=\"2022-11-11\",\n    ),\n)"
  /core/v1/employees/{employeeId}/contact-information:
    get:
      tags:
      - contact-information
      summary: Get Contact Information
      description: Return the contact information.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  mobilePhone:
                    type: string
                  email:
                    type: string
                    description: deprecated
                  workEmail:
                    type: string
                  personalEmail:
                    type: string
                  originalAddress:
                    type: string
                  originalAddressPhoneNumber:
                    type: string
                  originalAddressDetail:
                    type: object
                    properties:
                      address:
                        type: string
                      zipCode:
                        type: string
                      phone:
                        type: string
                      district:
                        type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                  facebook:
                    type: string
                  linkedIn:
                    type: string
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
                  residentialAddress:
                    type: object
                    properties:
                      address:
                        type: string
                      zipCode:
                        type: string
                      phone:
                        type: string
                      district:
                        type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                  emergencyContact:
                    type: object
                    properties:
                      name:
                        type: string
                      relation:
                        type: string
                      phone:
                        type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      joinDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      startDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      active:
                        type: boolean
                      pointOfHire:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          locationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          city:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          latitude:
                            type: number
                          longitude:
                            type: number
                          address:
                            type: string
                          phone:
                            type: string
                          zipCode:
                            type: string
                          headquarter:
                            type: boolean
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                      photo:
                        type: object
                        properties:
                          url:
                            type: string
                      manager:
                        type: object
                        properties:
                          id:
                            type: string
                          identificationNumber:
                            type: string
                          name:
                            type: string
                          joinDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          startDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          active:
                            type: boolean
                          pointOfHire:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              locationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              city:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                              latitude:
                                type: number
                              longitude:
                                type: number
                              address:
                                type: string
                              phone:
                                type: string
                              zipCode:
                                type: string
                              headquarter:
                                type: boolean
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          photo:
                            type: object
                            properties:
                              url:
                                type: string
              example:
                id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0ab
                mobilePhone: '+1231'
                email: email123@gmail.com
                workEmail: work.email@company.com
                personalEmail: personal.email@gmail.com
                originalAddress: 10 Bayfront Ave
                originalAddressPhoneNumber: '+2231'
                originalAddressDetail:
                  address: 10 Bayfront Ave
                  zipCode: '54321'
                  phone: '+2231'
                  district: San Andreas
                  city:
                    id: 2d1e9f5a-a6ea-11e6-80f5-76304dec7eb7
                    code: NYC
                    name: New York City
                    state:
                      id: 71f59dbe-a699-11e6-80f5-76304dec7eb7
                      code: NY
                      name: New York
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        code: US
                        name: United States
                facebook: ''
                linkedIn: ''
                effectiveDate: '2023-01-15'
                createdBy: system
                createdDate: 1481024187133
                updatedBy: system
                updatedDate: 1481024187133
                residentialAddress:
                  address: 123 Main Street
                  zipCode: '12345'
                  phone: '+1234567890'
                  district: San Andreas
                  city:
                    id: city-123
                    code: NYC
                    name: New York City
                    state:
                      id: state-123
                      code: NY
                      name: New York
                      country:
                        id: country-123
                        code: US
                        name: United States
                emergencyContact:
                  name: Emergency Contact
                  relation: Friend
                  phone: '+1234567890'
                employee:
                  id: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                  identificationNumber: EMP12345
                  name: John Doe
                  joinDate: '2022-08-15'
                  startDate: '2022-08-15'
                  active: true
                  pointOfHire:
                    id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                    code: JKT-01
                    name: Jakarta Head Office
                    locationGroup:
                      id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                      code: HQ
                      name: Headquarters
                    city:
                      id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                      code: '31.70'
                      name: Jakarta
                      state:
                        id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                        name: Jakarta Special Capital Region
                        code: '31'
                        country:
                          id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                          code: IDN
                          callingCode: '62'
                          name: Indonesia
                          taxTreaty: true
                    latitude: -6.2088
                    longitude: 106.8456
                    address: Jl. Jenderal Sudirman Kav. 52-53
                    phone: '+62215151234'
                    zipCode: '12190'
                    headquarter: true
                    company:
                      id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                      code: COMP-A
                      name: PT Example Company
                  photo:
                    url: https://example.com/photos/john_doe.jpg
                  manager:
                    id: 0100902f-5d8f-4de4-8fae-5ced86831dd1
                    identificationNumber: MGR5678
                    name: Jane Smith
                    joinDate: '2020-01-14'
                    startDate: '2020-01-14'
                    active: true
                    pointOfHire:
                      id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                      code: JKT-01
                      name: Jakarta Head Office
                      locationGroup:
                        id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                        code: HQ
                        name: Headquarters
                      city:
                        id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                        code: '31.70'
                        name: Jakarta
                        state:
                          id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                          name: Jakarta Special Capital Region
                          code: '31'
                          country:
                            id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                            code: IDN
                            callingCode: '62'
                            name: Indonesia
                            taxTreaty: true
                      latitude: -6.2088
                      longitude: 106.8456
                      address: Jl. Jenderal Sudirman Kav. 52-53
                      phone: '+62215151234'
                      zipCode: '12190'
                      headquarter: true
                      company:
                        id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                        code: COMP-A
                        name: PT Example Company
                    photo:
                      url: https://example.com/photos/jane_smith.jpg
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/contact-information\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.contact_information.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\"\n)"
    put:
      tags:
      - contact-information
      summary: Update Contact Information
      description: Update the contact information.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  mobilePhone:
                    type: string
                  email:
                    type: string
                    description: deprecated
                  workEmail:
                    type: string
                  personalEmail:
                    type: string
                  originalAddress:
                    type: string
                  originalAddressPhoneNumber:
                    type: string
                  originalAddressDetail:
                    type: object
                    properties:
                      address:
                        type: string
                      zipCode:
                        type: string
                      phone:
                        type: string
                      district:
                        type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                  facebook:
                    type: string
                  linkedIn:
                    type: string
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
                  residentialAddress:
                    type: object
                    properties:
                      address:
                        type: string
                      zipCode:
                        type: string
                      phone:
                        type: string
                      district:
                        type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                  emergencyContact:
                    type: object
                    properties:
                      name:
                        type: string
                      relation:
                        type: string
                      phone:
                        type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      joinDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      startDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      active:
                        type: boolean
                      pointOfHire:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          locationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          city:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          latitude:
                            type: number
                          longitude:
                            type: number
                          address:
                            type: string
                          phone:
                            type: string
                          zipCode:
                            type: string
                          headquarter:
                            type: boolean
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                      photo:
                        type: object
                        properties:
                          url:
                            type: string
                      manager:
                        type: object
                        properties:
                          id:
                            type: string
                          identificationNumber:
                            type: string
                          name:
                            type: string
                          joinDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          startDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          active:
                            type: boolean
                          pointOfHire:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              locationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              city:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                              latitude:
                                type: number
                              longitude:
                                type: number
                              address:
                                type: string
                              phone:
                                type: string
                              zipCode:
                                type: string
                              headquarter:
                                type: boolean
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          photo:
                            type: object
                            properties:
                              url:
                                type: string
              example:
                id: 47f02912-b9ab-4b64-a044-5cad5c5a73d0
                originalAddress: ''
                originalAddressPhoneNumber: ''
                mobilePhone: '+6213456788'
                email: email123@gmail.com
                workEmail: work.email@company.com
                personalEmail: personal.email@gmail.com
                facebook: ''
                linkedIn: ''
                effectiveDate: '2023-01-15'
                createdBy: system
                createdDate: 1481024187133
                updatedBy: system
                updatedDate: 1481024187133
                residentialAddress:
                  address: 123 Main Street
                  zipCode: '12345'
                  phone: '+1234567890'
                  district: San Andreas
                  city:
                    id: city-123
                    code: NYC
                    name: New York City
                    state:
                      id: state-123
                      code: NY
                      name: New York
                      country:
                        id: country-123
                        code: US
                        name: United States
                emergencyContact:
                  name: Emergency Contact
                  relation: Friend
                  phone: '+1234567890'
                employee:
                  id: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                  identificationNumber: EMP12345
                  name: John Doe
                  joinDate: '2022-08-15'
                  startDate: '2022-08-15'
                  active: true
                  pointOfHire:
                    id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                    code: JKT-01
                    name: Jakarta Head Office
                    locationGroup:
                      id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                      code: HQ
                      name: Headquarters
                    city:
                      id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                      code: '31.70'
                      name: Jakarta
                      state:
                        id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                        name: Jakarta Special Capital Region
                        code: '31'
                        country:
                          id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                          code: IDN
                          callingCode: '62'
                          name: Indonesia
                          taxTreaty: true
                    latitude: -6.2088
                    longitude: 106.8456
                    address: Jl. Jenderal Sudirman Kav. 52-53
                    phone: '+62215151234'
                    zipCode: '12190'
                    headquarter: true
                    company:
                      id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                      code: COMP-A
                      name: PT Example Company
                  photo:
                    url: https://example.com/photos/john_doe.jpg
                  manager:
                    id: 0100902f-5d8f-4de4-8fae-5ced86831dd1
                    identificationNumber: MGR5678
                    name: Jane Smith
                    joinDate: '2020-01-14'
                    startDate: '2020-01-14'
                    active: true
                    pointOfHire:
                      id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                      code: JKT-01
                      name: Jakarta Head Office
                      locationGroup:
                        id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                        code: HQ
                        name: Headquarters
                      city:
                        id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                        code: '31.70'
                        name: Jakarta
                        state:
                          id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                          name: Jakarta Special Capital Region
                          code: '31'
                          country:
                            id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                            code: IDN
                            callingCode: '62'
                            name: Indonesia
                            taxTreaty: true
                      latitude: -6.2088
                      longitude: 106.8456
                      address: Jl. Jenderal Sudirman Kav. 52-53
                      phone: '+62215151234'
                      zipCode: '12190'
                      headquarter: true
                      company:
                        id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                        code: COMP-A
                        name: PT Example Company
                    photo:
                      url: https://example.com/photos/jane_smith.jpg
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                mobilePhone:
                  type: string
                  pattern: ^[+]{1}[0-9-() ]+
                  description: e.g. `+6281234567890`
                originalAddress:
                  type: string
            example:
              email: email123@gmail.com
              mobilePhone: '+6281234567890'
              originalAddress: ''
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/contact-information\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"email\": \"email123@gmail.com\",\n  \"mobilePhone\": \"+6281234567890\",\n  \"originalAddress\": \"\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import ContactInformationRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.contact_information.update_many(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    contact_information_request=ContactInformationRequest(\n        email=\"email123@gmail.com\", mobile_phone=\"+6281234567890\", original_address=\"\"\n    ),\n)"
  /core/v1/employee-details:
    get:
      tags:
      - employee-detail
      summary: Get Historical Employee Details
      description: Return the historical employee details.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                     |
          |--------------------|---------------------|-------------------------------------------------------------------------------------------|
          | id                 | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | employee.id        | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | effectiveDate      | `<`                 | Less than or equal to<br/><br/>Use `yyyy-MM-dd` format, e.g. `effectiveDate<2025-01-31  ` |
        schema:
          type: string
        examples:
          id:
            summary: Search Employee Details by Multiple IDs
            value: id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6
          employee.id:
            summary: Search Employee Details by Multiple Employee IDs
            value: employee.id:d290f1ee-6c54-4b01-90e6-d701748f0851;0100902f-5d8f-4de4-8fae-5ced86831dd1
          effectiveDate:
            summary: Search Employment Details by Effective Date Less Than or Equal To
            value: effectiveDate<2025-01-31
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          maritalStatus:
                            type: string
                            enum:
                            - SINGLE
                            - MARRIED
                            - WIDOW
                            - WIDOWER
                          religion:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                          foreignLabour:
                            type: boolean
                          citizenship:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              callingCode:
                                type: string
                              taxTreaty:
                                type: boolean
                          name:
                            type: string
                          dateOfBirth:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          placeOfBirth:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          gender:
                            type: string
                            enum:
                            - MALE
                            - FEMALE
                          bloodType:
                            type: string
                            enum:
                            - A
                            - B
                            - O
                            - AB
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                              joinDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              startDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              active:
                                type: boolean
                              pointOfHire:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  locationGroup:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  city:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      state:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          country:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                              callingCode:
                                                type: string
                                              taxTreaty:
                                                type: boolean
                                  latitude:
                                    type: number
                                  longitude:
                                    type: number
                                  address:
                                    type: string
                                  phone:
                                    type: string
                                  zipCode:
                                    type: string
                                  headquarter:
                                    type: boolean
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                              photo:
                                type: object
                                properties:
                                  url:
                                    type: string
                              manager:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  identificationNumber:
                                    type: string
                                  name:
                                    type: string
                                  joinDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  startDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  active:
                                    type: boolean
                                  pointOfHire:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      locationGroup:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      city:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          state:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                              country:
                                                type: object
                                                properties:
                                                  id:
                                                    type: string
                                                  code:
                                                    type: string
                                                  name:
                                                    type: string
                                                  callingCode:
                                                    type: string
                                                  taxTreaty:
                                                    type: boolean
                                      latitude:
                                        type: number
                                      longitude:
                                        type: number
                                      address:
                                        type: string
                                      phone:
                                        type: string
                                      zipCode:
                                        type: string
                                      headquarter:
                                        type: boolean
                                      company:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                  photo:
                                    type: object
                                    properties:
                                      url:
                                        type: string
              example:
                content:
                - id: 21c2f166-0099-437d-84dd-be09e0f42ec9
                  bloodType: A
                  citizenship:
                    id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                    code: IDN
                    callingCode: '+62'
                    name: Indonesia
                    taxTreaty: false
                  dateOfBirth: '1990-03-31'
                  foreignLabour: false
                  gender: MALE
                  maritalStatus: SINGLE
                  name: John Doe
                  placeOfBirth:
                    id: 04e3c58f-b9f1-4d96-95eb-5f9a31fd9e8a
                    code: '35.18'
                    name: Kab. Nganjuk
                    state:
                      id: 71f5a7a0-a699-11e6-80f5-76304dec7eb7
                      code: '35'
                      name: East Java
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        code: IDN
                        name: Indonesia
                        callingCode: '+62'
                        taxTreaty: false
                  religion:
                    id: daa7f10k-a734-11e6-80f5-76304dec7eb7
                    name: Others
                    code: Others
                  effectiveDate: '2023-10-31'
                  createdBy: system
                  createdDate: 1481024187133
                  updatedBy: system
                  updatedDate: 1481024187133
                  employee:
                    id: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                    identificationNumber: EMP12345
                    name: John Doe
                    joinDate: '2022-08-15'
                    startDate: '2022-08-15'
                    active: true
                    pointOfHire:
                      id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                      code: JKT-01
                      name: Jakarta Head Office
                      locationGroup:
                        id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                        code: HQ
                        name: Headquarters
                      city:
                        id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                        code: '31.70'
                        name: Jakarta
                        state:
                          id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                          name: Jakarta Special Capital Region
                          code: '31'
                          country:
                            id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                            code: IDN
                            callingCode: '62'
                            name: Indonesia
                            taxTreaty: true
                      latitude: -6.2088
                      longitude: 106.8456
                      address: Jl. Jenderal Sudirman Kav. 52-53
                      phone: '+62215151234'
                      zipCode: '12190'
                      headquarter: true
                      company:
                        id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                        code: COMP-A
                        name: PT Example Company
                    photo:
                      url: https://example.com/photos/john_doe.jpg
                    manager:
                      id: 0100902f-5d8f-4de4-8fae-5ced86831dd1
                      identificationNumber: MGR5678
                      name: Jane Smith
                      joinDate: '2020-01-14'
                      startDate: '2020-01-14'
                      active: true
                      pointOfHire:
                        id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                        code: JKT-01
                        name: Jakarta Head Office
                        locationGroup:
                          id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                          code: HQ
                          name: Headquarters
                        city:
                          id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                          code: '31.70'
                          name: Jakarta
                          state:
                            id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                            name: Jakarta Special Capital Region
                            code: '31'
                            country:
                              id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                              code: IDN
                              callingCode: '62'
                              name: Indonesia
                              taxTreaty: true
                        latitude: -6.2088
                        longitude: 106.8456
                        address: Jl. Jenderal Sudirman Kav. 52-53
                        phone: '+62215151234'
                        zipCode: '12190'
                        headquarter: true
                        company:
                          id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                          code: COMP-A
                          name: PT Example Company
                      photo:
                        url: https://example.com/photos/jane_smith.jpg
                - id: 0b37104b-6cad-4f23-ac73-5fdc9f822b8a
                  bloodType: B
                  citizenship:
                    id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                    code: IDN
                    callingCode: '+62'
                    name: Indonesia
                    taxTreaty: false
                  dateOfBirth: '1980-03-31'
                  foreignLabour: false
                  gender: MALE
                  maritalStatus: MARRIED
                  name: Steven Smith
                  placeOfBirth:
                    id: 04e3c58f-b9f1-4d96-95eb-5f9a31fd9e8a
                    code: '35.18'
                    name: Kab. Nganjuk
                    state:
                      id: 71f5a7a0-a699-11e6-80f5-76304dec7eb7
                      code: '35'
                      name: East Java
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        code: IDN
                        name: Indonesia
                        callingCode: '+62'
                        taxTreaty: false
                  religion:
                    id: daa7f10k-a734-11e6-80f5-76304dec7eb7
                    name: Others
                    code: Others
                  effectiveDate: '2021-10-31'
                  createdBy: system
                  createdDate: 1481024187133
                  updatedBy: system
                  updatedDate: 1481024187133
                  employee:
                    id: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                    identificationNumber: EMP12345
                    name: John Doe
                    joinDate: '2022-08-15'
                    startDate: '2022-08-15'
                    active: true
                    pointOfHire:
                      id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                      code: JKT-01
                      name: Jakarta Head Office
                      locationGroup:
                        id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                        code: HQ
                        name: Headquarters
                      city:
                        id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                        code: '31.70'
                        name: Jakarta
                        state:
                          id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                          name: Jakarta Special Capital Region
                          code: '31'
                          country:
                            id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                            code: IDN
                            callingCode: '62'
                            name: Indonesia
                            taxTreaty: true
                      latitude: -6.2088
                      longitude: 106.8456
                      address: Jl. Jenderal Sudirman Kav. 52-53
                      phone: '+62215151234'
                      zipCode: '12190'
                      headquarter: true
                      company:
                        id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                        code: COMP-A
                        name: PT Example Company
                    photo:
                      url: https://example.com/photos/john_doe.jpg
                    manager:
                      id: 0100902f-5d8f-4de4-8fae-5ced86831dd1
                      identificationNumber: MGR5678
                      name: Jane Smith
                      joinDate: '2020-01-14'
                      startDate: '2020-01-14'
                      active: true
                      pointOfHire:
                        id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                        code: JKT-01
                        name: Jakarta Head Office
                        locationGroup:
                          id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                          code: HQ
                          name: Headquarters
                        city:
                          id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                          code: '31.70'
                          name: Jakarta
                          state:
                            id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                            name: Jakarta Special Capital Region
                            code: '31'
                            country:
                              id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                              code: IDN
                              callingCode: '62'
                              name: Indonesia
                              taxTreaty: true
                        latitude: -6.2088
                        longitude: 106.8456
                        address: Jl. Jenderal Sudirman Kav. 52-53
                        phone: '+62215151234'
                        zipCode: '12190'
                        headquarter: true
                        company:
                          id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                          code: COMP-A
                          name: PT Example Company
                      photo:
                        url: https://example.com/photos/jane_smith.jpg
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employee-details?page=0&size=10&query=id%3Ae18f5618-bc6c-11e6-80f5-76304dec7eb1%3Bf38f5618-bc6c-11e6-80f5-76304dec7ec6\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_details.list(\n    page=0,\n    size=10,\n    query=\"id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6\",\n)"
  /core/v1/employees/{employeeId}/employee-details:
    get:
      tags:
      - employee-detail
      summary: Get Employee Detail
      description: The `id` field in the response refers to the **employee's ID**, **not the employee detail's actual ID**.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  maritalStatus:
                    type: string
                    enum:
                    - SINGLE
                    - MARRIED
                    - WIDOW
                    - WIDOWER
                  religion:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                  foreignLabour:
                    type: boolean
                  citizenship:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      callingCode:
                        type: string
                      taxTreaty:
                        type: boolean
                  name:
                    type: string
                  dateOfBirth:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  placeOfBirth:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      state:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          country:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              callingCode:
                                type: string
                              taxTreaty:
                                type: boolean
                  gender:
                    type: string
                    enum:
                    - MALE
                    - FEMALE
                  bloodType:
                    type: string
                    enum:
                    - A
                    - B
                    - O
                    - AB
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      joinDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      startDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      active:
                        type: boolean
                      pointOfHire:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          locationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          city:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          latitude:
                            type: number
                          longitude:
                            type: number
                          address:
                            type: string
                          phone:
                            type: string
                          zipCode:
                            type: string
                          headquarter:
                            type: boolean
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                      photo:
                        type: object
                        properties:
                          url:
                            type: string
                      manager:
                        type: object
                        properties:
                          id:
                            type: string
                          identificationNumber:
                            type: string
                          name:
                            type: string
                          joinDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          startDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          active:
                            type: boolean
                          pointOfHire:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              locationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              city:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                              latitude:
                                type: number
                              longitude:
                                type: number
                              address:
                                type: string
                              phone:
                                type: string
                              zipCode:
                                type: string
                              headquarter:
                                type: boolean
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          photo:
                            type: object
                            properties:
                              url:
                                type: string
              example:
                id: 21c2f166-0099-437d-84dd-be09e0f42ec9
                bloodType: A
                citizenship:
                  id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                  code: IDN
                  callingCode: '+62'
                  name: Indonesia
                  taxTreaty: false
                dateOfBirth: '1990-03-31'
                foreignLabour: false
                gender: MALE
                maritalStatus: SINGLE
                name: John Doe
                placeOfBirth:
                  id: 04e3c58f-b9f1-4d96-95eb-5f9a31fd9e8a
                  code: '35.18'
                  name: Kab. Nganjuk
                  state:
                    id: 71f5a7a0-a699-11e6-80f5-76304dec7eb7
                    code: '35'
                    name: East Java
                    country:
                      id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                      code: IDN
                      name: Indonesia
                      callingCode: '+62'
                      taxTreaty: false
                religion:
                  id: daa7f10k-a734-11e6-80f5-76304dec7eb7
                  name: Others
                  code: Others
                effectiveDate: '2023-10-31'
                createdBy: system
                createdDate: 1481024187133
                updatedBy: system
                updatedDate: 1481024187133
                employee:
                  id: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                  identificationNumber: EMP12345
                  name: John Doe
                  joinDate: '2022-08-15'
                  startDate: '2022-08-15'
                  active: true
                  pointOfHire:
                    id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                    code: JKT-01
                    name: Jakarta Head Office
                    locationGroup:
                      id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                      code: HQ
                      name: Headquarters
                    city:
                      id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                      code: '31.70'
                      name: Jakarta
                      state:
                        id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                        name: Jakarta Special Capital Region
                        code: '31'
                        country:
                          id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                          code: IDN
                          callingCode: '62'
                          name: Indonesia
                          taxTreaty: true
                    latitude: -6.2088
                    longitude: 106.8456
                    address: Jl. Jenderal Sudirman Kav. 52-53
                    phone: '+62215151234'
                    zipCode: '12190'
                    headquarter: true
                    company:
                      id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                      code: COMP-A
                      name: PT Example Company
                  photo:
                    url: https://example.com/photos/john_doe.jpg
                  manager:
                    id: 0100902f-5d8f-4de4-8fae-5ced86831dd1
                    identificationNumber: MGR5678
                    name: Jane Smith
                    joinDate: '2020-01-14'
                    startDate: '2020-01-14'
                    active: true
                    pointOfHire:
                      id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                      code: JKT-01
                      name: Jakarta Head Office
                      locationGroup:
                        id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                        code: HQ
                        name: Headquarters
                      city:
                        id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                        code: '31.70'
                        name: Jakarta
                        state:
                          id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                          name: Jakarta Special Capital Region
                          code: '31'
                          country:
                            id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                            code: IDN
                            callingCode: '62'
                            name: Indonesia
                            taxTreaty: true
                      latitude: -6.2088
                      longitude: 106.8456
                      address: Jl. Jenderal Sudirman Kav. 52-53
                      phone: '+62215151234'
                      zipCode: '12190'
                      headquarter: true
                      company:
                        id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                        code: COMP-A
                        name: PT Example Company
                    photo:
                      url: https://example.com/photos/jane_smith.jpg
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/employee-details\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.employee_details.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\"\n)"
    put:
      tags:
      - employee-detail
      summary: Update Employee Detail
      description: The `id` field in the response refers to the **employee's ID**, **not the employee detail's actual ID**.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  maritalStatus:
                    type: string
                    enum:
                    - SINGLE
                    - MARRIED
                    - WIDOW
                    - WIDOWER
                  religion:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                  foreignLabour:
                    type: boolean
                  citizenship:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      callingCode:
                        type: string
                      taxTreaty:
                        type: boolean
                  name:
                    type: string
                  dateOfBirth:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  placeOfBirth:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      state:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          country:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              callingCode:
                                type: string
                              taxTreaty:
                                type: boolean
                  gender:
                    type: string
                    enum:
                    - MALE
                    - FEMALE
                  bloodType:
                    type: string
                    enum:
                    - A
                    - B
                    - O
                    - AB
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      joinDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      startDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      active:
                        type: boolean
                      pointOfHire:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          locationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          city:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          latitude:
                            type: number
                          longitude:
                            type: number
                          address:
                            type: string
                          phone:
                            type: string
                          zipCode:
                            type: string
                          headquarter:
                            type: boolean
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                      photo:
                        type: object
                        properties:
                          url:
                            type: string
                      manager:
                        type: object
                        properties:
                          id:
                            type: string
                          identificationNumber:
                            type: string
                          name:
                            type: string
                          joinDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          startDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          active:
                            type: boolean
                          pointOfHire:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              locationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              city:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                              latitude:
                                type: number
                              longitude:
                                type: number
                              address:
                                type: string
                              phone:
                                type: string
                              zipCode:
                                type: string
                              headquarter:
                                type: boolean
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          photo:
                            type: object
                            properties:
                              url:
                                type: string
              example:
                id: 21c2f166-0099-437d-84dd-be09e0f42ec9
                bloodType: A
                citizenship:
                  id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                  code: IDN
                  callingCode: '+62'
                  name: Indonesia
                  taxTreaty: false
                dateOfBirth: '1990-03-31'
                foreignLabour: false
                gender: MALE
                maritalStatus: SINGLE
                name: John Doe
                placeOfBirth:
                  id: 04e3c58f-b9f1-4d96-95eb-5f9a31fd9e8a
                  code: '35.18'
                  name: Kab. Nganjuk
                  state:
                    id: 71f5a7a0-a699-11e6-80f5-76304dec7eb7
                    code: '35'
                    name: East Java
                    country:
                      id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                      code: IDN
                      name: Indonesia
                      callingCode: '+62'
                      taxTreaty: false
                religion:
                  id: daa7f10k-a734-11e6-80f5-76304dec7eb7
                  name: Others
                  code: Others
                effectiveDate: '2023-10-31'
                createdBy: system
                createdDate: 1481024187133
                updatedBy: system
                updatedDate: 1481024187133
                employee:
                  id: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                  identificationNumber: EMP12345
                  name: John Doe
                  joinDate: '2022-08-15'
                  startDate: '2022-08-15'
                  active: true
                  pointOfHire:
                    id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                    code: JKT-01
                    name: Jakarta Head Office
                    locationGroup:
                      id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                      code: HQ
                      name: Headquarters
                    city:
                      id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                      code: '31.70'
                      name: Jakarta
                      state:
                        id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                        name: Jakarta Special Capital Region
                        code: '31'
                        country:
                          id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                          code: IDN
                          callingCode: '62'
                          name: Indonesia
                          taxTreaty: true
                    latitude: -6.2088
                    longitude: 106.8456
                    address: Jl. Jenderal Sudirman Kav. 52-53
                    phone: '+62215151234'
                    zipCode: '12190'
                    headquarter: true
                    company:
                      id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                      code: COMP-A
                      name: PT Example Company
                  photo:
                    url: https://example.com/photos/john_doe.jpg
                  manager:
                    id: 0100902f-5d8f-4de4-8fae-5ced86831dd1
                    identificationNumber: MGR5678
                    name: Jane Smith
                    joinDate: '2020-01-14'
                    startDate: '2020-01-14'
                    active: true
                    pointOfHire:
                      id: f5a7c2b0-9db1-47d0-b93e-960ea2d7b0ac
                      code: JKT-01
                      name: Jakarta Head Office
                      locationGroup:
                        id: g8h9i0j-9db1-47d0-b93e-960ea2d7b0ad
                        code: HQ
                        name: Headquarters
                      city:
                        id: h79d4a0f-9db1-47d0-b93e-960ea2d7b0af
                        code: '31.70'
                        name: Jakarta
                        state:
                          id: d79d4a0f-9db1-47d0-b93e-960ea2d7b0aj
                          name: Jakarta Special Capital Region
                          code: '31'
                          country:
                            id: c79d4a0f-9db1-47d0-b93e-960ea2d7b0al
                            code: IDN
                            callingCode: '62'
                            name: Indonesia
                            taxTreaty: true
                      latitude: -6.2088
                      longitude: 106.8456
                      address: Jl. Jenderal Sudirman Kav. 52-53
                      phone: '+62215151234'
                      zipCode: '12190'
                      headquarter: true
                      company:
                        id: k1l2m3n-9db1-47d0-b93e-960ea2d7b0ae
                        code: COMP-A
                        name: PT Example Company
                    photo:
                      url: https://example.com/photos/jane_smith.jpg
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                bloodType:
                  type: string
                  enum:
                  - A
                  - B
                  - O
                  - AB
                citizenshipId:
                  type: string
                  description: Country ID
                dateOfBirth:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                  default: '1970-01-01'
                foreignLabour:
                  type: boolean
                  default: false
                gender:
                  type: string
                  enum:
                  - MALE
                  - FEMALE
                maritalStatus:
                  type: string
                  enum:
                  - SINGLE
                  - MARRIED
                  - WIDOW
                  - WIDOWER
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                placeOfBirthId:
                  type: string
                  description: City ID
                religionId:
                  type: string
              required:
              - citizenshipId
              - maritalStatus
              - name
              - religionId
            example:
              bloodType: A
              citizenshipId: d1eac40e-a691-11e6-80f5-76304dec7eb7
              dateOfBirth: '1990-03-31'
              foreignLabour: false
              gender: MALE
              maritalStatus: SINGLE
              name: Alice
              placeOfBirthId: 04e3c58f-b9f1-4d96-95eb-5f9a31fd9e8a
              religionId: daa7f10k-a734-11e6-80f5-76304dec7eb7
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/employee-details\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"bloodType\": \"A\",\n  \"citizenshipId\": \"d1eac40e-a691-11e6-80f5-76304dec7eb7\",\n  \"dateOfBirth\": \"1990-03-31\",\n  \"foreignLabour\": false,\n  \"gender\": \"MALE\",\n  \"maritalStatus\": \"SINGLE\",\n  \"name\": \"Alice\",\n  \"placeOfBirthId\": \"04e3c58f-b9f1-4d96-95eb-5f9a31fd9e8a\",\n  \"religionId\": \"daa7f10k-a734-11e6-80f5-76304dec7eb7\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeDetailRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.employee_details.update_many(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    employee_detail_request=EmployeeDetailRequest(\n        blood_type=\"A\",\n        citizenship_id=\"d1eac40e-a691-11e6-80f5-76304dec7eb7\",\n        date_of_birth=\"1990-03-31\",\n        foreign_labour=False,\n        gender=\"MALE\",\n        marital_status=\"SINGLE\",\n        name=\"Alice\",\n        place_of_birth_id=\"04e3c58f-b9f1-4d96-95eb-5f9a31fd9e8a\",\n        religion_id=\"daa7f10k-a734-11e6-80f5-76304dec7eb7\",\n    ),\n)"
  /core/v1/employees/{employeeId}/employee-identity-cards:
    get:
      tags:
      - identity-cards
      summary: Get Employee Identity Cards
      description: Return the employee identity cards.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                     |
          |--------------------|---------------------|-------------------------------------------------------------------------------------------|
          | effectiveDate      | `<`                 | Less than or equal to<br/><br/>Use `yyyy-MM-dd` format, e.g. `effectiveDate<2025-01-31  ` |
        schema:
          type: string
        examples:
          effectiveDate:
            summary: Search Employee Identity Cards by Effective Date Less Than or Equal To
            value: effectiveDate<2025-01-31
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          identityCard:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              identityCardType:
                                type: string
                          identityCardNumber:
                            type: string
                          expiredDate:
                            type: string
              example:
                content:
                - id: 61dfe777-f9ea-4a50-b075-734cb62ed20e
                  identityCardNumber: '1234567890'
                  expiredDate: '1970-01-01'
                  identityCard:
                    id: 73dabc7c-a7da-11e6-80f5-76304dec7eb7
                    identityCardType: OTHER
                    name: SIM C
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/employee-identity-cards?query=effectiveDate%3C2025-01-31\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.employee_identity_cards.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\", query=\"effectiveDate<2025-01-31\"\n)"
    post:
      tags:
      - identity-cards
      summary: Create Employee Identity Cards
      description: Create an employee identity card.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  identityCard:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      identityCardType:
                        type: string
                  identityCardNumber:
                    type: string
                  expiredDate:
                    type: string
              example:
                id: 61dfe777-f9ea-4a50-b075-734cb62ed20e
                identityCard:
                  id: 73dabc7c-a7da-11e6-80f5-76304dec7eb7
                  name: SIM C
                  identityCardType: OTHER
                identityCardNumber: '1234567890'
                expiredDate: '1970-01-01'
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                identityCardId:
                  type: string
                identityCardNumber:
                  type: string
                  minLength: 1
                  maxLength: 255
                  pattern: '[a-zA-Z0-9]+'
                  description: Alphanumeric
                expiredDate:
                  type: string
                  format: date
              required:
              - identityCardId
              - identityCardNumber
            example:
              identityCardId: 73dabc7c-a7da-11e6-80f5-76304dec7eb7
              identityCardNumber: '1234567890'
              expiredDate: '1970-01-01'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/employee-identity-cards\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"identityCardId\": \"73dabc7c-a7da-11e6-80f5-76304dec7eb7\",\n  \"identityCardNumber\": \"1234567890\",\n  \"expiredDate\": \"1970-01-01\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeIdentityCardRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.employee_identity_cards.create(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    employee_identity_card_request=EmployeeIdentityCardRequest(\n        identity_card_id=\"73dabc7c-a7da-11e6-80f5-76304dec7eb7\",\n        identity_card_number=\"1234567890\",\n        expired_date=\"1970-01-01\",\n    ),\n)"
  /core/v1/employees/{employeeId}/employee-identity-cards/{employeeIdentityCardId}:
    put:
      tags:
      - identity-cards
      summary: Update Employee Identity Cards
      description: Update the employee identity card.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      - in: path
        name: employeeIdentityCardId
        schema:
          type: string
        required: true
        example: b2c3d4e5-f6a7-8901-bcde-f0123456789a
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  identityCard:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      identityCardType:
                        type: string
                  identityCardNumber:
                    type: string
                  expiredDate:
                    type: string
              example:
                id: 838aa256-d1f7-4c7c-8f47-a2d293d8ef22
                identityCard:
                  id: 73da9d40-a7da-11e6-80f5-76304dec7eb7
                  name: PASSPORT
                  identityCardType: PASSPORT
                identityCardNumber: '5432154321'
                expiredDate: '1970-01-01'
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                identityCardId:
                  type: string
                identityCardNumber:
                  type: string
                  minLength: 1
                  maxLength: 255
                  pattern: '[a-zA-Z0-9]+'
                  description: Alphanumeric
                expiredDate:
                  type: string
                  format: date
              required:
              - identityCardId
              - identityCardNumber
            example:
              identityCardId: 73da9d40-a7da-11e6-80f5-76304dec7eb7
              identityCardNumber: '5432154321'
              expiredDate: '1970-01-01'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/employee-identity-cards/b2c3d4e5-f6a7-8901-bcde-f0123456789a\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"identityCardId\": \"73da9d40-a7da-11e6-80f5-76304dec7eb7\",\n  \"identityCardNumber\": \"5432154321\",\n  \"expiredDate\": \"1970-01-01\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeIdentityCardRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.employee_identity_cards.update(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    employee_identity_card_id=\"b2c3d4e5-f6a7-8901-bcde-f0123456789a\",\n    employee_identity_card_request=EmployeeIdentityCardRequest(\n        identity_card_id=\"73da9d40-a7da-11e6-80f5-76304dec7eb7\",\n        identity_card_number=\"5432154321\",\n        expired_date=\"1970-01-01\",\n    ),\n)"
    delete:
      tags:
      - identity-cards
      summary: Delete Employee Identity Cards
      description: Delete the employee identity card.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      - in: path
        name: employeeIdentityCardId
        schema:
          type: string
        required: true
        example: b2c3d4e5-f6a7-8901-bcde-f0123456789a
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/employee-identity-cards/b2c3d4e5-f6a7-8901-bcde-f0123456789a\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.employee_identity_cards.delete(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    employee_identity_card_id=\"b2c3d4e5-f6a7-8901-bcde-f0123456789a\",\n)"
  /core/v1/employment-statuses:
    get:
      tags:
      - employment-status
      summary: Get Employment Statuses
      description: Return the employment statuses.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                     |
          |--------------------|---------------------|-------------------------------------------------------------------------------------------|
          | id                 | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | employee.id        | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
        schema:
          type: string
        examples:
          one:
            summary: Search Employment Statuses by Multiple IDs
            value: id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6
          two:
            summary: Search Employment Statuses by Multiple Employee IDs
            value: employee.id:d290f1ee-6c54-4b01-90e6-d701748f0851;0100902f-5d8f-4de4-8fae-5ced86831dd1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          contractStart:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          contractEnd:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          costCenter:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                              code:
                                type: string
                              name:
                                type: string
                              description:
                                type: string
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                  code:
                                    type: string
                                  name:
                                    type: string
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
                          employmentStatusNumber:
                            type: string
                          employmentStatusType:
                            type: object
                            properties:
                              id:
                                type: string
                              defaultData:
                                type: boolean
                              employmentStatusNumberType:
                                type: string
                                enum:
                                - PKWT_NUMBER
                                - EMPLOYMENT_STATUS_CHANGE_NUMBER
                              name:
                                type: string
                          employmentType:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              employmentGroupCode:
                                type: string
                              monthDuration:
                                type: integer
                              permanent:
                                type: boolean
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
                          jobLevel:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              jobPosition:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              level:
                                type: number
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
                          jobTitle:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
                              minJobLevel:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  jobPosition:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  level:
                                    type: number
                                  effectiveDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                              maxJobLevel:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  jobPosition:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  level:
                                    type: number
                                  effectiveDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                          location:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              locationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              city:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                              latitude:
                                type: number
                                format: float
                              longitude:
                                type: number
                                format: float
                              headquarter:
                                type: boolean
                              address:
                                type: string
                              phone:
                                type: string
                              zipCode:
                                type: string
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD, effective date of the location
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD, end date of the location
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                  code:
                                    type: string
                                  name:
                                    type: string
                          organization:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              type:
                                type: string
                                enum:
                                - STRUCTURAL
                                - FUNCTIONAL
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              createdBy:
                                type: string
                              createdDate:
                                type: number
                              updatedBy:
                                type: string
                              updatedDate:
                                type: number
                              organizationHierarchy:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  color:
                                    type: string
                                  level:
                                    type: integer
                              organizationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              organizationParent:
                                type: object
                                deprecated: true
                                description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  type:
                                    type: string
                                    enum:
                                    - STRUCTURAL
                                    - FUNCTIONAL
                                  effectiveDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  endDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  createdBy:
                                    type: string
                                  createdDate:
                                    type: number
                                  updatedBy:
                                    type: string
                                  updatedDate:
                                    type: number
                                  organizationHierarchy:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      color:
                                        type: string
                                      level:
                                        type: integer
                                  organizationGroup:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  organizationParent:
                                    type: object
                                    description: Deprecated. Always null.
                                    deprecated: true
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          permanentDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          signDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          subLocation:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              location:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  effectiveDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  endDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD or null when ongoing
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD or null when ongoing
                          operationalGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          position:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
              example:
                content:
                - id: 5540d712-508c-4831-84a6-8433933409d6
                  employmentStatusNumber: PKWT-111
                  organization:
                    id: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
                    code: ORG-002
                    name: ICT
                    type: FUNCTIONAL
                    createdBy: system
                    createdDate: 1481024187133
                    updatedBy: system
                    updatedDate: 1481024187133
                    company:
                      id: 8adeb8b6-acab-11e6-80f5-76304dec7eb6
                      code: COMP-001
                      name: PT ABC
                    organizationHierarchy:
                      id: a896d062-aba9-11e6-80f5-76304dec7eb7
                      code: ORG-002
                      name: Departemen ICT
                      color: '#B7783A'
                      level: 2
                    organizationGroup:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: OG-001
                      name: Organization Group
                    organizationParent: {}
                  jobTitle:
                    id: 3fb954ed-f00d-4f6f-b9ee-35f3ef817df9
                    code: JT010
                    name: Staff
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    minJobLevel:
                      id: 4211c096-4c06-4cce-8bf3-c6060a46ac34
                      code: JL-01
                      name: Job Level 1
                      effectiveDate: '2021-01-31'
                      endDate: '9999-12-31'
                      jobPosition:
                        id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                        code: JP-001
                        name: Job Position Name
                      level: 1
                    maxJobLevel:
                      id: 1211c096-4c06-4cce-8bf3-c6060a46ac34
                      code: JL-07
                      name: Job Level 7
                      effectiveDate: '2021-01-31'
                      endDate: '9999-12-31'
                      jobPosition:
                        id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                        code: JP-007
                        name: Job Position Name
                      level: 6
                  jobLevel:
                    id: 944e67fc-3ac4-463d-9854-db536f4dad56
                    code: JL-020
                    name: Staff
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                      code: JP-001
                      name: Job Position Name
                    level: 1
                  location:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb9
                    code: LOC-001
                    name: Location Name
                    locationGroup:
                      id: 81d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: LG-001
                      name: Location Group Name
                    city:
                      id: 31d5f69a-a5a4-1111-80f5-76304dec7eb2
                      code: '31.70'
                      name: Jakarta
                      state:
                        id: 51d5f69a-a5a4-1111-80f5-76304dec7eb3
                        code: '35'
                        name: East Java
                        country:
                          id: 11d5f69a-a5a4-1111-80f5-76304dec7eb1
                          code: IDN
                          name: Indonesia
                    address: Menara Citicon, 17th Floor, Jl. Letjen. S. Parman Kav 72
                    phone: '+628123456789'
                    zipCode: '11410'
                    headquarter: true
                    latitude: -6.174465
                    longitude: 106.827153
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                    effectiveDate: '2023-01-01'
                    endDate: '9999-12-31'
                  costCenter:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb1
                    code: CC-001
                    name: Cost Center Name
                    description: Cost Center Description
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                  employmentType:
                    id: a896cc20-aba9-11e6-80f6-76304dec7eb7
                    name: Permanent
                    employmentGroupCode: EGC-001
                    permanent: false
                    monthDuration: 8
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                  employmentStatusType:
                    id: f18f5618-ac6c-11e6-80f5-76304dec7eb3
                    name: Permanent
                    employmentStatusNumberType: EMPLOYMENT_STATUS_CHANGE_NUMBER
                    defaultData: false
                  contractStart: '2021-01-31'
                  contractEnd: '2023-01-31'
                  signDate: '2021-01-31'
                  effectiveDate: '2021-01-31'
                  permanentDate: '2021-01-31'
                  createdBy: system
                  createdDate: 1481024187133
                  updatedBy: system
                  updatedDate: 1481024187133
                  subLocation:
                    id: 81d5f69a-a5a4-1111-80f5-76304dec7db8
                    code: SL-001
                    name: Sub Location Name
                    location:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7ej2
                      code: LOC-005
                      name: Location Name
                      company:
                        id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                        code: COMP-001
                        name: PT. CATAPA
                      effectiveDate: '2022-01-01'
                      endDate: '9999-12-31'
                    effectiveDate: '2022-01-01'
                    endDate: '9999-12-31'
                  operationalGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb2
                    code: OG-001
                    name: Operational Group Name
                  position:
                    id: 31d5f69a-a5a4-1111-80f5-76304dec7eb3
                    code: POS-001
                    name: Position Name
                    effectiveDate: '2021-01-31'
                    endDate: '2099-12-31'
                - id: 3540d712-508c-4831-84a6-8433933409d2
                  employmentStatusNumber: PKWT-222
                  organization:
                    id: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
                    code: ORG-002
                    name: ICT
                    type: FUNCTIONAL
                    createdBy: system
                    createdDate: 1481024187133
                    updatedBy: system
                    updatedDate: 1481024187133
                    company:
                      id: 8adeb8b6-acab-11e6-80f5-76304dec7eb6
                      code: COMP-001
                      name: PT ABC
                    organizationHierarchy:
                      id: a896d062-aba9-11e6-80f5-76304dec7eb7
                      code: ORG-002
                      name: Departemen ICT
                      color: '#B7783A'
                      level: 2
                    organizationGroup:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: OG-001
                      name: Organization Group
                    organizationParent: {}
                  jobTitle:
                    id: 3fb954ed-f00d-4f6f-b9ee-35f3ef817df9
                    code: JT010
                    name: Staff
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    minJobLevel:
                      id: 4211c096-4c06-4cce-8bf3-c6060a46ac34
                      code: JL-01
                      name: Job Level 1
                      effectiveDate: '2021-01-31'
                      endDate: '9999-12-31'
                      jobPosition:
                        id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                        code: JP-001
                        name: Job Position Name
                      level: 1
                    maxJobLevel:
                      id: 1211c096-4c06-4cce-8bf3-c6060a46ac34
                      code: JL-07
                      name: Job Level 7
                      effectiveDate: '2021-01-31'
                      endDate: '9999-12-31'
                      jobPosition:
                        id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                        code: JP-007
                        name: Job Position Name
                      level: 6
                  jobLevel:
                    id: 944e67fc-3ac4-463d-9854-db536f4dad56
                    code: JL-020
                    name: Staff
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                      code: JP-001
                      name: Job Position Name
                    level: 1
                  location:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb9
                    code: LOC-001
                    name: Location Name
                    locationGroup:
                      id: 81d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: LG-001
                      name: Location Group Name
                    city:
                      id: 31d5f69a-a5a4-1111-80f5-76304dec7eb2
                      code: '31.70'
                      name: Jakarta
                      state:
                        id: 51d5f69a-a5a4-1111-80f5-76304dec7eb3
                        code: '35'
                        name: East Java
                        country:
                          id: 11d5f69a-a5a4-1111-80f5-76304dec7eb1
                          code: IDN
                          name: Indonesia
                    address: Menara Citicon, 17th Floor, Jl. Letjen. S. Parman Kav 72
                    phone: '+628123456789'
                    zipCode: '11410'
                    headquarter: true
                    latitude: -6.174465
                    longitude: 106.827153
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                    effectiveDate: '2023-01-01'
                    endDate: '9999-12-31'
                  costCenter:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb2
                    code: CC-002
                    name: Cost Center Name 2
                    description: Cost Center Description
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                  employmentType:
                    id: a896cc20-aba9-11e6-80f6-76304dec7eb7
                    name: Permanent
                    employmentGroupCode: EGC-001
                    permanent: false
                    monthDuration: 8
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                  employmentStatusType:
                    id: f18f5618-ac6c-11e6-80f5-76304dec7eb3
                    name: Permanent
                    employmentStatusNumberType: EMPLOYMENT_STATUS_CHANGE_NUMBER
                    defaultData: false
                  contractStart: '2021-01-31'
                  contractEnd: '2023-01-31'
                  signDate: '2021-01-31'
                  effectiveDate: '2021-01-31'
                  permanentDate: '2021-01-31'
                  createdBy: system
                  createdDate: 1481024187133
                  updatedBy: system
                  updatedDate: 1481024187133
                  subLocation:
                    id: 81d5f69a-a5a4-1111-80f5-76304dec7db8
                    code: SL-001
                    name: Sub Location Name
                    location:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7ej2
                      code: LOC-005
                      name: Location Name
                      company:
                        id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                        code: COMP-001
                        name: PT. CATAPA
                      effectiveDate: '2022-01-01'
                      endDate: '9999-12-31'
                    effectiveDate: '2022-01-01'
                    endDate: '9999-12-31'
                  operationalGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb2
                    code: OG-001
                    name: Operational Group Name
                  position:
                    id: 31d5f69a-a5a4-1111-80f5-76304dec7eb3
                    code: POS-001
                    name: Position Name
                    effectiveDate: '2021-01-31'
                    endDate: '2099-12-31'
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employment-statuses?page=0&size=10&query=id%3Ae18f5618-bc6c-11e6-80f5-76304dec7eb1%3Bf38f5618-bc6c-11e6-80f5-76304dec7ec6\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employment_statuses.list(\n    page=0,\n    size=10,\n    query=\"id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6\",\n)"
  /core/v1/employment-status-histories:
    get:
      tags:
      - employment-status
      summary: Get Employment Status Histories
      description: Return the employment status histories.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                     |
          |--------------------|---------------------|-------------------------------------------------------------------------------------------|
          | id                 | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | employee.id        | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | effectiveDate      | `<`                 | Less than or equal to<br/><br/>Use `yyyy-MM-dd` format, e.g. `effectiveDate<2025-01-31  ` |
        schema:
          type: string
        examples:
          one:
            summary: Search Employment Status Histories by Multiple IDs
            value: id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6
          two:
            summary: Search Employment Status Histories by Multiple Employee IDs
            value: employee.id:d290f1ee-6c54-4b01-90e6-d701748f0851;0100902f-5d8f-4de4-8fae-5ced86831dd1
          three:
            summary: Search Employment Status Histories by Effective Date Less Than or Equal To
            value: effectiveDate<2025-01-31
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          contractStart:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          contractEnd:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          costCenter:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                              code:
                                type: string
                              name:
                                type: string
                              description:
                                type: string
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                  code:
                                    type: string
                                  name:
                                    type: string
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          employmentStatusNumber:
                            type: string
                          employmentStatusType:
                            type: object
                            properties:
                              id:
                                type: string
                              defaultData:
                                type: boolean
                              employmentStatusNumberType:
                                type: string
                                enum:
                                - PKWT_NUMBER
                                - EMPLOYMENT_STATUS_CHANGE_NUMBER
                              name:
                                type: string
                          employmentType:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              employmentGroupCode:
                                type: string
                              monthDuration:
                                type: integer
                              permanent:
                                type: boolean
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
                          jobLevel:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              jobPosition:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              level:
                                type: number
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
                          jobTitle:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
                              minJobLevel:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  jobPosition:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  level:
                                    type: number
                                  effectiveDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                              maxJobLevel:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  jobPosition:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  level:
                                    type: number
                                  effectiveDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                          location:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              locationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              city:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                              latitude:
                                type: number
                                format: float
                              longitude:
                                type: number
                                format: float
                              headquarter:
                                type: boolean
                              address:
                                type: string
                              phone:
                                type: string
                              zipCode:
                                type: string
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD, effective date of the location
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD, end date of the location
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                  code:
                                    type: string
                                  name:
                                    type: string
                          organization:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              type:
                                type: string
                                enum:
                                - STRUCTURAL
                                - FUNCTIONAL
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              createdBy:
                                type: string
                              createdDate:
                                type: number
                              updatedBy:
                                type: string
                              updatedDate:
                                type: number
                              organizationHierarchy:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  color:
                                    type: string
                                  level:
                                    type: integer
                              organizationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              organizationParent:
                                type: object
                                deprecated: true
                                description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  type:
                                    type: string
                                    enum:
                                    - STRUCTURAL
                                    - FUNCTIONAL
                                  effectiveDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  endDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  createdBy:
                                    type: string
                                  createdDate:
                                    type: number
                                  updatedBy:
                                    type: string
                                  updatedDate:
                                    type: number
                                  organizationHierarchy:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      color:
                                        type: string
                                      level:
                                        type: integer
                                  organizationGroup:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  organizationParent:
                                    type: object
                                    description: Deprecated. Always null.
                                    deprecated: true
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          permanentDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          signDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          subLocation:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              location:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  effectiveDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD
                                  endDate:
                                    type: string
                                    format: date
                                    description: YYYY-MM-DD or null when ongoing
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD or null when ongoing
                          operationalGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          position:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
              example:
                content:
                - id: 5540d712-508c-4831-84a6-8433933409d6
                  employmentStatusNumber: PKWT-111
                  organization:
                    id: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
                    code: ORG-002
                    name: ICT
                    type: FUNCTIONAL
                    company:
                      id: 8adeb8b6-acab-11e6-80f5-76304dec7eb6
                      code: COMP-001
                      name: PT ABC
                    organizationHierarchy:
                      id: a896d062-aba9-11e6-80f5-76304dec7eb7
                      code: ORG-002
                      name: Departemen ICT
                      color: '#B7783A'
                      level: 2
                    organizationGroup:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: OG-001
                      name: Organization Group
                    organizationParent: {}
                  jobTitle:
                    id: 3fb954ed-f00d-4f6f-b9ee-35f3ef817df9
                    code: JT010
                    name: Staff
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    minJobLevel:
                      id: 4211c096-4c06-4cce-8bf3-c6060a46ac34
                      code: JL-01
                      name: Job Level 1
                      effectiveDate: '2021-01-31'
                      endDate: '9999-12-31'
                      jobPosition:
                        id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                        code: JP-001
                        name: Job Position Name
                      level: 1
                    maxJobLevel:
                      id: 1211c096-4c06-4cce-8bf3-c6060a46ac34
                      code: JL-07
                      name: Job Level 7
                      effectiveDate: '2021-01-31'
                      endDate: '9999-12-31'
                      jobPosition:
                        id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                        code: JP-007
                        name: Job Position Name
                      level: 6
                  jobLevel:
                    id: 944e67fc-3ac4-463d-9854-db536f4dad56
                    code: JL-020
                    name: Staff
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                      code: JP-001
                      name: Job Position Name
                    level: 1
                  location:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb9
                    code: LOC-001
                    name: Location Name
                    locationGroup:
                      id: 81d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: LG-001
                      name: Location Group Name
                    city:
                      id: 31d5f69a-a5a4-1111-80f5-76304dec7eb2
                      code: '31.70'
                      name: Jakarta
                      state:
                        id: 51d5f69a-a5a4-1111-80f5-76304dec7eb3
                        code: '35'
                        name: East Java
                        country:
                          id: 11d5f69a-a5a4-1111-80f5-76304dec7eb1
                          code: IDN
                          name: Indonesia
                    address: Menara Citicon, 17th Floor, Jl. Letjen. S. Parman Kav 72
                    phone: '+628123456789'
                    zipCode: '11410'
                    headquarter: true
                    latitude: -6.174465
                    longitude: 106.827153
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                    effectiveDate: '2023-01-01'
                    endDate: '9999-12-31'
                  costCenter:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb1
                    code: CC-001
                    name: Cost Center Name
                    description: Cost Center Description
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                  employmentType:
                    id: a896cc20-aba9-11e6-80f6-76304dec7eb7
                    name: Permanent
                    employmentGroupCode: EGC-001
                    permanent: false
                    monthDuration: 8
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                  employmentStatusType:
                    id: f18f5618-ac6c-11e6-80f5-76304dec7eb3
                    name: Permanent
                    employmentStatusNumberType: EMPLOYMENT_STATUS_CHANGE_NUMBER
                    defaultData: false
                  contractStart: '2021-01-31'
                  contractEnd: '2023-01-31'
                  signDate: '2021-01-31'
                  effectiveDate: '2021-01-31'
                  endDate: '1970-01-01'
                  permanentDate: '2021-01-31'
                  subLocation:
                    id: 81d5f69a-a5a4-1111-80f5-76304dec7db8
                    code: SL-001
                    name: Sub Location Name
                    location:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7ej2
                      code: LOC-005
                      name: Location Name
                      company:
                        id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                        code: COMP-001
                        name: PT. CATAPA
                      effectiveDate: '2022-01-01'
                      endDate: '9999-12-31'
                    effectiveDate: '2022-01-01'
                    endDate: '9999-12-31'
                  operationalGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb2
                    code: OG-001
                    name: Operational Group Name
                  position:
                    id: 31d5f69a-a5a4-1111-80f5-76304dec7eb3
                    code: POS-001
                    name: Position Name
                    effectiveDate: '2021-01-31'
                    endDate: '1970-01-01'
                  employee:
                    id: d290f1ee-6c54-4b01-90e6-d701748f0851
                    identificationNumber: EMP-001
                - id: 3540d712-508c-4831-84a6-8433933409d2
                  employmentStatusNumber: PKWT-222
                  organization:
                    id: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
                    code: ORG-002
                    name: ICT
                    type: FUNCTIONAL
                    company:
                      id: 8adeb8b6-acab-11e6-80f5-76304dec7eb6
                      code: COMP-001
                      name: PT ABC
                    organizationHierarchy:
                      id: a896d062-aba9-11e6-80f5-76304dec7eb7
                      code: ORG-002
                      name: Departemen ICT
                      color: '#B7783A'
                      level: 2
                    organizationGroup:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: OG-001
                      name: Organization Group
                    organizationParent: {}
                  jobTitle:
                    id: 3fb954ed-f00d-4f6f-b9ee-35f3ef817df9
                    code: JT010
                    name: Staff
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    minJobLevel:
                      id: 4211c096-4c06-4cce-8bf3-c6060a46ac34
                      code: JL-01
                      name: Job Level 1
                      effectiveDate: '2021-01-31'
                      endDate: '9999-12-31'
                      jobPosition:
                        id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                        code: JP-001
                        name: Job Position Name
                      level: 1
                    maxJobLevel:
                      id: 1211c096-4c06-4cce-8bf3-c6060a46ac34
                      code: JL-07
                      name: Job Level 7
                      effectiveDate: '2021-01-31'
                      endDate: '9999-12-31'
                      jobPosition:
                        id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                        code: JP-007
                        name: Job Position Name
                      level: 6
                  jobLevel:
                    id: 944e67fc-3ac4-463d-9854-db536f4dad56
                    code: JL-020
                    name: Staff
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                      code: JP-001
                      name: Job Position Name
                    level: 1
                  location:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb9
                    code: LOC-001
                    name: Location Name
                    locationGroup:
                      id: 81d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: LG-001
                      name: Location Group Name
                    city:
                      id: 31d5f69a-a5a4-1111-80f5-76304dec7eb2
                      code: '31.70'
                      name: Jakarta
                      state:
                        id: 51d5f69a-a5a4-1111-80f5-76304dec7eb3
                        code: '35'
                        name: East Java
                        country:
                          id: 11d5f69a-a5a4-1111-80f5-76304dec7eb1
                          code: IDN
                          name: Indonesia
                    address: Menara Citicon, 17th Floor, Jl. Letjen. S. Parman Kav 72
                    phone: '+628123456789'
                    zipCode: '11410'
                    headquarter: true
                    latitude: -6.174465
                    longitude: 106.827153
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                    effectiveDate: '2023-01-01'
                    endDate: '9999-12-31'
                  costCenter:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb2
                    code: CC-002
                    name: Cost Center Name 2
                    description: Cost Center Description 2
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                  employmentType:
                    id: a896cc20-aba9-11e6-80f6-76304dec7eb7
                    name: Permanent
                    employmentGroupCode: EGC-001
                    permanent: false
                    monthDuration: 8
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                  employmentStatusType:
                    id: f18f5618-ac6c-11e6-80f5-76304dec7eb3
                    name: Permanent
                    employmentStatusNumberType: EMPLOYMENT_STATUS_CHANGE_NUMBER
                    defaultData: false
                  contractStart: '2021-01-31'
                  contractEnd: '2023-01-31'
                  signDate: '2021-01-31'
                  effectiveDate: '2021-01-31'
                  endDate: '2022-01-31'
                  permanentDate: '2021-01-31'
                  subLocation:
                    id: 81d5f69a-a5a4-1111-80f5-76304dec7db8
                    code: SL-001
                    name: Sub Location Name
                    location:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7ej2
                      code: LOC-005
                      name: Location Name
                      company:
                        id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                        code: COMP-001
                        name: PT. CATAPA
                      effectiveDate: '2022-01-01'
                      endDate: '9999-12-31'
                    effectiveDate: '2022-01-01'
                    endDate: '9999-12-31'
                  operationalGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb2
                    code: OG-001
                    name: Operational Group Name
                  position:
                    id: 31d5f69a-a5a4-1111-80f5-76304dec7eb3
                    code: POS-001
                    name: Position Name
                    effectiveDate: '2021-01-31'
                    endDate: '1970-01-01'
                  employee:
                    id: d290f1ee-6c54-4b01-90e6-d701748f0851
                    identificationNumber: EMP-001
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employment-status-histories?page=0&size=10&query=id%3Ae18f5618-bc6c-11e6-80f5-76304dec7eb1%3Bf38f5618-bc6c-11e6-80f5-76304dec7ec6\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employment_status_histories.list(\n    page=0,\n    size=10,\n    query=\"id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6\",\n)"
  /core/v1/employees/{employeeId}/employment-data:
    get:
      tags:
      - employment-status
      summary: Get Employment Status by Employee
      description: |
        ⚠️ **This endpoint is deprecated.**   Please use [Get Employment Statuses](https://api-docs.catapa.com/#tag/employment-status/operation/getEmploymentStatuses) instead.
      deprecated: true
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      - in: query
        name: query
        description: |
          ### Search query
          | Supported Keys | Supported Operators | Notes                                                                                                                                |
          |----------------|---------------------|--------------------------------------------------------------------------------------------------------------------------------------|
          | effectiveDate  | `>`<br/>`<`         | Greater than or equal operator<br/>Less than or equal operator<br/><br/>Use the `YYYY-MM-DD` format, e.g. `effectiveDate>2023-09-20` |
        schema:
          type: string
        examples:
          one:
            summary: Search by Effective Date
            value: effectiveDate>2023-09-20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  contractStart:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  contractEnd:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  costCenter:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      code:
                        type: string
                      name:
                        type: string
                      description:
                        type: string
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          code:
                            type: string
                          name:
                            type: string
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  employmentStatusNumber:
                    type: string
                  employmentStatusType:
                    type: object
                    properties:
                      id:
                        type: string
                      defaultData:
                        type: boolean
                      employmentStatusNumberType:
                        type: string
                        enum:
                        - PKWT_NUMBER
                        - EMPLOYMENT_STATUS_CHANGE_NUMBER
                      name:
                        type: string
                  employmentType:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      employmentGroupCode:
                        type: string
                      monthDuration:
                        type: integer
                      permanent:
                        type: boolean
                      effectiveDate:
                        type: string
                        format: date
                      endDate:
                        type: string
                        format: date
                  jobLevel:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      jobPosition:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      level:
                        type: number
                      effectiveDate:
                        type: string
                        format: date
                      endDate:
                        type: string
                        format: date
                  jobTitle:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                      effectiveDate:
                        type: string
                        format: date
                      endDate:
                        type: string
                        format: date
                      minJobLevel:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          jobPosition:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          level:
                            type: number
                          effectiveDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
                      maxJobLevel:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          jobPosition:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          level:
                            type: number
                          effectiveDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
                  location:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      locationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      latitude:
                        type: number
                        format: float
                      longitude:
                        type: number
                        format: float
                      headquarter:
                        type: boolean
                      address:
                        type: string
                      phone:
                        type: string
                      zipCode:
                        type: string
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD, effective date of the location
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD, end date of the location
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          code:
                            type: string
                          name:
                            type: string
                  organization:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      type:
                        type: string
                        enum:
                        - STRUCTURAL
                        - FUNCTIONAL
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      createdBy:
                        type: string
                      createdDate:
                        type: number
                      updatedBy:
                        type: string
                      updatedDate:
                        type: number
                      organizationHierarchy:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          color:
                            type: string
                          level:
                            type: integer
                      organizationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      organizationParent:
                        type: object
                        deprecated: true
                        description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          type:
                            type: string
                            enum:
                            - STRUCTURAL
                            - FUNCTIONAL
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
                          organizationHierarchy:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              color:
                                type: string
                              level:
                                type: integer
                          organizationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          organizationParent:
                            type: object
                            description: Deprecated. Always null.
                            deprecated: true
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                  position:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      assigned:
                        type: boolean
                      effectiveDate:
                        type: string
                      endDate:
                        type: string
                      maxEmployees:
                        type: integer
                      createdBy:
                        type: string
                      createdDate:
                        type: number
                      updatedBy:
                        type: string
                      updatedDate:
                        type: number
                  permanentDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  signDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  subLocation:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      location:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD or null when ongoing
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD or null when ongoing
                  operationalGroup:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
              example:
                id: 5540d712-508c-4831-84a6-8433933409d6
                employmentStatusNumber: PKWT-UPDATE-SUCCESS
                position:
                  id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                  code: JP-001
                  name: Software Engineer
                  effectiveDate: '2021-01-31'
                  endDate: '1970-01-01'
                  createdBy: system
                  createdDate: 1727370164151
                  updatedBy: system
                  updatedDate: 1727370164151
                organization:
                  id: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
                  code: ORG-002
                  name: ICT
                  type: FUNCTIONAL
                  company:
                    id: 8adeb8b6-acab-11e6-80f5-76304dec7eb6
                    code: COMP-001
                    name: PT ABC
                  organizationHierarchy:
                    id: a896d062-aba9-11e6-80f5-76304dec7eb7
                    code: ORG-002
                    name: Departemen ICT
                    color: '#B7783A'
                    level: 2
                  organizationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: OG-001
                    name: Organization Group
                  organizationParent: {}
                jobTitle:
                  id: 3fb954ed-f00d-4f6f-b9ee-35f3ef817df9
                  code: JT010
                  name: Staff
                  effectiveDate: '2021-01-31'
                  endDate: '9999-12-31'
                  minJobLevel:
                    id: 4211c096-4c06-4cce-8bf3-c6060a46ac34
                    code: JL-01
                    name: Job Level 1
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                      code: JP-001
                      name: Job Position Name
                    level: 1
                  maxJobLevel:
                    id: 1211c096-4c06-4cce-8bf3-c6060a46ac34
                    code: JL-07
                    name: Job Level 7
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                      code: JP-007
                      name: Job Position Name
                    level: 6
                jobLevel:
                  id: 944e67fc-3ac4-463d-9854-db536f4dad56
                  code: JL-020
                  name: Staff
                  effectiveDate: '2021-01-31'
                  endDate: '9999-12-31'
                  jobPosition:
                    id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                    code: JP-001
                    name: Job Position Name
                  level: 1
                location:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb9
                  code: LOC-001
                  name: Location Name
                  locationGroup:
                    id: 81d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: LG-001
                    name: Location Group Name
                  city:
                    id: 31d5f69a-a5a4-1111-80f5-76304dec7eb2
                    code: '31.70'
                    name: Jakarta
                    state:
                      id: 51d5f69a-a5a4-1111-80f5-76304dec7eb3
                      code: '35'
                      name: East Java
                      country:
                        id: 11d5f69a-a5a4-1111-80f5-76304dec7eb1
                        code: IDN
                        name: Indonesia
                  address: Menara Citicon, 17th Floor, Jl. Letjen. S. Parman Kav 72
                  phone: '+628123456789'
                  zipCode: '11410'
                  headquarter: true
                  latitude: -6.174465
                  longitude: 106.827153
                  effectiveDate: '2023-01-01'
                  endDate: '9999-12-31'
                costCenter:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb1
                  code: CC-001
                  name: Cost Center Name
                  description: Cost Center Description
                employmentType:
                  id: a896cc20-aba9-11e6-80f6-76304dec7eb7
                  name: Permanent
                  employmentGroupCode: EGC-001
                  permanent: false
                  monthDuration: 8
                  effectiveDate: '2021-01-31'
                  endDate: '9999-12-31'
                employmentStatusType:
                  id: f18f5618-ac6c-11e6-80f5-76304dec7eb3
                  name: Permanent
                  employmentStatusNumberType: EMPLOYMENT_STATUS_CHANGE_NUMBER
                  defaultData: false
                contractStart: '2021-01-31'
                contractEnd: '2023-01-31'
                signDate: '2021-01-31'
                effectiveDate: '2021-01-31'
                permanentDate: '2021-01-31'
                subLocation:
                  id: 81d5f69a-a5a4-1111-80f5-76304dec7db8
                  code: SL-001
                  name: Sub Location Name
                  location:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7ej2
                    code: LOC-005
                    name: Location Name
                    effectiveDate: '2022-01-01'
                    endDate: '9999-12-31'
                  effectiveDate: '2022-01-01'
                  endDate: '9999-12-31'
                operationalGroup:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb2
                  code: OG-001
                  name: Operational Group Name
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/employment-data?query=effectiveDate%3E2023-09-20\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.employment_data.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\", query=\"effectiveDate>2023-09-20\"\n)"
    put:
      tags:
      - employment-status
      summary: Update Employment Status by Employee
      description: |
        ### Generate Employment Status Number
        The default value for the `generateEmploymentStatusNumber` field in the request body is set to `false`. If a request is sent with the value of `true`, it will first check the existing employee policy. If the employee policy is set to manual, it will accept the employment status number in the request. If the employee policy is set to automatic, it will generate a new employment status number based on the format in the employee policy.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  contractStart:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  contractEnd:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  costCenter:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      code:
                        type: string
                      name:
                        type: string
                      description:
                        type: string
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          code:
                            type: string
                          name:
                            type: string
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  employmentStatusNumber:
                    type: string
                  employmentStatusType:
                    type: object
                    properties:
                      id:
                        type: string
                      defaultData:
                        type: boolean
                      employmentStatusNumberType:
                        type: string
                        enum:
                        - PKWT_NUMBER
                        - EMPLOYMENT_STATUS_CHANGE_NUMBER
                      name:
                        type: string
                  employmentType:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      employmentGroupCode:
                        type: string
                      monthDuration:
                        type: integer
                      permanent:
                        type: boolean
                      effectiveDate:
                        type: string
                        format: date
                      endDate:
                        type: string
                        format: date
                  jobLevel:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      jobPosition:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      level:
                        type: number
                      effectiveDate:
                        type: string
                        format: date
                      endDate:
                        type: string
                        format: date
                  jobTitle:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                      effectiveDate:
                        type: string
                        format: date
                      endDate:
                        type: string
                        format: date
                      minJobLevel:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          jobPosition:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          level:
                            type: number
                          effectiveDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
                      maxJobLevel:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          jobPosition:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          level:
                            type: number
                          effectiveDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
                  location:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      locationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      latitude:
                        type: number
                        format: float
                      longitude:
                        type: number
                        format: float
                      headquarter:
                        type: boolean
                      address:
                        type: string
                      phone:
                        type: string
                      zipCode:
                        type: string
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD, effective date of the location
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD, end date of the location
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          code:
                            type: string
                          name:
                            type: string
                  organization:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      type:
                        type: string
                        enum:
                        - STRUCTURAL
                        - FUNCTIONAL
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      createdBy:
                        type: string
                      createdDate:
                        type: number
                      updatedBy:
                        type: string
                      updatedDate:
                        type: number
                      organizationHierarchy:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          color:
                            type: string
                          level:
                            type: integer
                      organizationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      organizationParent:
                        type: object
                        deprecated: true
                        description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          type:
                            type: string
                            enum:
                            - STRUCTURAL
                            - FUNCTIONAL
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
                          organizationHierarchy:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              color:
                                type: string
                              level:
                                type: integer
                          organizationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          organizationParent:
                            type: object
                            description: Deprecated. Always null.
                            deprecated: true
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                  position:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      assigned:
                        type: boolean
                      effectiveDate:
                        type: string
                      endDate:
                        type: string
                      maxEmployees:
                        type: integer
                      createdBy:
                        type: string
                      createdDate:
                        type: number
                      updatedBy:
                        type: string
                      updatedDate:
                        type: number
                  permanentDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  signDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  subLocation:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      location:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD or null when ongoing
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD or null when ongoing
                  operationalGroup:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
              example:
                id: 5540d712-508c-4831-84a6-8433933409d6
                employmentStatusNumber: PKWT-UPDATE-SUCCESS
                organization:
                  id: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
                  code: ORG-002
                  name: ICT
                  type: FUNCTIONAL
                  company:
                    id: 8adeb8b6-acab-11e6-80f5-76304dec7eb6
                    code: COMP-001
                    name: PT ABC
                  organizationHierarchy:
                    id: a896d062-aba9-11e6-80f5-76304dec7eb7
                    code: ORG-002
                    name: Departemen ICT
                    color: '#B7783A'
                    level: 2
                  organizationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: OG-001
                    name: Organization Group
                  organizationParent: {}
                jobTitle:
                  id: 3fb954ed-f00d-4f6f-b9ee-35f3ef817df9
                  code: JT010
                  name: Staff
                  effectiveDate: '2021-01-31'
                  endDate: '9999-12-31'
                  minJobLevel:
                    id: 4211c096-4c06-4cce-8bf3-c6060a46ac34
                    code: JL-01
                    name: Job Level 1
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                      code: JP-001
                      name: Job Position Name
                    level: 1
                  maxJobLevel:
                    id: 1211c096-4c06-4cce-8bf3-c6060a46ac34
                    code: JL-07
                    name: Job Level 7
                    effectiveDate: '2021-01-31'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                      code: JP-007
                      name: Job Position Name
                    level: 6
                jobLevel:
                  id: 944e67fc-3ac4-463d-9854-db536f4dad56
                  code: JL-020
                  name: Staff
                  effectiveDate: '2021-01-31'
                  endDate: '9999-12-31'
                  jobPosition:
                    id: 2a1666cc-d7e8-11e6-bf26-cec0c932ce01
                    code: JP-001
                    name: Job Position Name
                  level: 1
                location:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb9
                  code: LOC-001
                  name: Location Name
                  locationGroup:
                    id: 81d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: LG-001
                    name: Location Group Name
                  city:
                    id: 31d5f69a-a5a4-1111-80f5-76304dec7eb2
                    code: '31.70'
                    name: Jakarta
                    state:
                      id: 51d5f69a-a5a4-1111-80f5-76304dec7eb3
                      code: '35'
                      name: East Java
                      country:
                        id: 11d5f69a-a5a4-1111-80f5-76304dec7eb1
                        code: IDN
                        name: Indonesia
                  address: Menara Citicon, 17th Floor, Jl. Letjen. S. Parman Kav 72
                  phone: '+628123456789'
                  zipCode: '11410'
                  headquarter: true
                  latitude: -6.174465
                  longitude: 106.827153
                  effectiveDate: '2023-01-01'
                  endDate: '9999-12-31'
                costCenter:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb1
                  code: CC-001
                  name: Cost Center Name
                  description: Cost Center Description
                employmentType:
                  id: a896cc20-aba9-11e6-80f6-76304dec7eb7
                  name: Permanent
                  employmentGroupCode: EGC-001
                  permanent: false
                  monthDuration: 8
                  effectiveDate: '2021-01-31'
                  endDate: '9999-12-31'
                employmentStatusType:
                  id: f18f5618-ac6c-11e6-80f5-76304dec7eb3
                  name: Permanent
                  employmentStatusNumberType: EMPLOYMENT_STATUS_CHANGE_NUMBER
                  defaultData: false
                contractStart: '2021-01-31'
                contractEnd: '2023-01-31'
                signDate: '2021-01-31'
                effectiveDate: '2021-01-31'
                permanentDate: '2021-01-31'
                subLocation:
                  id: 81d5f69a-a5a4-1111-80f5-76304dec7db8
                  code: SL-001
                  name: Sub Location Name
                  location:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7ej2
                    code: LOC-005
                    name: Location Name
                    effectiveDate: '2022-01-01'
                    endDate: '9999-12-31'
                  effectiveDate: '2022-01-01'
                  endDate: '9999-12-31'
                operationalGroup:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb2
                  code: OG-001
                  name: Operational Group Name
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                contractStart:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                contractEnd:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                employmentStatusNumber:
                  type: string
                  maxLength: 255
                employmentStatusTypeId:
                  type: string
                employmentTypeId:
                  type: string
                jobLevelId:
                  type: string
                jobTitleId:
                  type: string
                locationId:
                  type: string
                organizationId:
                  type: string
                costCenterId:
                  type: string
                permanentDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                signDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                generateEmploymentStatusNumber:
                  type: boolean
                  default: false
                subLocationId:
                  type: string
                operationalGroupId:
                  type: string
              required:
              - effectiveDate
              - employmentStatusTypeId
              - employmentTypeId
              - jobLevelId
              - jobTitleId
              - locationId
              - organizationId
              - signDate
              - employmentStatusNumber
            example:
              contractEnd: '1970-01-01'
              contractStart: '1970-01-01'
              effectiveDate: '2021-04-01'
              employmentStatusNumber: PKWT-UPDATE-SUCCESS
              employmentStatusTypeId: f18f5618-ac6c-11e6-80f5-76304dec7eb3
              employmentTypeId: a896cc20-aba9-11e6-80f6-76304dec7eb7
              jobLevelId: 944e67fc-3ac4-463d-9854-db536f4dad56
              jobTitleId: 3fb954ed-f00d-4f6f-b9ee-35f3ef817df9
              locationId: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
              organizationId: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
              costCenterId: ''
              permanentDate: '2021-08-01'
              signDate: '2021-04-01'
              subLocationId: ''
              operationalGroupId: ''
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/employment-data\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '...'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.employment_data.update_many(...)"
  /core/v1/employees/{employeeId}/tax-memberships:
    get:
      tags:
      - tax-membership
      summary: Get Tax Membership
      description: Get the current tax membership information for a specific employee
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
        description: Unique identifier for the employee
      responses:
        '200':
          description: Tax membership returned successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier for the tax membership
                  foreignTaxObject:
                    type: boolean
                    description: Whether this is a foreign tax object
                  kppId:
                    type: string
                    description: Tax office (KPP) identifier
                  linkToPayroll:
                    type: boolean
                    description: Whether this tax membership is linked to payroll
                  membershipEndPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax membership ends
                  membershipStartPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax membership starts
                  effectiveEndPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax effectiveness ends
                  effectiveStartPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax becomes effective
                  method:
                    type: string
                    enum:
                    - GROSS
                    - NETTO
                    - GROSS_UP
                    - MIX
                    - MIX_GROSS_NETTO
                    - MIX_NETTO_GROSS
                    - MIX_GROSS_UP_GROSS
                    description: PPh21 calculation method
                  moreThanOneEmployer:
                    type: boolean
                    description: Whether employee has more than one employer
                  npwpAddress:
                    type: string
                    description: Address registered with NPWP
                  npwpNumber:
                    type: string
                    pattern: ^$|^\d+$
                    description: NPWP (Tax ID) number - can be empty or contain only digits
                  tin:
                    type: string
                    description: Tax Identification Number
                  previousNetIncome:
                    type: number
                    format: double
                    minimum: 0
                    description: Previous net income amount
                  previousPaidPph:
                    type: number
                    format: double
                    minimum: 0
                    description: Previous paid PPh amount
                  ptkpCategoryId:
                    type: string
                    description: PTKP (Personal Tax Free Income) category identifier
                  taxObject:
                    type: string
                    enum:
                    - PERMANENT
                    - TEMPORARY
                    - MULTI_LEVEL_DISTRIBUTOR
                    - INSURANCE_AGENT
                    - MERCHANT_GOODS
                    - EXPERT_CONTINUOUS
                    - EXPERT_NON_CONTINUOUS
                    - CONTINUOUS
                    - NON_CONTINUOUS
                    - COMMISSIONER
                    - FORMER_EMPLOYEE
                    - EVENT_PARTICIPANT
                    - EXPATRIATE
                    - EXPERT
                    - MEETING_PARTICIPANT
                    - COMMITTEE_PARTICIPANT
                    - EDUCATION_PARTICIPANT
                    - OTHER_PARTICIPANT
                    - ADVISOR_LECTURER
                    - AUTHOR_RESEARCHER
                    - SERVICE_PROVIDER
                    - ADVERTISING_AGENT
                    - PROJECT_MANAGER
                    - INTERMEDIARY
                    - ARTIST
                    - ATHLETE
                    - TEMPORARY_MONTHLY
                    - COMPETITION_PARTICIPANT
                    description: Type of tax object for the employee
                  useRecommendedPeriod:
                    type: boolean
                  taxDependents:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Name of the tax dependent
                        ptkpRelationType:
                          type: string
                          enum:
                          - SPOUSE
                          - CHILD
                          - PARENT
                          description: Relationship type for PTKP calculation
                        dateOfBirth:
                          type: string
                          format: date
                          description: Date of birth of the tax dependent
                        job:
                          type: string
                          description: Job or occupation of the tax dependent
                    description: List of tax dependents for PTKP calculation
              example:
                foreignTaxObject: false
                id: string
                kppId: string
                linkToPayroll: true
                membershipEndPeriod:
                  month: 1
                  year: 1970
                membershipStartPeriod:
                  month: 1
                  year: 1970
                effectiveStartPeriod:
                  month: 1
                  year: 1970
                effectiveEndPeriod:
                  month: 1
                  year: 1970
                method: GROSS
                moreThanOneEmployer: true
                npwpAddress: Jakarta Selatan, DKI Jakarta
                npwpNumber: '123456789012345'
                tin: TIN123456
                idTku: TKU1234567890
                previousNetIncome: 0
                previousPaidPph: 0
                ptkpCategoryId: string
                taxObject: PERMANENT
                taxDependents: []
        '400':
          description: Bad Request - Invalid request parameters
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: BAD_REQUEST
                message: Invalid employee ID format
                status: 400
                timestamp: '2025-08-01T08:37:27.801052926'
        '404':
          description: Employee not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: NOT_FOUND
                message: Employee with ID 'emp-12345' not found
                status: 404
                timestamp: '2025-08-01T08:37:27.801052926'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/tax-memberships\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.tax_memberships.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\"\n)"
    put:
      tags:
      - tax-membership
      summary: Update Tax Membership
      description: Update the tax membership information for a specific employee
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
        description: Unique identifier for the employee
      responses:
        '200':
          description: Tax membership updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier for the tax membership
                  foreignTaxObject:
                    type: boolean
                    description: Whether this is a foreign tax object
                  kppId:
                    type: string
                    description: Tax office (KPP) identifier
                  linkToPayroll:
                    type: boolean
                    description: Whether this tax membership is linked to payroll
                  membershipEndPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax membership ends
                  membershipStartPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax membership starts
                  effectiveEndPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax effectiveness ends
                  effectiveStartPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax becomes effective
                  method:
                    type: string
                    enum:
                    - GROSS
                    - NETTO
                    - GROSS_UP
                    - MIX
                    - MIX_GROSS_NETTO
                    - MIX_NETTO_GROSS
                    - MIX_GROSS_UP_GROSS
                    description: PPh21 calculation method
                  moreThanOneEmployer:
                    type: boolean
                    description: Whether employee has more than one employer
                  npwpAddress:
                    type: string
                    description: Address registered with NPWP
                  npwpNumber:
                    type: string
                    pattern: ^$|^\d+$
                    description: NPWP (Tax ID) number - can be empty or contain only digits
                  tin:
                    type: string
                    description: Tax Identification Number
                  previousNetIncome:
                    type: number
                    format: double
                    minimum: 0
                    description: Previous net income amount
                  previousPaidPph:
                    type: number
                    format: double
                    minimum: 0
                    description: Previous paid PPh amount
                  ptkpCategoryId:
                    type: string
                    description: PTKP (Personal Tax Free Income) category identifier
                  taxObject:
                    type: string
                    enum:
                    - PERMANENT
                    - TEMPORARY
                    - MULTI_LEVEL_DISTRIBUTOR
                    - INSURANCE_AGENT
                    - MERCHANT_GOODS
                    - EXPERT_CONTINUOUS
                    - EXPERT_NON_CONTINUOUS
                    - CONTINUOUS
                    - NON_CONTINUOUS
                    - COMMISSIONER
                    - FORMER_EMPLOYEE
                    - EVENT_PARTICIPANT
                    - EXPATRIATE
                    - EXPERT
                    - MEETING_PARTICIPANT
                    - COMMITTEE_PARTICIPANT
                    - EDUCATION_PARTICIPANT
                    - OTHER_PARTICIPANT
                    - ADVISOR_LECTURER
                    - AUTHOR_RESEARCHER
                    - SERVICE_PROVIDER
                    - ADVERTISING_AGENT
                    - PROJECT_MANAGER
                    - INTERMEDIARY
                    - ARTIST
                    - ATHLETE
                    - TEMPORARY_MONTHLY
                    - COMPETITION_PARTICIPANT
                    description: Type of tax object for the employee
                  useRecommendedPeriod:
                    type: boolean
                  taxDependents:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Name of the tax dependent
                        ptkpRelationType:
                          type: string
                          enum:
                          - SPOUSE
                          - CHILD
                          - PARENT
                          description: Relationship type for PTKP calculation
                        dateOfBirth:
                          type: string
                          format: date
                          description: Date of birth of the tax dependent
                        job:
                          type: string
                          description: Job or occupation of the tax dependent
                    description: List of tax dependents for PTKP calculation
              example:
                foreignTaxObject: false
                id: tm-12345
                kppId: kpp-jakarta-selatan
                linkToPayroll: true
                membershipEndPeriod:
                  month: 12
                  year: 2024
                membershipStartPeriod:
                  month: 1
                  year: 2024
                effectiveStartPeriod:
                  month: 1
                  year: 2024
                effectiveEndPeriod:
                  month: 12
                  year: 2024
                method: GROSS
                moreThanOneEmployer: false
                npwpAddress: Jakarta Selatan, DKI Jakarta
                npwpNumber: '123456789012345'
                tin: TIN123456
                idTku: TKU1234567890
                previousNetIncome: 120000000
                previousPaidPph: 12000000
                ptkpCategoryId: ptkp-tk-1
                taxObject: PERMANENT
                taxDependents:
                - id: dep-1
                  name: Jane Doe
                  ptkpRelationType: SPOUSE
                  dateOfBirth: '1990-05-15'
                  job: Teacher
        '400':
          description: Bad Request - Invalid request data
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: BAD_REQUEST
                message: Invalid tax membership data
                status: 400
                timestamp: '2025-08-01T08:37:27.801052926'
        '404':
          description: Employee not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: NOT_FOUND
                message: Employee with ID 'emp-12345' not found
                status: 404
                timestamp: '2025-08-01T08:37:27.801052926'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the tax membership
                foreignTaxObject:
                  type: boolean
                  description: Whether this is a foreign tax object
                kppId:
                  type: string
                  description: Tax office (KPP) identifier
                linkToPayroll:
                  type: boolean
                  description: Whether this tax membership is linked to payroll
                membershipEndPeriod:
                  allOf:
                  - type: object
                    properties:
                      month:
                        type: integer
                        minimum: 1
                        maximum: 12
                        description: Month of membership start period
                      year:
                        type: integer
                        minimum: 1970
                        description: Year of membership start period
                  description: Period when tax membership ends
                membershipStartPeriod:
                  allOf:
                  - type: object
                    properties:
                      month:
                        type: integer
                        minimum: 1
                        maximum: 12
                        description: Month of membership start period
                      year:
                        type: integer
                        minimum: 1970
                        description: Year of membership start period
                  description: Period when tax membership starts
                effectiveEndPeriod:
                  allOf:
                  - type: object
                    properties:
                      month:
                        type: integer
                        minimum: 1
                        maximum: 12
                        description: Month of membership start period
                      year:
                        type: integer
                        minimum: 1970
                        description: Year of membership start period
                  description: Period when tax effectiveness ends
                effectiveStartPeriod:
                  allOf:
                  - type: object
                    properties:
                      month:
                        type: integer
                        minimum: 1
                        maximum: 12
                        description: Month of membership start period
                      year:
                        type: integer
                        minimum: 1970
                        description: Year of membership start period
                  description: Period when tax becomes effective
                method:
                  type: string
                  enum:
                  - GROSS
                  - NETTO
                  - GROSS_UP
                  - MIX
                  - MIX_GROSS_NETTO
                  - MIX_NETTO_GROSS
                  - MIX_GROSS_UP_GROSS
                  description: PPh21 calculation method
                moreThanOneEmployer:
                  type: boolean
                  description: Whether employee has more than one employer
                npwpAddress:
                  type: string
                  description: Address registered with NPWP
                npwpNumber:
                  type: string
                  pattern: ^$|^\d+$
                  description: NPWP (Tax ID) number - can be empty or contain only digits
                tin:
                  type: string
                  description: Tax Identification Number
                previousNetIncome:
                  type: number
                  format: double
                  minimum: 0
                  description: Previous net income amount
                previousPaidPph:
                  type: number
                  format: double
                  minimum: 0
                  description: Previous paid PPh amount
                ptkpCategoryId:
                  type: string
                  description: PTKP (Personal Tax Free Income) category identifier
                taxObject:
                  type: string
                  enum:
                  - PERMANENT
                  - TEMPORARY
                  - MULTI_LEVEL_DISTRIBUTOR
                  - INSURANCE_AGENT
                  - MERCHANT_GOODS
                  - EXPERT_CONTINUOUS
                  - EXPERT_NON_CONTINUOUS
                  - CONTINUOUS
                  - NON_CONTINUOUS
                  - COMMISSIONER
                  - FORMER_EMPLOYEE
                  - EVENT_PARTICIPANT
                  - EXPATRIATE
                  - EXPERT
                  - MEETING_PARTICIPANT
                  - COMMITTEE_PARTICIPANT
                  - EDUCATION_PARTICIPANT
                  - OTHER_PARTICIPANT
                  - ADVISOR_LECTURER
                  - AUTHOR_RESEARCHER
                  - SERVICE_PROVIDER
                  - ADVERTISING_AGENT
                  - PROJECT_MANAGER
                  - INTERMEDIARY
                  - ARTIST
                  - ATHLETE
                  - TEMPORARY_MONTHLY
                  - COMPETITION_PARTICIPANT
                  description: Type of tax object for the employee
                useRecommendedPeriod:
                  type: boolean
                taxDependents:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                        description: Name of the tax dependent
                      ptkpRelationType:
                        type: string
                        enum:
                        - SPOUSE
                        - CHILD
                        - PARENT
                        description: Relationship type for PTKP calculation
                      dateOfBirth:
                        type: string
                        format: date
                        description: Date of birth of the tax dependent
                      job:
                        type: string
                        description: Job or occupation of the tax dependent
                  description: List of tax dependents for PTKP calculation
            example:
              id: string
              kppId: string
              linkToPayroll: true
              membershipEndPeriod:
                month: 1
                year: 1970
              membershipStartPeriod:
                month: 1
                year: 1970
              method: GROSS
              moreThanOneEmployer: true
              npwpAddress: Jakarta Selatan, DKI Jakarta
              npwpNumber: '123456789012345'
              tin: TIN123456
              idTku: TKU1234567890
              previousNetIncome: 0
              previousPaidPph: 0
              ptkpCategoryId: string
              taxObject: PERMANENT
              foreignTaxObject: true
              useRecommendedPeriod: true
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/tax-memberships\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '...'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.tax_memberships.update_many(...)"
  /core/v1/employees/{employeeId}/tax-membership-histories:
    get:
      tags:
      - tax-membership-history
      summary: Get Tax Membership History
      description: Get tax membership history for a specific employee for a given year and month
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
        description: Unique identifier for the employee
      - in: query
        name: year
        schema:
          type: integer
          minimum: 1970
        required: true
        example: 2024
        description: Year for which to get tax membership history
      - in: query
        name: month
        schema:
          type: integer
          example: 1
          minimum: 1
          maximum: 12
          default: 12
        required: false
        example: 12
        description: Month for which to get tax membership history (defaults to December)
      responses:
        '200':
          description: Tax membership history returned successfully
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier for the tax membership
                    foreignTaxObject:
                      type: boolean
                      description: Whether this is a foreign tax object
                    kppId:
                      type: string
                      description: Tax office (KPP) identifier
                    linkToPayroll:
                      type: boolean
                      description: Whether this tax membership is linked to payroll
                    membershipEndPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax membership ends
                    membershipStartPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax membership starts
                    effectiveEndPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax effectiveness ends
                    effectiveStartPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax becomes effective
                    method:
                      type: string
                      enum:
                      - GROSS
                      - NETTO
                      - GROSS_UP
                      - MIX
                      - MIX_GROSS_NETTO
                      - MIX_NETTO_GROSS
                      - MIX_GROSS_UP_GROSS
                      description: PPh21 calculation method
                    moreThanOneEmployer:
                      type: boolean
                      description: Whether employee has more than one employer
                    npwpAddress:
                      type: string
                      description: Address registered with NPWP
                    npwpNumber:
                      type: string
                      pattern: ^$|^\d+$
                      description: NPWP (Tax ID) number - can be empty or contain only digits
                    tin:
                      type: string
                      description: Tax Identification Number
                    previousNetIncome:
                      type: number
                      format: double
                      minimum: 0
                      description: Previous net income amount
                    previousPaidPph:
                      type: number
                      format: double
                      minimum: 0
                      description: Previous paid PPh amount
                    ptkpCategoryId:
                      type: string
                      description: PTKP (Personal Tax Free Income) category identifier
                    taxObject:
                      type: string
                      enum:
                      - PERMANENT
                      - TEMPORARY
                      - MULTI_LEVEL_DISTRIBUTOR
                      - INSURANCE_AGENT
                      - MERCHANT_GOODS
                      - EXPERT_CONTINUOUS
                      - EXPERT_NON_CONTINUOUS
                      - CONTINUOUS
                      - NON_CONTINUOUS
                      - COMMISSIONER
                      - FORMER_EMPLOYEE
                      - EVENT_PARTICIPANT
                      - EXPATRIATE
                      - EXPERT
                      - MEETING_PARTICIPANT
                      - COMMITTEE_PARTICIPANT
                      - EDUCATION_PARTICIPANT
                      - OTHER_PARTICIPANT
                      - ADVISOR_LECTURER
                      - AUTHOR_RESEARCHER
                      - SERVICE_PROVIDER
                      - ADVERTISING_AGENT
                      - PROJECT_MANAGER
                      - INTERMEDIARY
                      - ARTIST
                      - ATHLETE
                      - TEMPORARY_MONTHLY
                      - COMPETITION_PARTICIPANT
                      description: Type of tax object for the employee
                    useRecommendedPeriod:
                      type: boolean
                    taxDependents:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                            description: Name of the tax dependent
                          ptkpRelationType:
                            type: string
                            enum:
                            - SPOUSE
                            - CHILD
                            - PARENT
                            description: Relationship type for PTKP calculation
                          dateOfBirth:
                            type: string
                            format: date
                            description: Date of birth of the tax dependent
                          job:
                            type: string
                            description: Job or occupation of the tax dependent
                      description: List of tax dependents for PTKP calculation
                - type: object
                  properties:
                    employee:
                      type: object
                      properties:
                        id:
                          type: string
                        identificationNumber:
                          type: string
                        name:
                          type: string
              example:
                foreignTaxObject: false
                id: string
                kppId: string
                linkToPayroll: true
                membershipEndPeriod:
                  month: 1
                  year: 1970
                membershipStartPeriod:
                  month: 1
                  year: 1970
                effectiveStartPeriod:
                  month: 1
                  year: 1970
                effectiveEndPeriod:
                  month: 1
                  year: 1970
                method: GROSS
                moreThanOneEmployer: true
                npwpAddress: string
                npwpNumber: '1234567890'
                tin: string
                previousNetIncome: 0
                previousPaidPph: 0
                ptkpCategoryId: string
                taxObject: PERMANENT
                useRecommendedPeriod: true
                taxDependents: []
                employee:
                  id: string
                  identificationNumber: string
                  name: string
        '400':
          description: Bad Request - Invalid request parameters
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: BAD_REQUEST
                message: Invalid year or month parameter
                status: 400
                timestamp: '2025-08-01T08:37:27.801052926'
        '404':
          description: Employee or tax membership history not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: NOT_FOUND
                message: No tax membership history found for employee 'emp-12345' in period 2024/12
                status: 404
                timestamp: '2025-08-01T08:37:27.801052926'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/tax-membership-histories?year=2024&month=12\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.tax_membership_histories.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\", year=2024, month=12\n)"
  /core/v1/employees/{employeeId}/tax-memberships/tax-subjects:
    put:
      tags:
      - tax-membership
      summary: Update Tax Membership Tax Subject
      description: Update tax subject information for an employee's tax membership
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
        description: Unique identifier for the employee
      responses:
        '200':
          description: Tax membership tax subject updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier for the tax membership
                  foreignTaxObject:
                    type: boolean
                    description: Whether this is a foreign tax object
                  kppId:
                    type: string
                    description: Tax office (KPP) identifier
                  linkToPayroll:
                    type: boolean
                    description: Whether this tax membership is linked to payroll
                  membershipEndPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax membership ends
                  membershipStartPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax membership starts
                  effectiveEndPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax effectiveness ends
                  effectiveStartPeriod:
                    allOf:
                    - type: object
                      properties:
                        month:
                          type: integer
                          minimum: 1
                          maximum: 12
                          description: Month of membership start period
                        year:
                          type: integer
                          minimum: 1970
                          description: Year of membership start period
                    description: Period when tax becomes effective
                  method:
                    type: string
                    enum:
                    - GROSS
                    - NETTO
                    - GROSS_UP
                    - MIX
                    - MIX_GROSS_NETTO
                    - MIX_NETTO_GROSS
                    - MIX_GROSS_UP_GROSS
                    description: PPh21 calculation method
                  moreThanOneEmployer:
                    type: boolean
                    description: Whether employee has more than one employer
                  npwpAddress:
                    type: string
                    description: Address registered with NPWP
                  npwpNumber:
                    type: string
                    pattern: ^$|^\d+$
                    description: NPWP (Tax ID) number - can be empty or contain only digits
                  tin:
                    type: string
                    description: Tax Identification Number
                  previousNetIncome:
                    type: number
                    format: double
                    minimum: 0
                    description: Previous net income amount
                  previousPaidPph:
                    type: number
                    format: double
                    minimum: 0
                    description: Previous paid PPh amount
                  ptkpCategoryId:
                    type: string
                    description: PTKP (Personal Tax Free Income) category identifier
                  taxObject:
                    type: string
                    enum:
                    - PERMANENT
                    - TEMPORARY
                    - MULTI_LEVEL_DISTRIBUTOR
                    - INSURANCE_AGENT
                    - MERCHANT_GOODS
                    - EXPERT_CONTINUOUS
                    - EXPERT_NON_CONTINUOUS
                    - CONTINUOUS
                    - NON_CONTINUOUS
                    - COMMISSIONER
                    - FORMER_EMPLOYEE
                    - EVENT_PARTICIPANT
                    - EXPATRIATE
                    - EXPERT
                    - MEETING_PARTICIPANT
                    - COMMITTEE_PARTICIPANT
                    - EDUCATION_PARTICIPANT
                    - OTHER_PARTICIPANT
                    - ADVISOR_LECTURER
                    - AUTHOR_RESEARCHER
                    - SERVICE_PROVIDER
                    - ADVERTISING_AGENT
                    - PROJECT_MANAGER
                    - INTERMEDIARY
                    - ARTIST
                    - ATHLETE
                    - TEMPORARY_MONTHLY
                    - COMPETITION_PARTICIPANT
                    description: Type of tax object for the employee
                  useRecommendedPeriod:
                    type: boolean
                  taxDependents:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Name of the tax dependent
                        ptkpRelationType:
                          type: string
                          enum:
                          - SPOUSE
                          - CHILD
                          - PARENT
                          description: Relationship type for PTKP calculation
                        dateOfBirth:
                          type: string
                          format: date
                          description: Date of birth of the tax dependent
                        job:
                          type: string
                          description: Job or occupation of the tax dependent
                    description: List of tax dependents for PTKP calculation
              example:
                id: tm-12345
                taxObject: PERMANENT
                membershipStartPeriod:
                  month: 1
                  year: 2024
                membershipEndPeriod:
                  month: 12
                  year: 2024
                effectiveStartPeriod:
                  month: 1
                  year: 2024
                effectiveEndPeriod:
                  month: 12
                  year: 2024
                method: GROSS
                npwpNumber: '123456789012345'
                npwpAddress: Jakarta Selatan, DKI Jakarta
                tin: TIN123456
                linkToPayroll: true
                moreThanOneEmployer: false
                foreignTaxObject: false
                previousNetIncome: 120000000
                previousPaidPph: 12000000
                kppId: kpp-jakarta-selatan
                ptkpCategoryId: ptkp-tk-0
                taxDependents:
                - id: dep-1
                  name: Jane Doe
                  ptkpRelationType: SPOUSE
                  dateOfBirth: '1990-05-15'
                  job: Teacher
        '400':
          description: Bad Request - Invalid input data
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: BAD_REQUEST
                message: Invalid tax subject data
                status: 400
                timestamp: '2025-08-01T08:37:27.801052926'
        '404':
          description: Employee not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: NOT_FOUND
                message: Employee with ID 'emp-12345' not found
                status: 404
                timestamp: '2025-08-01T08:37:27.801052926'
      requestBody:
        required: true
        description: Tax subject information to update
        content:
          application/json:
            schema:
              type: object
              properties:
                npwpAddress:
                  type: string
                  description: Address registered with NPWP
                npwpNumber:
                  type: string
                  pattern: ^$|^\d+$
                  description: NPWP (Tax ID) number - can be empty or contain only digits
                idTku:
                  type: string
                  description: TKU (Tax Knowledge Unit) identifier
                tin:
                  type: string
                  description: Tax Identification Number
                kppId:
                  type: string
                  description: Tax office (KPP) identifier
                ptkpCategoryId:
                  type: string
                  description: PTKP (Personal Tax Free Income) category identifier
                taxDependents:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: Unique identifier for the tax dependent
                      name:
                        type: string
                        maxLength: 100
                        description: Name of the tax dependent
                      ptkpRelationType:
                        type: string
                        enum:
                        - CHILD
                        - SPOUSE
                        - PARENT
                        description: Relationship type for PTKP calculation
                      dateOfBirth:
                        type: string
                        format: date
                        description: Date of birth of the tax dependent (YYYY-MM-DD).
                      job:
                        type: string
                        maxLength: 100
                        description: Job or occupation of the tax dependent
                    required:
                    - name
                    - ptkpRelationType
                    - dateOfBirth
                  description: List of tax dependents for PTKP calculation
              required:
              - npwpAddress
              additionalProperties: false
            example:
              npwpAddress: Jakarta Selatan, DKI Jakarta
              npwpNumber: '123456789012345'
              idTku: TKU123456
              tin: TIN123456
              kppId: kpp-jakarta-selatan
              ptkpCategoryId: ptkp-tk-0
              taxDependents:
              - id: dep-1
                name: Jane Doe
                ptkpRelationType: SPOUSE
                dateOfBirth: '1990-05-15'
                job: Teacher
              - id: dep-2
                name: John Doe Jr
                ptkpRelationType: CHILD
                dateOfBirth: '2015-03-20'
                job: Student
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/tax-memberships/tax-subjects\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"npwpAddress\": \"Jakarta Selatan, DKI Jakarta\",\n  \"npwpNumber\": \"123456789012345\",\n  \"idTku\": \"TKU123456\",\n  \"tin\": \"TIN123456\",\n  \"kppId\": \"kpp-jakarta-selatan\",\n  \"ptkpCategoryId\": \"ptkp-tk-0\",\n  \"taxDependents\": [\n    {\n      \"id\": \"dep-1\",\n      \"name\": \"Jane Doe\",\n      \"ptkpRelationType\": \"SPOUSE\",\n      \"dateOfBirth\": \"1990-05-15\",\n      \"job\": \"Teacher\"\n    },\n    {\n      \"id\": \"dep-2\",\n      \"name\": \"John Doe Jr\",\n      \"ptkpRelationType\": \"CHILD\",\n      \"dateOfBirth\": \"2015-03-20\",\n      \"job\": \"Student\"\n    }\n  ]\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import TaxMembershipTaxSubjectRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.tax_memberships.tax_subjects.update_many(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    tax_membership_tax_subject_request=TaxMembershipTaxSubjectRequest(\n        npwp_address=\"Jakarta Selatan, DKI Jakarta\",\n        npwp_number=\"123456789012345\",\n        id_tku=\"TKU123456\",\n        tin=\"TIN123456\",\n        kpp_id=\"kpp-jakarta-selatan\",\n        ptkp_category_id=\"ptkp-tk-0\",\n        tax_dependents=[\n            {\n                \"id\": \"dep-1\",\n                \"name\": \"Jane Doe\",\n                \"ptkpRelationType\": \"SPOUSE\",\n                \"dateOfBirth\": \"1990-05-15\",\n                \"job\": \"Teacher\",\n            },\n            {\n                \"id\": \"dep-2\",\n                \"name\": \"John Doe Jr\",\n                \"ptkpRelationType\": \"CHILD\",\n                \"dateOfBirth\": \"2015-03-20\",\n                \"job\": \"Student\",\n            },\n        ],\n    ),\n)"
  /core/v1/employees/{employeeId}/termination-entries:
    get:
      tags:
      - termination
      summary: Get Termination Entry
      description: Return the termination entries.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  terminationCode:
                    type: string
                  effectiveDate:
                    type: string
                  payrollMethod:
                    type: string
                  terminationReason:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      name:
                        type: string
                      terminationPph21Reason:
                        type: string
                      terminationBpjsManpowerReason:
                        type: string
                      terminationReasonCategory:
                        type: string
                      severance:
                        type: boolean
                  bpjsManpowerEndDate:
                    type: string
                  bpjsHealthcareEndDate:
                    type: string
                  pph21MembershipEndDate:
                    type: string
                  requestDate:
                    type: string
                  servicePeriodBy:
                    type: string
                  rehire:
                    type: boolean
                  approvalStatus:
                    type: string
                    enum:
                    - APPROVED
                    - REJECTED
                    - WAITING_FOR_APPROVAL
              example:
                id: 78b10148-8624-488e-a13d-23fb853c1af3
                terminationCode: 001/TRM/09/2019
                effectiveDate: '2019-09-30'
                payrollMethod: PROPORTIONAL
                terminationReason:
                  id: 2c685762-c0ef-11e6-a4a6-cec0c932ce01
                  name: Termination Reason 1
                  terminationPph21Reason: Pensiun
                  terminationBpjsManpowerReason: Mengundurkan diri
                  terminationReasonCategory: Force Majeur
                  severance: false
                bpjsManpowerEndDate: '2019-09-30'
                bpjsHealthcareEndDate: '2019-09-30'
                pph21MembershipEndDate: '2019-09-30'
                requestDate: '2019-09-29'
                servicePeriodBy: START_DATE
                rehire: true
                approvalStatus: APPROVED
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/termination-entries\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.termination_entries.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\"\n)"
    post:
      tags:
      - termination
      summary: Create Termination Entry
      description: Create a termination entry.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  terminationCode:
                    type: string
                  effectiveDate:
                    type: string
                  payrollMethod:
                    type: string
                  terminationReason:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      name:
                        type: string
                      terminationPph21Reason:
                        type: string
                      terminationBpjsManpowerReason:
                        type: string
                      terminationReasonCategory:
                        type: string
                      severance:
                        type: boolean
                  bpjsManpowerEndDate:
                    type: string
                  bpjsHealthcareEndDate:
                    type: string
                  pph21MembershipEndDate:
                    type: string
                  requestDate:
                    type: string
                  servicePeriodBy:
                    type: string
                  rehire:
                    type: boolean
                  approvalStatus:
                    type: string
                    enum:
                    - APPROVED
                    - REJECTED
                    - WAITING_FOR_APPROVAL
              example:
                id: 78b10148-8624-488e-a13d-23fb853c1af3
                terminationCode: 001/TRM/09/2019
                effectiveDate: '2019-09-30'
                payrollMethod: PROPORTIONAL
                terminationReason:
                  id: 2c685762-c0ef-11e6-a4a6-cec0c932ce01
                  name: Termination Reason 1
                  terminationPph21Reason: Pensiun
                  terminationBpjsManpowerReason: Mengundurkan diri
                  terminationReasonCategory: Force Majeur
                  severance: false
                bpjsManpowerEndDate: '2019-09-30'
                bpjsHealthcareEndDate: '2019-09-30'
                pph21MembershipEndDate: '2019-09-30'
                requestDate: '2019-09-29'
                servicePeriodBy: START_DATE
                rehire: true
                approvalStatus: APPROVED
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                terminationCode:
                  type: string
                payrollMethod:
                  type: string
                  enum:
                  - FULL
                  - PROPORTIONAL
                terminationReasonId:
                  type: string
                requestDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                bpjsManpowerEndDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                servicePeriodBy:
                  type: string
                  enum:
                  - JOIN_DATE
                  - START_DATE
                  - PERMANENT_DATE
                pph21MembershipEndDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                bpjsHealthcareEndDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                rehire:
                  type: boolean
                  deprecated: true
                  description: Deprecated field that no longer has any effect on terminated employee pages
              required:
              - payrollMethod
              - terminationReasonId
              - requestDate
              - bpjsManpowerEndDate
              - pph21MembershipEndDate
              - bpjsHealthcareEndDate
              - effectiveDate
              - rehire
            example:
              terminationCode: 001/TRM/09/2019
              payrollMethod: PROPORTIONAL
              terminationReasonId: 2c685762-c0ef-11e6-a4a6-cec0c932ce01
              requestDate: '2019-09-29'
              bpjsManpowerEndDate: '2019-09-30'
              servicePeriodBy: START_DATE
              pph21MembershipEndDate: '2019-09-30'
              bpjsHealthcareEndDate: '2019-09-30'
              effectiveDate: '2019-09-30'
              rehire: true
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/termination-entries\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"terminationCode\": \"001/TRM/09/2019\",\n  \"payrollMethod\": \"PROPORTIONAL\",\n  \"terminationReasonId\": \"2c685762-c0ef-11e6-a4a6-cec0c932ce01\",\n  \"requestDate\": \"2019-09-29\",\n  \"bpjsManpowerEndDate\": \"2019-09-30\",\n  \"servicePeriodBy\": \"START_DATE\",\n  \"pph21MembershipEndDate\": \"2019-09-30\",\n  \"bpjsHealthcareEndDate\": \"2019-09-30\",\n  \"effectiveDate\": \"2019-09-30\",\n  \"rehire\": true\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import TerminationEntryRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.termination_entries.create(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    termination_entry_request=TerminationEntryRequest(\n        termination_code=\"001/TRM/09/2019\",\n        payroll_method=\"PROPORTIONAL\",\n        termination_reason_id=\"2c685762-c0ef-11e6-a4a6-cec0c932ce01\",\n        request_date=\"2019-09-29\",\n        bpjs_manpower_end_date=\"2019-09-30\",\n        service_period_by=\"START_DATE\",\n        pph21_membership_end_date=\"2019-09-30\",\n        bpjs_healthcare_end_date=\"2019-09-30\",\n        effective_date=\"2019-09-30\",\n        rehire=True,\n    ),\n)"
    delete:
      tags:
      - termination
      summary: Undo Termination Entry
      description: Undo the termination entry.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/termination-entries\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.termination_entries.delete_many(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\"\n)"
  /core/v1/employees/{employeeId}/manager:
    put:
      tags:
      - employee
      summary: Update Manager
      description: Update the manager.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  identificationNumber:
                    type: string
                  name:
                    type: string
                  joinDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  startDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  active:
                    type: boolean
                  pointOfHire:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      locationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      latitude:
                        type: number
                      longitude:
                        type: number
                      address:
                        type: string
                      phone:
                        type: string
                      zipCode:
                        type: string
                      headquarter:
                        type: boolean
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                  photo:
                    type: object
                    properties:
                      url:
                        type: string
                  manager:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      joinDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      startDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      active:
                        type: boolean
                      pointOfHire:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          locationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          city:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          latitude:
                            type: number
                          longitude:
                            type: number
                          address:
                            type: string
                          phone:
                            type: string
                          zipCode:
                            type: string
                          headquarter:
                            type: boolean
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                      photo:
                        type: object
                        properties:
                          url:
                            type: string
              example:
                id: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                identificationNumber: 123456789abc
                name: John Doe
                joinDate: '2023-01-01'
                startDate: '2023-01-01'
                active: true
                pointOfHire:
                  id: a31aa166-70be-4303-81e4-5ada93b5213a
                  code: JOG
                  name: Yogyakarta
                photo:
                  url: https://example.com/photo.jpg
                manager:
                  id: 0332e2b1-ba56-4a33-9d8a-6e66a4acde21
                  identificationNumber: 987654321xyz
                  name: Jane Smith
                  joinDate: '2022-01-01'
                  startDate: '2022-01-01'
                  active: true
                  photo:
                    url: https://example.com/photo.jpg
                  manager:
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                managerId:
                  type: string
              required:
              - managerId
            example:
              managerId: string
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/manager\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"managerId\": \"string\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import ManagerRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.manager.update_many(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    manager_request=ManagerRequest(manager_id=\"string\"),\n)"
  /core/v1/employees/{id}/hiring-data:
    get:
      tags:
      - employee
      summary: Get Employee Hiring Data
      description: Return the employee hiring data.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  identificationNumber:
                    type: string
                  joinDate:
                    type: string
                    format: date
                  name:
                    type: string
                  startDate:
                    type: string
                    format: date
              example:
                identificationNumber: A0001
                joinDate: '2021-04-01'
                name: Alice X
                startDate: '2021-04-01'
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/f47ac10b-58cc-4372-a567-0e02b2c3d479/hiring-data\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.hiring_data.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
    put:
      tags:
      - employee
      summary: Update Employee Hiring Data
      description: Update the employee hiring data.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  identificationNumber:
                    type: string
                  joinDate:
                    type: string
                    format: date
                  name:
                    type: string
                  startDate:
                    type: string
                    format: date
                  pointOfHire:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      locationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      latitude:
                        type: number
                      longitude:
                        type: number
                      address:
                        type: string
                      phone:
                        type: string
                      zipCode:
                        type: string
                      headquarter:
                        type: boolean
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                  photo:
                    type: object
                    properties:
                      url:
                        type: string
                  manager:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      joinDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      startDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      active:
                        type: boolean
                      pointOfHire:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          locationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          city:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          latitude:
                            type: number
                          longitude:
                            type: number
                          address:
                            type: string
                          phone:
                            type: string
                          zipCode:
                            type: string
                          headquarter:
                            type: boolean
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                      photo:
                        type: object
                        properties:
                          url:
                            type: string
              example:
                id: string
                identificationNumber: string
                name: string
                joinDate: '2021-04-01'
                startDate: '2021-04-01'
                pointOfHire:
                  id: string
                  code: string
                  name: string
                  address: string
                  phone: string
                  zipCode: string
                  locationGroup:
                    id: string
                    code: string
                    name: string
                  city:
                    id: string
                    code: string
                    name: string
                    state:
                      id: string
                      code: string
                      name: string
                      country:
                        id: string
                        code: string
                        name: string
                photo:
                  url: string
                manager:
                  id: string
                  identificationNumber: string
                  name: string
                  joinDate: '2021-04-01'
                  startDate: '2021-04-01'
                  pointOfHire:
                    id: string
                    code: string
                    name: string
                    address: string
                    phone: string
                    zipCode: string
                    locationGroup:
                      id: string
                      code: string
                      name: string
                    city:
                      id: string
                      code: string
                      name: string
                      state:
                        id: string
                        code: string
                        name: string
                        country:
                          id: string
                          code: string
                          name: string
                  photo:
                    url: string
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                identificationNumber:
                  type: string
                joinDate:
                  type: string
                  format: date
                name:
                  type: string
                startDate:
                  type: string
                  format: date
                pointOfHireId:
                  type: string
              required:
              - identificationNumber
              - joinDate
              - name
              - startDate
            example:
              identificationNumber: A0001
              joinDate: '2021-04-01'
              name: Alice X
              startDate: '2021-04-01'
              pointOfHireId: 7824a4b6-2aaf-4508-bd88-72b685dfae38
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/f47ac10b-58cc-4372-a567-0e02b2c3d479/hiring-data\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"identificationNumber\": \"A0001\",\n  \"joinDate\": \"2021-04-01\",\n  \"name\": \"Alice X\",\n  \"startDate\": \"2021-04-01\",\n  \"pointOfHireId\": \"7824a4b6-2aaf-4508-bd88-72b685dfae38\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeHiringDataRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.hiring_data.update_many(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    employee_hiring_data_request=EmployeeHiringDataRequest(\n        identification_number=\"A0001\",\n        join_date=\"2021-04-01\",\n        name=\"Alice X\",\n        start_date=\"2021-04-01\",\n        point_of_hire_id=\"7824a4b6-2aaf-4508-bd88-72b685dfae38\",\n    ),\n)"
  /core/v1/employees/{id}/payslip:
    post:
      tags:
      - payslip
      summary: Download Payslip
      description: Download the payslip.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                paymentDate:
                  type: string
                  format: date
                type:
                  type: string
              required:
              - paymentDate
              - type
            example:
              paymentDate: '2020-01-25'
              type: SALARY
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/employees/f47ac10b-58cc-4372-a567-0e02b2c3d479/payslip\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"paymentDate\": \"2020-01-25\",\n  \"type\": \"SALARY\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import PayslipDownloadRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.payslip.create(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    payslip_download_request=PayslipDownloadRequest(\n        payment_date=\"2020-01-25\", type=\"SALARY\"\n    ),\n)"
  /core/v1/employees/{id}/payslip/severance:
    get:
      tags:
      - severance
      summary: Download Severance Slip
      description: Download the severance slip.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/f47ac10b-58cc-4372-a567-0e02b2c3d479/payslip/severance\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.payslip.severance.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/employees/{employeeId}/families/approvals:
    get:
      tags:
      - families
      summary: Get Families
      description: Return the family approvals.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          gender:
                            type: string
                            enum:
                            - MALE
                            - FEMALE
                          dateOfBirth:
                            type: string
                          identityCardNumber:
                            type: string
                          familyRelation:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                              relationType:
                                type: string
                                enum:
                                - MOTHER
                                - FATHER
                                - SPOUSE
                                - FIRST_CHILD
                                - SECOND_CHILD
                                - THIRD_CHILD
                                - OTHER_CHILD
                                - OTHER
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          placeOfBirth:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          alive:
                            type: boolean
                          dateOfDeath:
                            type: string
                          maritalStatus:
                            type: string
                            enum:
                            - SINGLE
                            - MARRIED
                            - WIDOW
                            - WIDOWER
                          marriageDate:
                            type: string
                          religion:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                          educationLevel:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                          job:
                            type: string
                          mobilePhone:
                            type: string
                          description:
                            type: string
                          family:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              gender:
                                type: string
                                enum:
                                - MALE
                                - FEMALE
                              dateOfBirth:
                                type: string
                              identityCardNumber:
                                type: string
                              familyRelation:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  name:
                                    type: string
                                  code:
                                    type: string
                                  relationType:
                                    type: string
                                    enum:
                                    - MOTHER
                                    - FATHER
                                    - SPOUSE
                                    - FIRST_CHILD
                                    - SECOND_CHILD
                                    - THIRD_CHILD
                                    - OTHER_CHILD
                                    - OTHER
                              employee:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  identificationNumber:
                                    type: string
                                  name:
                                    type: string
                              placeOfBirth:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                              alive:
                                type: boolean
                              dateOfDeath:
                                type: string
                              maritalStatus:
                                type: string
                                enum:
                                - SINGLE
                                - MARRIED
                                - WIDOW
                                - WIDOWER
                              marriageDate:
                                type: string
                              religion:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  name:
                                    type: string
                                  code:
                                    type: string
                              educationLevel:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  name:
                                    type: string
                                  code:
                                    type: string
                              job:
                                type: string
                              mobilePhone:
                                type: string
                              description:
                                type: string
                          approvalStatus:
                            type: string
                            enum:
                            - APPROVED
                            - REJECTED
                            - OPEN
                            - WAITING_FOR_APPROVAL
                          rejectionReason:
                            type: string
              example:
                content:
                - id: ffe7cddf-9122-4605-af28-3b5af6e74b58
                  name: titis
                  gender: MALE
                  dateOfBirth: '2021-03-02'
                  identityCardNumber: ''
                  familyRelation:
                    id: 1f29e486-a7e9-11e6-80f5-76304dec7eb7
                    name: Kontak Darurat
                    code: Kontak Darurat
                    relationType: OTHER
                  employee:
                    id: db473cf9-3993-43c0-98b4-c8ec39230b79
                    identificationNumber: ID-0001
                    name: Hanna Silitonga
                  placeOfBirth:
                    id: 27c26b4a-23f5-4d57-9f2c-5883ef44136f
                    code: '11.12'
                    name: Kab. Aceh Barat Daya
                    state:
                      id: 71f58cac-a699-11e6-80f5-76304dec7eb7
                      name: Nangroe Aceh Darussalam
                      code: '11'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        name: Indonesia
                        code: IDN
                  alive: true
                  dateOfDeath: '2024-01-01'
                  maritalStatus: SINGLE
                  marriageDate: '2020-01-01'
                  religion:
                    id: 1f29f46a-a7e9-11e6-80f5-76304dec7eb7
                    code: ISLAM
                    name: Islam
                  educationLevel:
                    id: 1f29f47a-a7e9-11e6-80f5-76304dec7eb7
                    code: S1
                    name: S1
                  job: Staff
                  mobilePhone: ''
                  description: ''
                  family:
                    id: be51db56-1cfd-4f05-979d-d4efa7e419d9
                    name: titis
                    gender: MALE
                    dateOfBirth: '2021-03-02'
                    identityCardNumber: ''
                    familyRelation:
                      id: 1f29e486-a7e9-11e6-80f5-76304dec7eb7
                      name: Kontak Darurat
                      code: Kontak Darurat
                      relationType: OTHER
                    employee:
                      id: db473cf9-3993-43c0-98b4-c8ec39230b79
                      identificationNumber: ID-0001
                      name: Hanna Silitonga
                    placeOfBirth:
                      id: 27c26b4a-23f5-4d57-9f2c-5883ef44136f
                      code: '11.12'
                      name: Kab. Aceh Barat Daya
                      state:
                        id: 71f58cac-a699-11e6-80f5-76304dec7eb7
                        name: Nangroe Aceh Darussalam
                        code: '11'
                        country:
                          id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                          name: Indonesia
                          code: IDN
                    alive: true
                    dateOfDeath: '2024-01-01'
                    maritalStatus: SINGLE
                    marriageDate: '2020-01-01'
                    religion:
                      id: 1f29f46a-a7e9-11e6-80f5-76304dec7eb7
                      code: ISLAM
                      name: Islam
                    educationLevel:
                      id: 1f29f47a-a7e9-11e6-80f5-76304dec7eb7
                      code: S1
                      name: S1
                    job: Staff
                    mobilePhone: ''
                    description: ''
                  approvalStatus: APPROVED
                  rejectionReason: Incomplete documentation
                totalPages: 11
                last: false
                totalElements: 11
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 1
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/families/approvals\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.families.approvals.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\"\n)"
    post:
      tags:
      - families
      summary: Create Family By Employee
      description: Create a family by employee.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  gender:
                    type: string
                    enum:
                    - MALE
                    - FEMALE
                  dateOfBirth:
                    type: string
                  identityCardNumber:
                    type: string
                  familyRelation:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                      relationType:
                        type: string
                        enum:
                        - MOTHER
                        - FATHER
                        - SPOUSE
                        - FIRST_CHILD
                        - SECOND_CHILD
                        - THIRD_CHILD
                        - OTHER_CHILD
                        - OTHER
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  placeOfBirth:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      state:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          country:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              callingCode:
                                type: string
                              taxTreaty:
                                type: boolean
                  alive:
                    type: boolean
                  dateOfDeath:
                    type: string
                  maritalStatus:
                    type: string
                    enum:
                    - SINGLE
                    - MARRIED
                    - WIDOW
                    - WIDOWER
                  marriageDate:
                    type: string
                  religion:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                  educationLevel:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                  job:
                    type: string
                  mobilePhone:
                    type: string
                  description:
                    type: string
                  family:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      gender:
                        type: string
                        enum:
                        - MALE
                        - FEMALE
                      dateOfBirth:
                        type: string
                      identityCardNumber:
                        type: string
                      familyRelation:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                          relationType:
                            type: string
                            enum:
                            - MOTHER
                            - FATHER
                            - SPOUSE
                            - FIRST_CHILD
                            - SECOND_CHILD
                            - THIRD_CHILD
                            - OTHER_CHILD
                            - OTHER
                      employee:
                        type: object
                        properties:
                          id:
                            type: string
                          identificationNumber:
                            type: string
                          name:
                            type: string
                      placeOfBirth:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      alive:
                        type: boolean
                      dateOfDeath:
                        type: string
                      maritalStatus:
                        type: string
                        enum:
                        - SINGLE
                        - MARRIED
                        - WIDOW
                        - WIDOWER
                      marriageDate:
                        type: string
                      religion:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                      educationLevel:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                      job:
                        type: string
                      mobilePhone:
                        type: string
                      description:
                        type: string
                  approvalStatus:
                    type: string
                    enum:
                    - APPROVED
                    - REJECTED
                    - OPEN
                    - WAITING_FOR_APPROVAL
                  rejectionReason:
                    type: string
              example:
                id: 8ff4a4c7-2776-485f-b126-2ed8de04a6b0
                name: John Doe
                gender: MALE
                dateOfBirth: '2021-03-02'
                identityCardNumber: ''
                familyRelation:
                  id: 1f29f1b0-a7e9-11e6-80f5-76304dec7eb7
                  name: Anak Kedua
                  code: Anak Kedua
                  relationType: SECOND_CHILD
                employee:
                  id: 0c639fb9-9a57-41a6-affb-fd7ef2e9f52c
                  identificationNumber: 0004/EMP/01-2017
                  name: Rita Sarah
                placeOfBirth:
                  id: 27c26b4a-23f5-4d57-9f2c-5883ef44136f
                  code: '11.12'
                  name: Kab. Aceh Barat Daya
                alive: true
                dateOfDeath: '2024-01-01'
                maritalStatus: SINGLE
                marriageDate: '2020-01-01'
                religion:
                  id: 1f29f46a-a7e9-11e6-80f5-76304dec7eb7
                  name: Islam
                educationLevel:
                  id: 1f29f47a-a7e9-11e6-80f5-76304dec7eb7
                  name: S1
                job: Staff
                mobilePhone: '+6281234567890'
                description: ''
                family:
                  id: be51db56-1cfd-4f05-979d-d4efa7e419d9
                  name: John Doe
                  gender: MALE
                  dateOfBirth: '2021-03-02'
                  identityCardNumber: ''
                  familyRelation:
                    id: 1f29e486-a7e9-11e6-80f5-76304dec7eb7
                    name: Anak Kedua
                    code: Anak Kedua
                    relationType: SECOND_CHILD
                  employee:
                    id: 0c639fb9-9a57-41a6-affb-fd7ef2e9f52c
                    identificationNumber: 0004/EMP/01-2017
                    name: Rita Sarah
                  placeOfBirth:
                    id: 27c26b4a-23f5-4d57-9f2c-5883ef44136f
                    code: '11.12'
                    name: Kab. Aceh Barat Daya
                  alive: true
                  dateOfDeath: '2024-01-01'
                  maritalStatus: SINGLE
                  marriageDate: '2020-01-01'
                  religion:
                    id: 1f29f46a-a7e9-11e6-80f5-76304dec7eb7
                    name: Islam
                  educationLevel:
                    id: 1f29f47a-a7e9-11e6-80f5-76304dec7eb7
                    name: S1
                  job: Staff
                  mobilePhone: '+6281234567890'
                  description: ''
                approvalStatus: WAITING_FOR_APPROVAL
                rejectionReason: Incomplete documentation
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                gender:
                  type: string
                  enum:
                  - MALE
                  - FEMALE
                dateOfBirth:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                identityCardNumber:
                  type: string
                  maxLength: 255
                familyRelation:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                placeOfBirth:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    state:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        country:
                          type: object
                          properties:
                            code:
                              type: string
                              minLength: 1
                              maxLength: 255
                            callingCode:
                              type: string
                              minLength: 1
                              maxLength: 5
                              pattern: ^\+\d{1,5}$
                              description: e.g. `+62`
                            name:
                              type: string
                              minLength: 1
                              maxLength: 255
                            taxTreaty:
                              type: boolean
                              default: false
                          required:
                          - code
                          - callingCode
                          - name
                alive:
                  type: boolean
                  default: true
                dateOfDeath:
                  type: string
                  format: date
                  description: If left **null** and the individual is marked as **not alive**, the system will automatically set the date of death to the default value of `December 31, 9999`
                maritalStatus:
                  type: string
                  enum:
                  - SINGLE
                  - MARRIED
                  - WIDOW
                  - WIDOWER
                marriageDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                religion:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                educationLevel:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                job:
                  type: string
                  maxLength: 255
                  pattern: '[a-zA-Z0-9 ]+'
                  description: Alphanumeric with space, e.g. `Software Engineer 1`
                mobilePhone:
                  type: string
                  maxLength: 255
                  pattern: ^[+]{1}[0-9-() ]+
                  description: e.g. `+6281234567890`
                description:
                  type: string
                  maxLength: 65535
              required:
              - name
              - gender
              - familyRelation
            example:
              name: John Doe
              gender: MALE
              dateOfBirth: '2021-03-02'
              identityCardNumber: ''
              familyRelation:
                id: 1f29f1b0-a7e9-11e6-80f5-76304dec7eb7
              placeOfBirth:
                id: 27c26b4a-23f5-4d57-9f2c-5883ef44136f
                code: '11.12'
                name: Kab. Aceh Barat Daya
              alive: true
              dateOfDeath: '2024-01-01'
              maritalStatus: SINGLE
              marriageDate: '2020-01-01'
              religion:
                id: 1f29f46a-a7e9-11e6-80f5-76304dec7eb7
                name: Islam
              educationLevel:
                id: 1f29f47a-a7e9-11e6-80f5-76304dec7eb7
                name: S1
              job: Staff
              mobilePhone: '+6281234567890'
              description: ''
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/families/approvals\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '...'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.families.approvals.create(...)"
  /core/v1/employees/{employeeId}/families/approvals/{approvalId}:
    get:
      tags:
      - families
      summary: Get Family
      description: Return the family approval.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      - in: path
        name: approvalId
        schema:
          type: string
        required: true
        example: a1b2c3d4-e5f6-7890-abcd-ef0123456789
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  gender:
                    type: string
                    enum:
                    - MALE
                    - FEMALE
                  dateOfBirth:
                    type: string
                  identityCardNumber:
                    type: string
                  familyRelation:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                      relationType:
                        type: string
                        enum:
                        - MOTHER
                        - FATHER
                        - SPOUSE
                        - FIRST_CHILD
                        - SECOND_CHILD
                        - THIRD_CHILD
                        - OTHER_CHILD
                        - OTHER
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  placeOfBirth:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      state:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          country:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              callingCode:
                                type: string
                              taxTreaty:
                                type: boolean
                  alive:
                    type: boolean
                  dateOfDeath:
                    type: string
                  maritalStatus:
                    type: string
                    enum:
                    - SINGLE
                    - MARRIED
                    - WIDOW
                    - WIDOWER
                  marriageDate:
                    type: string
                  religion:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                  educationLevel:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                  job:
                    type: string
                  mobilePhone:
                    type: string
                  description:
                    type: string
                  family:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      gender:
                        type: string
                        enum:
                        - MALE
                        - FEMALE
                      dateOfBirth:
                        type: string
                      identityCardNumber:
                        type: string
                      familyRelation:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                          relationType:
                            type: string
                            enum:
                            - MOTHER
                            - FATHER
                            - SPOUSE
                            - FIRST_CHILD
                            - SECOND_CHILD
                            - THIRD_CHILD
                            - OTHER_CHILD
                            - OTHER
                      employee:
                        type: object
                        properties:
                          id:
                            type: string
                          identificationNumber:
                            type: string
                          name:
                            type: string
                      placeOfBirth:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      alive:
                        type: boolean
                      dateOfDeath:
                        type: string
                      maritalStatus:
                        type: string
                        enum:
                        - SINGLE
                        - MARRIED
                        - WIDOW
                        - WIDOWER
                      marriageDate:
                        type: string
                      religion:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                      educationLevel:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                      job:
                        type: string
                      mobilePhone:
                        type: string
                      description:
                        type: string
                  approvalStatus:
                    type: string
                    enum:
                    - APPROVED
                    - REJECTED
                    - OPEN
                    - WAITING_FOR_APPROVAL
                  rejectionReason:
                    type: string
              example:
                id: ffe7cddf-9122-4605-af28-3b5af6e74b58
                name: titis
                gender: MALE
                dateOfBirth: '2021-03-02'
                identityCardNumber: ''
                familyRelation:
                  id: 1f29e486-a7e9-11e6-80f5-76304dec7eb7
                  name: Kontak Darurat
                  code: Kontak Darurat
                  relationType: OTHER
                employee:
                  id: db473cf9-3993-43c0-98b4-c8ec39230b79
                  identificationNumber: ID-0001
                  name: Hanna Silitonga
                placeOfBirth:
                  id: 27c26b4a-23f5-4d57-9f2c-5883ef44136f
                  code: '11.12'
                  name: Kab. Aceh Barat Daya
                  state:
                    id: 71f58cac-a699-11e6-80f5-76304dec7eb7
                    name: Nangroe Aceh Darussalam
                    code: '11'
                    country:
                      id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                      name: Indonesia
                      code: IDN
                alive: true
                dateOfDeath: '1970-01-01'
                maritalStatus: SINGLE
                marriageDate: '1970-01-01'
                religion:
                  id: 1f29f46a-a7e9-11e6-80f5-76304dec7eb7
                  name: Islam
                educationLevel:
                  id: 1f29f47a-a7e9-11e6-80f5-76304dec7eb7
                  name: S1
                job: Staff
                mobilePhone: '+6281234567890'
                description: ''
                family:
                  id: be51db56-1cfd-4f05-979d-d4efa7e419d9
                  name: titis
                  gender: MALE
                  dateOfBirth: '2021-03-02'
                  identityCardNumber: ''
                  familyRelation:
                    id: 1f29e486-a7e9-11e6-80f5-76304dec7eb7
                    name: Kontak Darurat
                    code: Kontak Darurat
                    relationType: OTHER
                  employee:
                    id: db473cf9-3993-43c0-98b4-c8ec39230b79
                    identificationNumber: ID-0001
                    name: Hanna Silitonga
                  placeOfBirth:
                    id: 27c26b4a-23f5-4d57-9f2c-5883ef44136f
                    code: '11.12'
                    name: Kab. Aceh Barat Daya
                    state:
                      id: 71f58cac-a699-11e6-80f5-76304dec7eb7
                      name: Nangroe Aceh Darussalam
                      code: '11'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        name: Indonesia
                        code: IDN
                  alive: true
                  dateOfDeath: '1970-01-01'
                  maritalStatus: SINGLE
                  marriageDate: '1970-01-01'
                  religion:
                    id: 1f29f46a-a7e9-11e6-80f5-76304dec7eb7
                    name: Islam
                  educationLevel:
                    id: 1f29f47a-a7e9-11e6-80f5-76304dec7eb7
                    name: S1
                  job: Staff
                  mobilePhone: '+6281234567890'
                  description: ''
                approvalStatus: APPROVED
                rejectionReason: ''
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/families/approvals/a1b2c3d4-e5f6-7890-abcd-ef0123456789\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.families.approvals.retrieve(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    approval_id=\"a1b2c3d4-e5f6-7890-abcd-ef0123456789\",\n)"
    put:
      tags:
      - families
      summary: Update Family By Employee
      description: Update the family by employee.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      - in: path
        name: approvalId
        schema:
          type: string
        required: true
        example: a1b2c3d4-e5f6-7890-abcd-ef0123456789
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  gender:
                    type: string
                    enum:
                    - MALE
                    - FEMALE
                  dateOfBirth:
                    type: string
                  identityCardNumber:
                    type: string
                  familyRelation:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                      relationType:
                        type: string
                        enum:
                        - MOTHER
                        - FATHER
                        - SPOUSE
                        - FIRST_CHILD
                        - SECOND_CHILD
                        - THIRD_CHILD
                        - OTHER_CHILD
                        - OTHER
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  placeOfBirth:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      state:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          country:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              callingCode:
                                type: string
                              taxTreaty:
                                type: boolean
                  alive:
                    type: boolean
                  dateOfDeath:
                    type: string
                  maritalStatus:
                    type: string
                    enum:
                    - SINGLE
                    - MARRIED
                    - WIDOW
                    - WIDOWER
                  marriageDate:
                    type: string
                  religion:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                  educationLevel:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      code:
                        type: string
                  job:
                    type: string
                  mobilePhone:
                    type: string
                  description:
                    type: string
                  family:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      gender:
                        type: string
                        enum:
                        - MALE
                        - FEMALE
                      dateOfBirth:
                        type: string
                      identityCardNumber:
                        type: string
                      familyRelation:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                          relationType:
                            type: string
                            enum:
                            - MOTHER
                            - FATHER
                            - SPOUSE
                            - FIRST_CHILD
                            - SECOND_CHILD
                            - THIRD_CHILD
                            - OTHER_CHILD
                            - OTHER
                      employee:
                        type: object
                        properties:
                          id:
                            type: string
                          identificationNumber:
                            type: string
                          name:
                            type: string
                      placeOfBirth:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      alive:
                        type: boolean
                      dateOfDeath:
                        type: string
                      maritalStatus:
                        type: string
                        enum:
                        - SINGLE
                        - MARRIED
                        - WIDOW
                        - WIDOWER
                      marriageDate:
                        type: string
                      religion:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                      educationLevel:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                      job:
                        type: string
                      mobilePhone:
                        type: string
                      description:
                        type: string
                  approvalStatus:
                    type: string
                    enum:
                    - APPROVED
                    - REJECTED
                    - OPEN
                    - WAITING_FOR_APPROVAL
                  rejectionReason:
                    type: string
              example:
                id: 65cf489c-9f87-40fb-b28a-4967be2a62ff
                name: M. Tetes Yes
                gender: MALE
                dateOfBirth: '2021-03-02'
                identityCardNumber: ''
                familyRelation:
                  id: 1f29f476-a7e9-11e6-80f5-76304dec7eb7
                  name: Anak Kedua
                  code: Anak Kedua
                  relationType: THIRD_CHILD
                employee:
                  id: 0c639fb9-9a57-41a6-affb-fd7ef2e9f52c
                  identificationNumber: 0004/EMP/01-2017
                  name: Rita Sarah
                placeOfBirth:
                  id: 27c26b4a-23f5-4d57-9f2c-5883ef44136f
                  code: '11.12'
                  name: Kab. Aceh Barat Daya
                alive: true
                dateOfDeath: '1970-01-01'
                maritalStatus: SINGLE
                marriageDate: '1970-01-01'
                religion:
                  id: 1f29f46a-a7e9-11e6-80f5-76304dec7eb7
                  name: Islam
                educationLevel:
                  id: 1f29f47a-a7e9-11e6-80f5-76304dec7eb7
                  name: S1
                job: Staff
                mobilePhone: '+6281234567890'
                description: ''
                family:
                  id: 702d45ac-f838-4611-adf2-2fdb18d92156
                  name: tetes
                  gender: MALE
                  dateOfBirth: '2021-03-02'
                  identityCardNumber: ''
                  familyRelation:
                    id: 1f29f476-a7e9-11e6-80f5-76304dec7eb7
                    name: Anak Ketiga
                    code: Anak Ketiga
                    relationType: THIRD_CHILD
                  employee:
                    id: 0c639fb9-9a57-41a6-affb-fd7ef2e9f52c
                    identificationNumber: 0004/EMP/01-2017
                    name: Rita Sarah
                  placeOfBirth:
                    id: 27c26b4a-23f5-4d57-9f2c-5883ef44136f
                    code: '11.12'
                    name: Kab. Aceh Barat Daya
                  alive: true
                  dateOfDeath: '1970-01-01'
                  maritalStatus: SINGLE
                  marriageDate: '1970-01-01'
                  religion:
                    id: 1f29f46a-a7e9-11e6-80f5-76304dec7eb7
                    name: Islam
                  educationLevel:
                    id: 1f29f47a-a7e9-11e6-80f5-76304dec7eb7
                    name: S1
                  job: Staff
                  mobilePhone: '+6281234567890'
                  description: ''
                approvalStatus: WAITING_FOR_APPROVAL
                rejectionReason: ''
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                gender:
                  type: string
                  enum:
                  - MALE
                  - FEMALE
                dateOfBirth:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                identityCardNumber:
                  type: string
                  maxLength: 255
                familyRelation:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                placeOfBirth:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    state:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        country:
                          type: object
                          properties:
                            code:
                              type: string
                              minLength: 1
                              maxLength: 255
                            callingCode:
                              type: string
                              minLength: 1
                              maxLength: 5
                              pattern: ^\+\d{1,5}$
                              description: e.g. `+62`
                            name:
                              type: string
                              minLength: 1
                              maxLength: 255
                            taxTreaty:
                              type: boolean
                              default: false
                          required:
                          - code
                          - callingCode
                          - name
                alive:
                  type: boolean
                  default: true
                dateOfDeath:
                  type: string
                  format: date
                  description: If left **null** and the individual is marked as **not alive**, the system will automatically set the date of death to the default value of `December 31, 9999`
                maritalStatus:
                  type: string
                  enum:
                  - SINGLE
                  - MARRIED
                  - WIDOW
                  - WIDOWER
                marriageDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                religion:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                educationLevel:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                job:
                  type: string
                  maxLength: 255
                  pattern: '[a-zA-Z0-9 ]+'
                  description: Alphanumeric with space, e.g. `Software Engineer 1`
                mobilePhone:
                  type: string
                  maxLength: 255
                  pattern: ^[+]{1}[0-9-() ]+
                  description: e.g. `+6281234567890`
                description:
                  type: string
                  maxLength: 65535
              required:
              - name
              - gender
              - familyRelation
            example:
              name: M. Tetes Yes
              gender: MALE
              dateOfBirth: '2021-03-02'
              identityCardNumber: ''
              familyRelation:
                id: 1f29f476-a7e9-11e6-80f5-76304dec7eb7
              placeOfBirth:
                id: 27c26b4a-23f5-4d57-9f2c-5883ef44136f
                code: '11.12'
                name: Kab. Aceh Barat Daya
              alive: true
              dateOfDeath: '1970-01-01'
              maritalStatus: SINGLE
              marriageDate: '1970-01-01'
              religion:
                id: 1f29f46a-a7e9-11e6-80f5-76304dec7eb7
                name: Islam
              educationLevel:
                id: 1f29f47a-a7e9-11e6-80f5-76304dec7eb7
                name: S1
              job: Staff
              mobilePhone: '+6281234567890'
              description: ''
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/families/approvals/a1b2c3d4-e5f6-7890-abcd-ef0123456789\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '...'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.families.approvals.update(...)"
  /core/v1/employees/{employeeId}/job-experiences/approvals:
    get:
      tags:
      - job-experience
      summary: Get Job Experience Approvals By Employee
      description: Return paginated job experience approvals for a specific employee.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                  |
          |--------------------|---------------------|------------------------------------------------------------------------|
          | approvalStatus     | `:`                 | Equal operator. Values: APPROVED, REJECTED, OPEN, WAITING_FOR_APPROVAL |
        schema:
          type: string
        examples:
          one:
            summary: Search by approval status
            value: approvalStatus:WAITING_FOR_APPROVAL
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        allOf:
                        - type: object
                          properties:
                            id:
                              type: string
                            companyName:
                              type: string
                            jobTitle:
                              type: string
                            jobLevel:
                              type: string
                            startDate:
                              type: string
                              format: date
                            endDate:
                              type: string
                              format: date
                            companyBusiness:
                              type: string
                            terminationReasonInput:
                              type: string
                            companyLocation:
                              type: string
                            lastSalary:
                              type: number
                            employee:
                              type: object
                              properties:
                                id:
                                  type: string
                                identificationNumber:
                                  type: string
                                name:
                                  type: string
                                employmentStatus:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    employmentStatusNumber:
                                      type: string
                                    effectiveDate:
                                      type: string
                                      format: date
                                    organization:
                                      type: object
                                      allOf:
                                      - type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      - type: object
                                        properties:
                                          type:
                                            type: string
                                            enum:
                                            - STRUCTURAL
                                            - FUNCTIONAL
                                          company:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                    jobLevel:
                                      type: object
                                      allOf:
                                      - type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      - type: object
                                        properties:
                                          level:
                                            type: integer
                                    employmentType:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                    jobTitle:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                    location:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                    costCenter:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                    position:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                            references:
                              type: array
                              items:
                                type: string
                        - type: object
                          properties:
                            jobExperience:
                              type: object
                              allOf:
                              - type: object
                                properties:
                                  id:
                                    type: string
                                  companyName:
                                    type: string
                                  jobTitle:
                                    type: string
                                  jobLevel:
                                    type: string
                                  startDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                                  companyBusiness:
                                    type: string
                                  terminationReasonInput:
                                    type: string
                                  companyLocation:
                                    type: string
                                  lastSalary:
                                    type: number
                                  employee:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      identificationNumber:
                                        type: string
                                      name:
                                        type: string
                                      employmentStatus:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          employmentStatusNumber:
                                            type: string
                                          effectiveDate:
                                            type: string
                                            format: date
                                          organization:
                                            type: object
                                            allOf:
                                            - type: object
                                              properties:
                                                id:
                                                  type: string
                                                code:
                                                  type: string
                                                name:
                                                  type: string
                                            - type: object
                                              properties:
                                                type:
                                                  type: string
                                                  enum:
                                                  - STRUCTURAL
                                                  - FUNCTIONAL
                                                company:
                                                  type: object
                                                  properties:
                                                    id:
                                                      type: string
                                                    code:
                                                      type: string
                                                    name:
                                                      type: string
                                          jobLevel:
                                            type: object
                                            allOf:
                                            - type: object
                                              properties:
                                                id:
                                                  type: string
                                                code:
                                                  type: string
                                                name:
                                                  type: string
                                            - type: object
                                              properties:
                                                level:
                                                  type: integer
                                          employmentType:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                          jobTitle:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                          location:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                          costCenter:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                          position:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                  references:
                                    type: array
                                    items:
                                      type: string
                            approvalStatus:
                              type: string
                              enum:
                              - APPROVED
                              - REJECTED
                              - OPEN
                              - WAITING_FOR_APPROVAL
                            rejectionReason:
                              type: string
                            action:
                              type: string
                              enum:
                              - NONE
                              - ADD
                              - EDIT
                              - DELETE
                              - DELETE_ALL
              example:
                content:
                - id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                  companyName: PT Acme Corp
                  jobTitle: Software Engineer
                  jobLevel: Senior
                  startDate: '2020-01-15'
                  endDate: '2023-06-30'
                  companyBusiness: Technology
                  terminationReasonInput: Career growth
                  companyLocation: Jakarta
                  lastSalary: 15000000
                  employee:
                    id: 0ab1c2d3-e4f5-6789-0123-456789abcdef
                    identificationNumber: ID-0001
                    name: John Doe
                    employmentStatus:
                      id: b2c3d4e5-f6a7-8901-bcde-f12345678901
                      employmentStatusNumber: ES-0001
                      effectiveDate: '2020-01-15'
                      organization:
                        id: c3d4e5f6-a7b8-9012-cdef-123456789012
                        name: Engineering
                        code: ENG
                        type: STRUCTURAL
                        company:
                          id: d4e5f6a7-b8c9-0123-defa-234567890123
                          name: PT Acme Corp
                          code: ACME
                      jobLevel:
                        id: e5f6a7b8-c9d0-1234-efab-345678901234
                        name: Senior
                        code: SR
                        level: 5
                      employmentType:
                        id: f6a7b8c9-d0e1-2345-fabc-456789012345
                        name: Permanent
                      jobTitle:
                        id: a7b8c9d0-e1f2-3456-abcd-567890123456
                        name: Software Engineer
                      location:
                        id: b8c9d0e1-f2a3-4567-bcde-678901234567
                        name: Jakarta
                      costCenter:
                        id: c9d0e1f2-a3b4-5678-cdef-234567890123
                        code: CC-001
                        name: Technology Cost Center
                      position:
                        id: d0e1f2a3-b4c5-6789-def0-345678901234
                        code: POS-001
                        name: Senior Position
                  references:
                  - ref-123
                  - ref-456
                  jobExperience:
                    id: e1f2a3b4-c5d6-7890-ef01-456789012345
                    companyName: Previous Company
                    jobTitle: Junior Developer
                    jobLevel: Junior
                    startDate: '2018-01-01'
                    endDate: '2020-01-14'
                  approvalStatus: WAITING_FOR_APPROVAL
                  rejectionReason: ''
                  action: ADD
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/job-experiences/approvals?page=0&size=10&query=approvalStatus%3AWAITING_FOR_APPROVAL\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.job_experiences.approvals.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    page=0,\n    size=10,\n    query=\"approvalStatus:WAITING_FOR_APPROVAL\",\n)"
  /core/v1/employees/{employeeId}/job-experiences/approvals/{approvalId}:
    get:
      tags:
      - job-experience
      summary: Get Job Experience Approval By Employee And Id
      description: Return a specific job experience approval for a specific employee.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      - in: path
        name: approvalId
        schema:
          type: string
        required: true
        example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                allOf:
                - type: object
                  properties:
                    id:
                      type: string
                    companyName:
                      type: string
                    jobTitle:
                      type: string
                    jobLevel:
                      type: string
                    startDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                    companyBusiness:
                      type: string
                    terminationReasonInput:
                      type: string
                    companyLocation:
                      type: string
                    lastSalary:
                      type: number
                    employee:
                      type: object
                      properties:
                        id:
                          type: string
                        identificationNumber:
                          type: string
                        name:
                          type: string
                        employmentStatus:
                          type: object
                          properties:
                            id:
                              type: string
                            employmentStatusNumber:
                              type: string
                            effectiveDate:
                              type: string
                              format: date
                            organization:
                              type: object
                              allOf:
                              - type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              - type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                    - STRUCTURAL
                                    - FUNCTIONAL
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                            jobLevel:
                              type: object
                              allOf:
                              - type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              - type: object
                                properties:
                                  level:
                                    type: integer
                            employmentType:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            jobTitle:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            location:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            costCenter:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            position:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                    references:
                      type: array
                      items:
                        type: string
                - type: object
                  properties:
                    jobExperience:
                      type: object
                      allOf:
                      - type: object
                        properties:
                          id:
                            type: string
                          companyName:
                            type: string
                          jobTitle:
                            type: string
                          jobLevel:
                            type: string
                          startDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
                          companyBusiness:
                            type: string
                          terminationReasonInput:
                            type: string
                          companyLocation:
                            type: string
                          lastSalary:
                            type: number
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                              employmentStatus:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  employmentStatusNumber:
                                    type: string
                                  effectiveDate:
                                    type: string
                                    format: date
                                  organization:
                                    type: object
                                    allOf:
                                    - type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                    - type: object
                                      properties:
                                        type:
                                          type: string
                                          enum:
                                          - STRUCTURAL
                                          - FUNCTIONAL
                                        company:
                                          type: object
                                          properties:
                                            id:
                                              type: string
                                            code:
                                              type: string
                                            name:
                                              type: string
                                  jobLevel:
                                    type: object
                                    allOf:
                                    - type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                    - type: object
                                      properties:
                                        level:
                                          type: integer
                                  employmentType:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  jobTitle:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  location:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  costCenter:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  position:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                          references:
                            type: array
                            items:
                              type: string
                    approvalStatus:
                      type: string
                      enum:
                      - APPROVED
                      - REJECTED
                      - OPEN
                      - WAITING_FOR_APPROVAL
                    rejectionReason:
                      type: string
                    action:
                      type: string
                      enum:
                      - NONE
                      - ADD
                      - EDIT
                      - DELETE
                      - DELETE_ALL
              example:
                id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                companyName: PT Acme Corp
                jobTitle: Software Engineer
                jobLevel: Senior
                startDate: '2020-01-15'
                endDate: '2023-06-30'
                companyBusiness: Technology
                terminationReasonInput: Career growth
                companyLocation: Jakarta
                lastSalary: 15000000
                employee:
                  id: 0ab1c2d3-e4f5-6789-0123-456789abcdef
                  identificationNumber: ID-0001
                  name: John Doe
                  employmentStatus:
                    id: b2c3d4e5-f6a7-8901-bcde-f12345678901
                    employmentStatusNumber: ES-0001
                    effectiveDate: '2020-01-15'
                    organization:
                      id: c3d4e5f6-a7b8-9012-cdef-123456789012
                      name: Engineering
                      code: ENG
                      type: STRUCTURAL
                      company:
                        id: d4e5f6a7-b8c9-0123-defa-234567890123
                        name: PT Acme Corp
                        code: ACME
                    jobLevel:
                      id: e5f6a7b8-c9d0-1234-efab-345678901234
                      name: Senior
                      code: SR
                      level: 5
                    employmentType:
                      id: f6a7b8c9-d0e1-2345-fabc-456789012345
                      name: Permanent
                    jobTitle:
                      id: a7b8c9d0-e1f2-3456-abcd-567890123456
                      name: Software Engineer
                    location:
                      id: b8c9d0e1-f2a3-4567-bcde-678901234567
                      name: Jakarta
                    costCenter:
                      id: c9d0e1f2-a3b4-5678-cdef-234567890123
                      code: CC-001
                      name: Technology Cost Center
                    position:
                      id: d0e1f2a3-b4c5-6789-def0-345678901234
                      code: POS-001
                      name: Senior Position
                references:
                - ref-123
                - ref-456
                jobExperience:
                  id: e1f2a3b4-c5d6-7890-ef01-456789012345
                  companyName: Previous Company
                  jobTitle: Junior Developer
                  jobLevel: Junior
                  startDate: '2018-01-01'
                  endDate: '2020-01-14'
                approvalStatus: WAITING_FOR_APPROVAL
                rejectionReason: ''
                action: ADD
        '400':
          description: Bad Request
        '404':
          description: Not Found
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/job-experiences/approvals/a1b2c3d4-e5f6-7890-abcd-ef1234567890\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.job_experiences.approvals.retrieve(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    approval_id=\"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n)"
  /core/v1/employees/{employeeId}/payment-item-groups/last-sequence:
    get:
      tags:
      - employee-payment-item-group-sequence
      summary: Get Last Payment Item Group Sequence
      description: Return the last payment item group sequence.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  employeeId:
                    type: string
                  lastSequence:
                    type: integer
              example:
                employeeId: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                lastSequence: 10
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/payment-item-groups/last-sequence\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.payment_item_groups.last_sequence.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\"\n)"
  /core/v1/employees/{employeeId}/payment-item-groups/sequences:
    get:
      tags:
      - employee-payment-item-group-sequence
      summary: Get Payment Item Group Sequences
      description: Return the payment item group sequences.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys                  | Supported Operators | Notes                                                                           |
          |---------------------------------|---------------------|---------------------------------------------------------------------------------|
          | id                              | `:`                 | Equal operator                                                                  |
          | employee.id                     | `:`                 | Equal operator                                                                  |
          | paymentItemGroup.paymentType    | `:`                 | Equal operator (REGULAR_SALARY / SEVERANCE / RETROACTIVE / ADDITIONAL_INCOME)   |
          | payrollSequenceNumber           | `:`                 | Equal operator                                                                  |
        schema:
          type: string
        examples:
          one:
            summary: Search by Payment Item Group ID
            value: id:e18f5618-bc6c-11e6-80f5-76304dec7eb1
          two:
            summary: Search by Employee ID
            value: employee.id:0ab1c2d3-e4f5-6789-0123-456789abcdef
          three:
            summary: Search by Payment Type
            value: paymentItemGroup.paymentType:REGULAR_SALARY
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          employeeId:
                            type: string
                          paymentItemGroupId:
                            type: string
                          sequence:
                            type: integer
                          previousSequence:
                            type: integer
              example:
                content:
                - employeeId: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                  paymentItemGroupId: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                  sequence: 10
                  previousSequence: 2
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/payment-item-groups/sequences?page=0&size=10&query=id%3Ae18f5618-bc6c-11e6-80f5-76304dec7eb1\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.payment_item_groups.sequences.list(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    page=0,\n    size=10,\n    query=\"id:e18f5618-bc6c-11e6-80f5-76304dec7eb1\",\n)"
  /core/v1/employee-variable-metadata:
    get:
      tags:
      - employee-variable
      summary: Get Employee Variable Metadata
      description: Return the employee variable metadata.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys | Supported Operators | Notes |
          | -------------- | ------------------- | ----- |
          | name           | :                   | Equal |
          | type           | :                   | Equal |
          | periodic       | :                   | Equal |
          | description    | :                   | Like  |
        schema:
          type: string
        examples:
          one:
            summary: Search by name
            value: name:VARIABLE_A
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          type:
                            type: string
                            enum:
                            - STRING
                            - NUMBER
                          periodic:
                            type: boolean
                          description:
                            type: string
                          validations:
                            type: array
                            items:
                              type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                  - MIN
                                  - MAX
                                  - OPTION
                                value:
                                  type: number
                                options:
                                  type: array
                                  items:
                                    type: string
              example:
                content:
                - id: 673d457f-1975-434c-81a4-067f79345554
                  name: VARIABLE_A
                  type: STRING
                  periodic: true
                  description: description
                  validations:
                  - type: MIN
                    value: 10
                  - type: MAX
                    value: 1000
                  - type: OPTION
                    options:
                    - Option 1
                    - Option 2
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employee-variable-metadata?page=0&size=10&query=name%3AVARIABLE_A\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variable_metadata.list(\n    page=0, size=10, query=\"name:VARIABLE_A\"\n)"
    post:
      tags:
      - employee-variable
      summary: Create Employee Variable Metadata
      description: Create employee variable metadata.
      parameters: []
      responses:
        '201':
          description: CREATED
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  type:
                    type: string
                    enum:
                    - STRING
                    - NUMBER
                  periodic:
                    type: boolean
                  description:
                    type: string
                  validations:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                          - MIN
                          - MAX
                          - OPTION
                        value:
                          type: number
                        options:
                          type: array
                          items:
                            type: string
              example:
                id: 673d457f-1975-434c-81a4-067f79345554
                name: VARIABLE_B
                type: NUMBER
                periodic: true
                description: description
                validations:
                - type: MIN
                  value: 10
                - type: MAX
                  value: 1000
                - type: OPTION
                  options:
                  - Option 1
                  - Option 2
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRING
                  - NUMBER
                periodic:
                  type: boolean
                description:
                  type: string
                validations:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - MIN
                        - MAX
                        - OPTION
                      value:
                        type: number
                      options:
                        type: array
                        items:
                          type: string
              required:
              - name
              - type
              - periodic
            example:
              name: VARIABLE_B
              type: NUMBER
              periodic: true
              description: description
              validations:
              - type: MIN
                value: 10
              - type: MAX
                value: 1000
              - type: OPTION
                options:
                - Option 1
                - Option 2
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/employee-variable-metadata\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"name\": \"VARIABLE_B\",\n  \"type\": \"NUMBER\",\n  \"periodic\": true,\n  \"description\": \"description\",\n  \"validations\": [\n    {\n      \"type\": \"MIN\",\n      \"value\": 10\n    },\n    {\n      \"type\": \"MAX\",\n      \"value\": 1000\n    },\n    {\n      \"type\": \"OPTION\",\n      \"options\": [\n        \"Option 1\",\n        \"Option 2\"\n      ]\n    }\n  ]\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeVariableMetadataRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variable_metadata.create(\n    employee_variable_metadata_request=EmployeeVariableMetadataRequest(\n        name=\"VARIABLE_B\",\n        type=\"NUMBER\",\n        periodic=True,\n        description=\"description\",\n        validations=[\n            {\"type\": \"MIN\", \"value\": 10},\n            {\"type\": \"MAX\", \"value\": 1000},\n            {\"type\": \"OPTION\", \"options\": [\"Option 1\", \"Option 2\"]},\n        ],\n    )\n)"
    delete:
      tags:
      - employee-variable
      summary: Delete Employee Variable Metadata
      description: |
        This endpoint deletes employee variable metadata.
        This endpoint expects a JSON array in the request body,  where each item is an object containing an `id` field representing the employee variable metadata to delete. The array must contain between 1 and 50 items.
            
        **Request body schema:** ```json [
          {
            "id": "string"
          }
        ] ```
        **Example payload**: ```json [
          { "id": "673d457f-1975-434c-81a4-067f79345554" },
          { "id": "730e2120-96e6-4426-8bbd-c1945ce561f7" }
        ] ```
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier
                required:
                - id
            example:
            - id: 673d457f-1975-434c-81a4-067f79345554
            - id: 730e2120-96e6-4426-8bbd-c1945ce561f7
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              example:
                successes:
                - id: 673d457f-1975-434c-81a4-067f79345554
                failures:
                - code: COM-UNKNOWN_ERROR
                  params:
                    id: 730e2120-96e6-4426-8bbd-c1945ce561f7
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/employee-variable-metadata\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"id\": \"673d457f-1975-434c-81a4-067f79345554\"\n  },\n  {\n    \"id\": \"730e2120-96e6-4426-8bbd-c1945ce561f7\"\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variable_metadata.delete_many(\n    approval_ids_request=[\n        IdRequest(id=\"673d457f-1975-434c-81a4-067f79345554\"),\n        IdRequest(id=\"730e2120-96e6-4426-8bbd-c1945ce561f7\"),\n    ]\n)"
  /core/v1/employee-variable-metadata/{id}:
    get:
      tags:
      - employee-variable
      summary: Get Employee Variable Metadata by Id
      description: Return the employee variable metadata by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  type:
                    type: string
                    enum:
                    - STRING
                    - NUMBER
                  periodic:
                    type: boolean
                  description:
                    type: string
                  validations:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                          - MIN
                          - MAX
                          - OPTION
                        value:
                          type: number
                        options:
                          type: array
                          items:
                            type: string
              example:
                id: 673d457f-1975-434c-81a4-067f79345554
                name: VARIABLE_A
                type: STRING
                periodic: true
                description: description
                validations:
                - type: MIN
                  value: 10
                - type: MAX
                  value: 1000
                - type: OPTION
                  options:
                  - Option 1
                  - Option 2
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employee-variable-metadata/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variable_metadata.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
    put:
      tags:
      - employee-variable
      summary: Update Employee Variable Metadata
      description: Update the employee variable metadata.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  type:
                    type: string
                    enum:
                    - STRING
                    - NUMBER
                  periodic:
                    type: boolean
                  description:
                    type: string
                  validations:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                          - MIN
                          - MAX
                          - OPTION
                        value:
                          type: number
                        options:
                          type: array
                          items:
                            type: string
              example:
                id: 673d457f-1975-434c-81a4-067f79345554
                name: VARIABLE_B
                type: NUMBER
                periodic: true
                description: description
                validations:
                - type: MIN
                  value: 10
                - type: MAX
                  value: 1000
                - type: OPTION
                  options:
                  - Option 1
                  - Option 2
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRING
                  - NUMBER
                periodic:
                  type: boolean
                description:
                  type: string
                validations:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - MIN
                        - MAX
                        - OPTION
                      value:
                        type: number
                      options:
                        type: array
                        items:
                          type: string
              required:
              - name
              - type
              - periodic
            example:
              name: VARIABLE_B
              type: NUMBER
              periodic: true
              description: description
              validations:
              - type: MIN
                value: 10
              - type: MAX
                value: 1000
              - type: OPTION
                options:
                - Option 1
                - Option 2
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employee-variable-metadata/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"name\": \"VARIABLE_B\",\n  \"type\": \"NUMBER\",\n  \"periodic\": true,\n  \"description\": \"description\",\n  \"validations\": [\n    {\n      \"type\": \"MIN\",\n      \"value\": 10\n    },\n    {\n      \"type\": \"MAX\",\n      \"value\": 1000\n    },\n    {\n      \"type\": \"OPTION\",\n      \"options\": [\n        \"Option 1\",\n        \"Option 2\"\n      ]\n    }\n  ]\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeVariableMetadataRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variable_metadata.update(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    employee_variable_metadata_request=EmployeeVariableMetadataRequest(\n        name=\"VARIABLE_B\",\n        type=\"NUMBER\",\n        periodic=True,\n        description=\"description\",\n        validations=[\n            {\"type\": \"MIN\", \"value\": 10},\n            {\"type\": \"MAX\", \"value\": 1000},\n            {\"type\": \"OPTION\", \"options\": [\"Option 1\", \"Option 2\"]},\n        ],\n    ),\n)"
  /core/v1/employee-variables:
    get:
      tags:
      - employee-variable
      summary: Get Employee Variables
      description: |
        ### Search Query
        | Supported Keys                | Supported Operators | Notes |
        | ----------------------------- | ------------------- | ----- |
        | employeeId                    | :                   | Equal |
        | employee.identificationNumber | :                   | Like  |
        | employee.name                 | :                   | Like  |
        | employee.active               | :                   | Equal |
        | name                          | :                   | Like  |
        | metadata.id                   | :                   | Equal |
        | date                          | :<br>><br><         | Equal<br>Greater than or equal to<br>Less than or equal to |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employeeId:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          name:
                            type: string
                          date:
                            type: string
                            format: date
                          value:
                            type: string
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
              example:
                content:
                - id: 673d457f-1975-434c-81a4-067f79345554
                  employeeId: 773d457f-1975-434c-81a4-067f79345554
                  employee:
                    id: 773d457f-1975-434c-81a4-067f79345554
                    identificationNumber: '0001'
                    name: Employee 1
                  name: VARIABLE_A
                  date: '2022-01-01'
                  value: '100'
                  createdBy: system
                  createdDate: 1641047355000
                  updatedBy: system
                  updatedDate: 1641047356000
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employee-variables\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variables.list()"
    post:
      tags:
      - employee-variable
      summary: Create Employee Variable
      description: Create an employee variable.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employeeId:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  name:
                    type: string
                  date:
                    type: string
                    format: date
                  value:
                    type: string
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
              example:
                id: 673d457f-1975-434c-81a4-067f79345554
                employeeId: 773d457f-1975-434c-81a4-067f79345554
                employee:
                  id: 773d457f-1975-434c-81a4-067f79345554
                  identificationNumber: '0001'
                  name: Employee 1
                name: VARIABLE_B
                date: '2022-01-01'
                value: '100'
                createdBy: system
                createdDate: 1641047355000
                updatedBy: system
                updatedDate: 1641047356000
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                employeeId:
                  type: string
                name:
                  type: string
                date:
                  type: string
                  format: date
                value:
                  type: string
              required:
              - employeeId
              - name
              - date
              - value
            example:
              employeeId: 773d457f-1975-434c-81a4-067f79345554
              name: VARIABLE_B
              date: '2022-01-01'
              value: '100'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/employee-variables\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"employeeId\": \"773d457f-1975-434c-81a4-067f79345554\",\n  \"name\": \"VARIABLE_B\",\n  \"date\": \"2022-01-01\",\n  \"value\": \"100\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeVariableRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variables.create(\n    employee_variable_request=EmployeeVariableRequest(\n        employee_id=\"773d457f-1975-434c-81a4-067f79345554\",\n        name=\"VARIABLE_B\",\n        date=\"2022-01-01\",\n        value=\"100\",\n    )\n)"
    put:
      tags:
      - employee-variable
      summary: Create or Update Employee Variables
      description: Create or update the employee variables.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    employeeId:
                      type: string
                    employee:
                      type: object
                      properties:
                        id:
                          type: string
                        identificationNumber:
                          type: string
                        name:
                          type: string
                    name:
                      type: string
                    date:
                      type: string
                      format: date
                    value:
                      type: string
                    createdBy:
                      type: string
                    createdDate:
                      type: number
                    updatedBy:
                      type: string
                    updatedDate:
                      type: number
              example:
              - id: 673d457f-1975-434c-81a4-067f79345554
                employeeId: 773d457f-1975-434c-81a4-067f79345554
                employee:
                  id: 773d457f-1975-434c-81a4-067f79345554
                  identificationNumber: '0001'
                  name: Employee 1
                name: VARIABLE_B
                date: '2022-01-01'
                value: '200'
                createdBy: system
                createdDate: 1641047355000
                updatedBy: system
                updatedDate: 1641047356000
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  employeeId:
                    type: string
                  name:
                    type: string
                  date:
                    type: string
                    format: date
                  value:
                    type: string
                required:
                - employeeId
                - name
                - date
                - value
              maxItems: 50
              minItems: 1
            example:
            - employeeId: 773d457f-1975-434c-81a4-067f79345554
              name: VARIABLE_B
              date: '2022-01-01'
              value: '200'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employee-variables\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"employeeId\": \"773d457f-1975-434c-81a4-067f79345554\",\n    \"name\": \"VARIABLE_B\",\n    \"date\": \"2022-01-01\",\n    \"value\": \"200\"\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeVariableRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variables.update_many(\n    employee_variable_list_request=[\n        EmployeeVariableRequest(\n            employee_id=\"773d457f-1975-434c-81a4-067f79345554\",\n            name=\"VARIABLE_B\",\n            date=\"2022-01-01\",\n            value=\"200\",\n        )\n    ]\n)"
    delete:
      tags:
      - employee-variable
      summary: Delete Employee Variables
      description: |
        This endpoint expects a JSON array in the request body,  where each item is an object containing an `id` field representing the employee variable to delete. The array must contain between 1 and 50 items.
        **Request body schema:** ```json [
          { "id": "string" }
        ] ```
        **Example payload**: ```json [
          { "id": "673d457f-1975-434c-81a4-067f79345554" },
          { "id": "730e2120-96e6-4426-8bbd-c1945ce561f7" }
        ] ```
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier
                required:
                - id
            example:
            - id: 673d457f-1975-434c-81a4-067f79345554
            - id: 730e2120-96e6-4426-8bbd-c1945ce561f7
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              example:
                successes:
                - id: 673d457f-1975-434c-81a4-067f79345554
                failures:
                - code: COM-UNKNOWN_ERROR
                  params:
                    id: 730e2120-96e6-4426-8bbd-c1945ce561f7
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/employee-variables\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"id\": \"673d457f-1975-434c-81a4-067f79345554\"\n  },\n  {\n    \"id\": \"730e2120-96e6-4426-8bbd-c1945ce561f7\"\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variables.delete_many(\n    approval_ids_request=[\n        IdRequest(id=\"673d457f-1975-434c-81a4-067f79345554\"),\n        IdRequest(id=\"730e2120-96e6-4426-8bbd-c1945ce561f7\"),\n    ]\n)"
  /core/v1/employee-variables/{id}:
    get:
      tags:
      - employee-variable
      summary: Get Employee Variable by Id
      description: Return the employee variable by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employeeId:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  name:
                    type: string
                  date:
                    type: string
                    format: date
                  value:
                    type: string
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
              example:
                id: 673d457f-1975-434c-81a4-067f79345554
                employeeId: 773d457f-1975-434c-81a4-067f79345554
                employee:
                  id: 773d457f-1975-434c-81a4-067f79345554
                  identificationNumber: '0001'
                  name: Employee 1
                name: VARIABLE_A
                date: '2022-01-01'
                value: '100'
                createdBy: system
                createdDate: 1641047355000
                updatedBy: system
                updatedDate: 1641047356000
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employee-variables/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variables.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
    put:
      tags:
      - employee-variable
      summary: Update Employee Variable by Id
      description: Update the employee variable by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employeeId:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  name:
                    type: string
                  date:
                    type: string
                    format: date
                  value:
                    type: string
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
              example:
                id: 673d457f-1975-434c-81a4-067f79345554
                employeeId: 773d457f-1975-434c-81a4-067f79345554
                employee:
                  id: 773d457f-1975-434c-81a4-067f79345554
                  identificationNumber: '0001'
                  name: Employee 1
                name: VARIABLE_B
                date: '2022-01-01'
                value: '200'
                createdBy: system
                createdDate: 1641047355000
                updatedBy: system
                updatedDate: 1641047356000
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                employeeId:
                  type: string
                name:
                  type: string
                date:
                  type: string
                  format: date
                value:
                  type: string
              required:
              - employeeId
              - name
              - date
              - value
            example:
              employeeId: 773d457f-1975-434c-81a4-067f79345554
              name: VARIABLE_B
              date: '2022-01-01'
              value: '200'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employee-variables/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"employeeId\": \"773d457f-1975-434c-81a4-067f79345554\",\n  \"name\": \"VARIABLE_B\",\n  \"date\": \"2022-01-01\",\n  \"value\": \"200\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeVariableRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variables.update(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    employee_variable_request=EmployeeVariableRequest(\n        employee_id=\"773d457f-1975-434c-81a4-067f79345554\",\n        name=\"VARIABLE_B\",\n        date=\"2022-01-01\",\n        value=\"200\",\n    ),\n)"
  /core/v1/employee-variables/periodic:
    get:
      tags:
      - employee-variable
      summary: Get Periodic Employee Variables
      description: Return the periodic employee variables.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employeeId:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          name:
                            type: string
                          date:
                            type: string
                            format: date
                          value:
                            type: string
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
              example:
                content:
                - id: 673d457f-1975-434c-81a4-067f79345554
                  employeeId: 773d457f-1975-434c-81a4-067f79345554
                  employee:
                    id: 773d457f-1975-434c-81a4-067f79345554
                    identificationNumber: '0001'
                    name: Employee 1
                  name: VARIABLE_A
                  date: '2022-01-01'
                  value: '100'
                  createdBy: system
                  createdDate: 1641047355000
                  updatedBy: system
                  updatedDate: 1641047356000
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employee-variables/periodic\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variables.periodic.list()"
  /core/v1/employee-variables/aperiodic:
    get:
      tags:
      - employee-variable
      summary: Get Aperiodic Employee Variables
      description: Return the aperiodic employee variables.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employeeId:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          name:
                            type: string
                          date:
                            type: string
                            format: date
                          value:
                            type: string
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
              example:
                content:
                - id: 673d457f-1975-434c-81a4-067f79345554
                  employeeId: 773d457f-1975-434c-81a4-067f79345554
                  employee:
                    id: 773d457f-1975-434c-81a4-067f79345554
                    identificationNumber: '0001'
                    name: Employee 1
                  name: VARIABLE_A
                  date: '2022-01-01'
                  value: '100'
                  createdBy: system
                  createdDate: 1641047355000
                  updatedBy: system
                  updatedDate: 1641047356000
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employee-variables/aperiodic\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variables.aperiodic.list()"
  /core/v1/employee-variables/aperiodic/all:
    delete:
      tags:
      - employee-variable
      summary: Delete All Aperiodic Employee Variables
      description: |
        ### Search Query
        | Supported Keys                | Supported Operators | Notes |
        | ----------------------------- | ------------------- | ----- |
        | employeeId                    | :                   | Equal |
        | employee.identificationNumber | :                   | Like  |
        | employee.name                 | :                   | Like  |
        | employee.active               | :                   | Equal |
        | name                          | :                   | Like  |
        | metadata.id                   | :                   | Equal |
        | date                          | :<br>><br><         | Equal<br>Greater than or equal to<br>Less than or equal to |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
              example:
                count: 1
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/employee-variables/aperiodic/all\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_variables.aperiodic.all.delete_many()"
  /core/v1/families:
    get:
      tags:
      - families
      summary: Get Families
      description: Return the families.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                     |
          |--------------------|---------------------|-------------------------------------------------------------------------------------------|
          | id                 | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | employee.id        | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
        schema:
          type: string
        examples:
          byId:
            summary: Search families by multiple IDs
            value: id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6
          byEmployeeId:
            summary: Search families by multiple Employee IDs
            value: employee.id:d290f1ee-6c54-4b01-90e6-d701748f0851;0100902f-5d8f-4de4-8fae-5ced86831dd1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          gender:
                            type: string
                            enum:
                            - MALE
                            - FEMALE
                          dateOfBirth:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                            default: '1970-01-01'
                          familyRelation:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                              relationType:
                                type: string
                                enum:
                                - MOTHER
                                - FATHER
                                - SPOUSE
                                - FIRST_CHILD
                                - SECOND_CHILD
                                - THIRD_CHILD
                                - OTHER_CHILD
                                - OTHER
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                            default: '1970-01-01'
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                            default: '1970-01-01'
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
              example:
                content:
                - id: fff7cddf-9122-4605-af28-3b5af6e74b58
                  name: titis
                  gender: MALE
                  dateOfBirth: '2021-03-31'
                  familyRelation:
                    id: 1f29e486-a7e9-11e6-80f5-76304dec7eb7
                    name: Kontak Darurat
                    code: Kontak Darurat
                    relationType: OTHER
                  effectiveDate: '2017-05-15'
                  endDate: '1970-01-01'
                  createdBy: system
                  createdDate: 1653473735548
                  updatedBy: system
                  updatedDate: 1653473735548
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/families?page=0&size=10&query=id%3Ae18f5618-bc6c-11e6-80f5-76304dec7eb1%3Bf38f5618-bc6c-11e6-80f5-76304dec7ec6\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.families.list(\n    page=0,\n    size=10,\n    query=\"id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;f38f5618-bc6c-11e6-80f5-76304dec7ec6\",\n)"
  /core/v1/families/approvals/approve:
    put:
      tags:
      - families
      summary: Approve Families
      description: Approve the family approvals.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              examples:
                Success:
                  value:
                    successes:
                    - id: 7eb20b1e-577b-45c0-adf4-c76ae17cdeae
                    - id: 6a4d1903-b453-4694-9806-65101f0aec64
                    failures: []
                Failure:
                  value:
                    successes: []
                    failures:
                    - code: COM-UNABLE_TO_APPROVE
                      message: can't approve or reject because approval status is APPROVED
                      params:
                        id: b4138808-3ec9-4a44-b58d-ef161f870778
                    - code: COM-UNABLE_TO_APPROVE
                      message: can't approve or reject because approval status is APPROVED
                      params:
                        id: 6a4d1903-b453-4694-9806-65101f0aec64
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              example:
                successes: []
                failures:
                - code: COM-UNABLE_TO_APPROVE
                  message: can't approve or reject because approval status is APPROVED
                  params:
                    id: b4138808-3ec9-4a44-b58d-ef161f870778
                - code: COM-UNABLE_TO_APPROVE
                  message: can't approve or reject because approval status is APPROVED
                  params:
                    id: 6a4d1903-b453-4694-9806-65101f0aec64
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier
                required:
                - id
            example:
            - id: 7eb20b1e-577b-45c0-adf4-c76ae17cdeae
            - id: 6a4d1903-b453-4694-9806-65101f0aec64
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/families/approvals/approve\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"id\": \"7eb20b1e-577b-45c0-adf4-c76ae17cdeae\"\n  },\n  {\n    \"id\": \"6a4d1903-b453-4694-9806-65101f0aec64\"\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.families.approvals.approve(\n    approval_ids_request=[\n        IdRequest(id=\"7eb20b1e-577b-45c0-adf4-c76ae17cdeae\"),\n        IdRequest(id=\"6a4d1903-b453-4694-9806-65101f0aec64\"),\n    ]\n)"
  /core/v1/families/approvals/reject:
    put:
      tags:
      - families
      summary: Reject Families
      description: Reject the family approvals.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              examples:
                Success:
                  value:
                    successes:
                    - id: 7eb20b1e-577b-45c0-adf4-c76ae17cdeae
                    - id: 6a4d1903-b453-4694-9806-65101f0aec64
                    failures: []
                Failure:
                  value:
                    successes: []
                    failures:
                    - code: COM-UNABLE_TO_REJECT
                      message: can't approve or reject because approval status is REJECTED
                      params:
                        id: b4138808-3ec9-4a44-b58d-ef161f870778
                        reason: Error occurred
                    - code: COM-UNABLE_TO_REJECT
                      message: can't approve or reject because approval status is REJECTED
                      params:
                        id: b4138808-3ec9-4a44-b58d-ef161f870778
                        reason: Error occurred
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              example:
                successes: []
                failures:
                - code: COM-UNABLE_TO_APPROVE
                  message: can't approve or reject because approval status is APPROVED
                  params:
                    id: b4138808-3ec9-4a44-b58d-ef161f870778
                    reason: Error occurred
                - code: COM-UNABLE_TO_APPROVE
                  message: can't approve or reject because approval status is APPROVED
                  params:
                    id: 6a4d1903-b453-4694-9806-65101f0aec64
                    reason: Error occurred
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Approval ID
                  reason:
                    type: string
                    description: Reason of Rejection
                required:
                - id
                - reason
            example:
            - id: 59a7fdc8-888c-437b-afec-44ffa490b160
              reason: reason
            - id: 032f6fd4-67d5-423f-9522-283f79391019
              reason: reason
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/families/approvals/reject\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"id\": \"59a7fdc8-888c-437b-afec-44ffa490b160\",\n    \"reason\": \"reason\"\n  },\n  {\n    \"id\": \"032f6fd4-67d5-423f-9522-283f79391019\",\n    \"reason\": \"reason\"\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import RejectApprovalRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.families.approvals.reject(\n    reject_approval_list_request=[\n        RejectApprovalRequest(\n            id=\"59a7fdc8-888c-437b-afec-44ffa490b160\", reason=\"reason\"\n        ),\n        RejectApprovalRequest(\n            id=\"032f6fd4-67d5-423f-9522-283f79391019\", reason=\"reason\"\n        ),\n    ]\n)"
  /core/v1/employees/{employeeId}/families/{familyId}:
    delete:
      tags:
      - families
      summary: Delete Family
      description: Delete the family.
      parameters:
      - in: path
        name: employeeId
        schema:
          type: string
        required: true
        example: 0ab1c2d3-e4f5-6789-0123-456789abcdef
      - in: path
        name: familyId
        schema:
          type: string
        required: true
        example: c3d4e5f6-a7b8-9012-cdef-01234567890b
      responses:
        '200':
          description: OK
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: COM-DATA_NOT_FOUND
                message: Family Approval is not found
                status: 404
                timestamp: '2022-06-03T11:35:39.709782'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/employees/0ab1c2d3-e4f5-6789-0123-456789abcdef/families/c3d4e5f6-a7b8-9012-cdef-01234567890b\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employees.families.delete(\n    employee_id=\"0ab1c2d3-e4f5-6789-0123-456789abcdef\",\n    family_id=\"c3d4e5f6-a7b8-9012-cdef-01234567890b\",\n)"
  /core/v1/employment-status-types:
    get:
      tags:
      - master-data
      summary: Get Employment Status Types
      description: |
        ### Search Query
        | Supported Keys             | Supported Operators | Notes                      |
        |----------------------------|---------------------|----------------------------|
        | name                       | `:`                 | Like operator              |
        | employmentStatusNumberType | `:`                 | Like operator              |
        | defaultData                | `:`                 | Equal operator             |
      parameters:
      - in: query
        name: name
        schema:
          type: string
        example: Active
      - in: query
        name: employmentStatusNumberType
        schema:
          type: string
        example: PKWT_NUMBER
      - in: query
        name: defaultData
        schema:
          type: string
        example: 'false'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          defaultData:
                            type: boolean
                          employmentStatusNumberType:
                            type: string
                            enum:
                            - PKWT_NUMBER
                            - EMPLOYMENT_STATUS_CHANGE_NUMBER
                          name:
                            type: string
              example:
                content:
                - id: f18f5618-ac6c-11e6-80f5-76304dec7eb8
                  name: Rollover Contract
                  employmentStatusNumberType: PKWT_NUMBER
                  defaultData: false
                - id: f18f5618-ac6c-11e6-80f5-76304dec7eb7
                  name: Rotation
                  employmentStatusNumberType: EMPLOYMENT_STATUS_CHANGE_NUMBER
                  defaultData: false
                - id: f18f5618-ac6c-11e6-80f5-76304dec7eb6
                  name: Demotion
                  employmentStatusNumberType: EMPLOYMENT_STATUS_CHANGE_NUMBER
                  defaultData: false
                - id: f18f5618-ac6c-11e6-80f5-76304dec7eb5
                  name: Mutation
                  employmentStatusNumberType: EMPLOYMENT_STATUS_CHANGE_NUMBER
                  defaultData: false
                - id: f18f5618-ac6c-11e6-80f5-76304dec7eb4
                  name: Promotion
                  employmentStatusNumberType: EMPLOYMENT_STATUS_CHANGE_NUMBER
                  defaultData: false
                - id: f18f5618-ac6c-11e6-80f5-76304dec7eb3
                  name: Permanent
                  employmentStatusNumberType: EMPLOYMENT_STATUS_CHANGE_NUMBER
                  defaultData: false
                - id: f18f5618-ac6c-11e6-80f5-76304dec7eb2
                  name: Rehire
                  employmentStatusNumberType: PKWT_NUMBER
                  defaultData: false
                - id: f18f5618-ac6c-11e6-80f5-76304dec7eb1
                  name: Recruit
                  employmentStatusNumberType: PKWT_NUMBER
                  defaultData: true
                totalPages: 1
                last: true
                totalElements: 8
                numberOfElements: 8
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employment-status-types?name=Active&employmentStatusNumberType=PKWT_NUMBER&defaultData=false\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employment_status_types.list(\n    name=\"Active\", employment_status_number_type=\"PKWT_NUMBER\", default_data=\"false\"\n)"
  /core/v1/employment-types:
    get:
      tags:
      - master-data
      summary: Get Employment Types
      description: |
        ### Search Query
        | Supported Keys        | Supported Operators | Notes                      |
        |-----------------------|---------------------|----------------------------|
        | name                  | `:`                 | Like operator              |
        | employmentGroupCode   | `:`                 | Like operator              |
        | permanent             | `:`                 | Equal operator             |
        | otherLeaveStatus.code | `:`                 | Equal operator             |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          employmentGroupCode:
                            type: string
                          monthDuration:
                            type: integer
                          permanent:
                            type: boolean
                          effectiveDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
              example:
                content:
                - id: a896cc20-aba9-11e6-80f9-76304dec7eb7
                  name: Outsourcing
                  employmentGroupCode: '004'
                  monthDuration: 1
                  permanent: false
                  effectiveDate: '2024-01-01'
                  endDate: '9999-12-31'
                - id: a896cc20-aba9-11e6-80f8-76304dec7eb7
                  name: Contract - 12 months
                  employmentGroupCode: '003'
                  monthDuration: 12
                  permanent: false
                  effectiveDate: '2024-01-01'
                  endDate: '2024-12-31'
                - id: a896cc20-aba9-11e6-80f7-76304dec7eb7
                  name: Contract - 6 months
                  employmentGroupCode: '002'
                  monthDuration: 6
                  permanent: false
                  effectiveDate: '2024-01-01'
                  endDate: '9999-12-31'
                - id: a896cc20-aba9-11e6-80f6-76304dec7eb7
                  name: Permanent
                  employmentGroupCode: '001'
                  monthDuration: 0
                  permanent: true
                  effectiveDate: '2024-01-01'
                  endDate: '2024-12-31'
                totalPages: 1
                last: true
                totalElements: 4
                numberOfElements: 4
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employment-types\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employment_types.list()"
    post:
      tags:
      - master-data
      summary: Create Employment Type
      description: Create an employment type.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  employmentGroupCode:
                    type: string
                  monthDuration:
                    type: integer
                  permanent:
                    type: boolean
                  effectiveDate:
                    type: string
                    format: date
                  endDate:
                    type: string
                    format: date
              example:
                id: 2ee5526d-fe72-4a25-8280-223c785701dc
                name: NEW
                employmentGroupCode: '008'
                monthDuration: 6
                permanent: false
                effectiveDate: '2024-01-01'
                endDate: '9999-12-31'
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                employmentGroupCode:
                  type: string
                  minLength: 1
                  maxLength: 3
                  pattern: '[a-zA-Z0-9]+'
                monthDuration:
                  type: integer
                  minimum: 0
                  maximum: 60
                permanent:
                  type: boolean
                  default: false
                effectiveDate:
                  type: string
                  format: date
                  description: Effective date for the employment type. Defaults to minimum date if not provided.
                endDate:
                  type: string
                  format: date
                  description: End date for the employment type
              required:
              - name
              - employmentGroupCode
              - monthDuration
              - effectiveDate
            example:
              name: NEW
              employmentGroupCode: '008'
              monthDuration: 6
              permanent: false
              effectiveDate: '2024-01-01'
              endDate: '9999-12-31'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/employment-types\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"name\": \"NEW\",\n  \"employmentGroupCode\": \"008\",\n  \"monthDuration\": 6,\n  \"permanent\": false,\n  \"effectiveDate\": \"2024-01-01\",\n  \"endDate\": \"9999-12-31\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmploymentTypeRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employment_types.create(\n    employment_type_request=EmploymentTypeRequest(\n        name=\"NEW\",\n        employment_group_code=\"008\",\n        month_duration=6,\n        permanent=False,\n        effective_date=\"2024-01-01\",\n        end_date=\"9999-12-31\",\n    )\n)"
  /core/v1/employment-types/{id}:
    put:
      tags:
      - master-data
      summary: Update Employment Type
      description: Update the employment type.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  employmentGroupCode:
                    type: string
                  monthDuration:
                    type: integer
                  permanent:
                    type: boolean
                  effectiveDate:
                    type: string
                    format: date
                  endDate:
                    type: string
                    format: date
              example:
                id: 2ee5526d-fe72-4a25-8280-223c785701dc
                name: NEW
                employmentGroupCode: '008'
                monthDuration: 6
                permanent: false
                effectiveDate: '2024-01-01'
                endDate: '9999-12-31'
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                employmentGroupCode:
                  type: string
                  minLength: 1
                  maxLength: 3
                  pattern: '[a-zA-Z0-9]+'
                monthDuration:
                  type: integer
                  minimum: 0
                  maximum: 60
                permanent:
                  type: boolean
                  default: false
                effectiveDate:
                  type: string
                  format: date
                  description: Effective date for the employment type. Defaults to minimum date if not provided.
                endDate:
                  type: string
                  format: date
                  description: End date for the employment type
              required:
              - name
              - employmentGroupCode
              - monthDuration
              - effectiveDate
            example:
              name: NEW
              employmentGroupCode: '008'
              monthDuration: 6
              permanent: false
              effectiveDate: '2024-01-01'
              endDate: '9999-12-31'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/employment-types/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"name\": \"NEW\",\n  \"employmentGroupCode\": \"008\",\n  \"monthDuration\": 6,\n  \"permanent\": false,\n  \"effectiveDate\": \"2024-01-01\",\n  \"endDate\": \"9999-12-31\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmploymentTypeRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employment_types.update(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    employment_type_request=EmploymentTypeRequest(\n        name=\"NEW\",\n        employment_group_code=\"008\",\n        month_duration=6,\n        permanent=False,\n        effective_date=\"2024-01-01\",\n        end_date=\"9999-12-31\",\n    ),\n)"
  /core/v1/family-relations:
    get:
      tags:
      - master-data
      summary: Get Family Relations
      description: |
        ### Search Query
        | Supported Keys          | Supported Operators | Notes                      |
        |-------------------------|---------------------|----------------------------|
        | name                    | `:`                 | Like operator              |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                          relationType:
                            type: string
                            enum:
                            - MOTHER
                            - FATHER
                            - SPOUSE
                            - FIRST_CHILD
                            - SECOND_CHILD
                            - THIRD_CHILD
                            - OTHER_CHILD
                            - OTHER
              example:
                content:
                - id: 990e865e-b612-4876-838b-6924a11797d8
                  name: Anak Kesepuluh
                  code: Anak Kesepuluh
                  relationType: OTHER_CHILD
                - id: 5f9338ad-f872-4f2f-bf15-07227afeed31
                  name: Anak Kesembilan
                  code: Anak Kesembilan
                  relationType: OTHER_CHILD
                - id: 8217b1e1-08b4-4767-8701-df60ba50f3b4
                  name: Anak Kedelapan
                  code: Anak Kedelapan
                  relationType: OTHER_CHILD
                - id: e17479f6-a3b3-4440-b13a-e162800db5a8
                  name: Anak Ketujuh
                  code: Anak Ketujuh
                  relationType: OTHER_CHILD
                - id: badf4b70-9d5c-460f-a00f-2180a7db1f80
                  name: Anak Keenam
                  code: Anak Keenam
                  relationType: OTHER_CHILD
                - id: 1f29f8ea-a7e9-11e6-80f5-76304dec7eb7
                  name: Anak Kelima
                  code: Anak Kelima
                  relationType: OTHER_CHILD
                - id: 1f29f624-a7e9-11e6-80f5-76304dec7eb7
                  name: Anak Keempat
                  code: Anak Keempat
                  relationType: OTHER_CHILD
                - id: 1f29f476-a7e9-11e6-80f5-76304dec7eb7
                  name: Anak Ketiga
                  code: Anak Ketiga
                  relationType: THIRD_CHILD
                - id: 1f29f1b0-a7e9-11e6-80f5-76304dec7eb7
                  name: Anak Kedua
                  code: Anak Kedua
                  relationType: SECOND_CHILD
                - id: 1f29efe4-a7e9-11e6-80f5-76304dec7eb7
                  name: Anak Pertama
                  code: Anak Pertama
                  relationType: FIRST_CHILD
                - id: 1f29ecd8-a7e9-11e6-80f5-76304dec7eb7
                  name: Suami / Istri
                  code: Suami / Istri
                  relationType: SPOUSE
                - id: 1f29ea4e-a7e9-11e6-80f5-76304dec7eb7
                  name: Ibu Kandung
                  code: Ibu Kandung
                  relationType: MOTHER
                - id: 1f29e7ec-a7e9-11e6-80f5-76304dec7eb7
                  name: Ayah Kandung
                  code: Ayah Kandung
                  relationType: FATHER
                - id: 1f29e486-a7e9-11e6-80f5-76304dec7eb7
                  name: Kontak Darurat
                  code: Kontak Darurat
                  relationType: OTHER
                totalPages: 1
                last: true
                totalElements: 14
                numberOfElements: 14
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 20
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/family-relations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.family_relations.list()"
  /core/v1/field-of-studies:
    get:
      tags:
      - master-data
      summary: Get Field Of Study
      description: Return the field of studies.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                |
          |--------------------|---------------------|--------------------------------------------------------------------------------------|
          | id                 | `:`                 | Equal operator with multiple values. Each value should separated with delimiters `;` |
        schema:
          type: string
        examples:
          one:
            summary: Search Field Of Studies by Multiple IDs
            value: id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;295b44b6-f435-11e6-bc64-92361f002671
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
              example:
                content:
                - id: 61d5ff6e-a5a4-11e6-80f5-76304dec7eb8
                  name: Computer Science
                  code: COMPSC
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: name
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/field-of-studies?page=0&size=10&query=id%3Ae18f5618-bc6c-11e6-80f5-76304dec7eb1%3B295b44b6-f435-11e6-bc64-92361f002671\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.field_of_studies.list(\n    page=0,\n    size=10,\n    query=\"id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;295b44b6-f435-11e6-bc64-92361f002671\",\n)"
  /core/v1/former-employee-income-employees:
    get:
      tags:
      - former-employee-income
      summary: Get Former Employee Income Employee
      description: |
        ### Search Query
        | Supported Keys | Supported Operators |Notes                                                                                       |
        | -------------- | ------------------- |--------------------------------------------------------------------------------------------|
        | paymentDate    | :<br>\><br><        | Equal operator<br>Greater than or equal to operator<br>Less than or equal to equal operator|
        | paid           | :                   | Equal operator                                                                             |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      description: List of former employee income employees
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Former employee income employee ID
                          formerEmployeeIncome:
                            type: object
                            properties:
                              id:
                                type: string
                                description: Former employee income ID
                              itemName:
                                type: string
                                description: Income item name
                              itemType:
                                type: string
                                description: Income item type
                              referenceDate:
                                type: string
                                format: date
                                description: Reference date
                              pph21Method:
                                type: string
                                description: PPH21 calculation method
                              minimumLastWorkingDate:
                                type: string
                                format: date
                                description: Minimum last working date
                              proportionalMethod:
                                type: string
                                description: Proportional calculation method
                              proportionalDays:
                                type: integer
                                description: Number of proportional days
                              formula:
                                type: string
                                description: Calculation formula
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          amount:
                            type: number
                            description: Income amount
                          lastWorkingDate:
                            type: string
                            format: date
                            description: Last working date
                          paymentDate:
                            type: string
                            format: date
                            description: Payment date
                          paymentMethod:
                            type: string
                            enum:
                            - CASH
                            - TRANSFER
                            - NONE
                            description: Payment method
                          totalThp:
                            type: number
                            description: Total take home pay
                          originalTax:
                            type: number
                            description: Original tax amount
                          penaltyTax:
                            type: number
                            description: Penalty tax amount
                          taxAllowance:
                            type: number
                            description: Tax allowance amount
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  formerEmployeeIncome:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    itemName: Bonus
                    itemType: EDITABLE
                    referenceDate: '2020-01-01'
                    pph21Method: GROSS
                    minimumLastWorkingDate: '2020-01-01'
                    proportionalMethod: BY_MONTH
                    proportionalDays: 28
                    formula: ''
                  employee:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                  amount: 700000
                  lastWorkingDate: '2020-01-01'
                  paymentDate: '2020-01-01'
                  paymentMethod: TRANSFER
                  totalThp: 600000
                  originalTax: 100000
                  penaltyTax: 0
                  taxAllowance: 0
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/former-employee-income-employees\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.former_employee_income_employees.list()"
  /core/v1/former-employee-incomes:
    get:
      tags:
      - former-employee-income
      summary: Get Former Employee Incomes
      description: |
        ### Search Query
        | Supported Keys         | Supported Operators | Notes                                                                                       |
        | ---------------------- | ------------------- | --------------------------------------------------------------------------------------------|
        | itemName               | :                   | Like operator<br><br>                                                                       |
        | itemType               | :                   | Equal operator                                                                              |
        | referenceDate          | :<br>\><br><        | Equal operator<br>Greater than or equal to operator<br>Less than or equal to equal operator |
        | pph21Method            | :                   | Equal operator                                                                              |
        | minimumLastWorkingDate | :<br>\><br><        | Equal operator<br>Greater than or equal to operator<br>Less than or equal to equal operator |
        | proportionalMethod     | :                   | Equal operator                                                                              |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      description: List of former employee incomes
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Former employee income ID
                          itemName:
                            type: string
                            description: Income item name
                          itemType:
                            type: string
                            description: Income item type
                          referenceDate:
                            type: string
                            format: date
                            description: Reference date
                          pph21Method:
                            type: string
                            description: PPH21 calculation method
                          minimumLastWorkingDate:
                            type: string
                            format: date
                            description: Minimum last working date
                          proportionalMethod:
                            type: string
                            description: Proportional calculation method
                          proportionalDays:
                            type: integer
                            description: Number of proportional days
                          formula:
                            type: string
                            description: Calculation formula
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  itemName: Bonus
                  itemType: EDITABLE
                  referenceDate: '2020-01-01'
                  pph21Method: GROSS
                  minimumLastWorkingDate: '2020-01-01'
                  proportionalMethod: BY_MONTH
                  proportionalDays: 28
                  formula: ''
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/former-employee-incomes\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.former_employee_incomes.list()"
  /core/v1/former-employee-incomes/{formerEmployeeIncomeId}/former-employee-income-employees:
    get:
      tags:
      - former-employee-income
      summary: Get Former Employee Income Employee By Former Employee Income Id
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes                                                                                       |
        | -------------- | ------------------- | ------------------------------------------------------------------------------------------- |
        | paymentDate    | :<br>\><br><        | Equal operator<br>Greater than or equal to operator<br>Less than or equal to equal operator |
        | paid           | :                   | Equal operator                                                                              |
      parameters:
      - in: path
        name: formerEmployeeIncomeId
        schema:
          type: string
        required: true
        example: d4e5f6a7-b8c9-0123-def0-12345678901c
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      description: List of former employee income employees
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Former employee income employee ID
                          formerEmployeeIncome:
                            type: object
                            properties:
                              id:
                                type: string
                                description: Former employee income ID
                              itemName:
                                type: string
                                description: Income item name
                              itemType:
                                type: string
                                description: Income item type
                              referenceDate:
                                type: string
                                format: date
                                description: Reference date
                              pph21Method:
                                type: string
                                description: PPH21 calculation method
                              minimumLastWorkingDate:
                                type: string
                                format: date
                                description: Minimum last working date
                              proportionalMethod:
                                type: string
                                description: Proportional calculation method
                              proportionalDays:
                                type: integer
                                description: Number of proportional days
                              formula:
                                type: string
                                description: Calculation formula
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          amount:
                            type: number
                            description: Income amount
                          lastWorkingDate:
                            type: string
                            format: date
                            description: Last working date
                          paymentDate:
                            type: string
                            format: date
                            description: Payment date
                          paymentMethod:
                            type: string
                            enum:
                            - CASH
                            - TRANSFER
                            - NONE
                            description: Payment method
                          totalThp:
                            type: number
                            description: Total take home pay
                          originalTax:
                            type: number
                            description: Original tax amount
                          penaltyTax:
                            type: number
                            description: Penalty tax amount
                          taxAllowance:
                            type: number
                            description: Tax allowance amount
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  formerEmployeeIncome:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    itemName: Bonus
                    itemType: EDITABLE
                    referenceDate: '2020-01-01'
                    pph21Method: GROSS
                    minimumLastWorkingDate: '2020-01-01'
                    proportionalMethod: BY_MONTH
                    proportionalDays: 28
                    formula: ''
                  employee:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                  amount: 700000
                  lastWorkingDate: '2020-01-01'
                  paymentDate: '2020-01-01'
                  paymentMethod: TRANSFER
                  totalThp: 600000
                  originalTax: 100000
                  penaltyTax: 0
                  taxAllowance: 0
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/former-employee-incomes/d4e5f6a7-b8c9-0123-def0-12345678901c/former-employee-income-employees\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.former_employee_incomes.former_employee_income_employees.list(\n    former_employee_income_id=\"d4e5f6a7-b8c9-0123-def0-12345678901c\"\n)"
  /core/v1/former-employee-incomes/{formerEmployeeIncomeId}/former-employee-income-employees/amounts:
    put:
      tags:
      - former-employee-income
      summary: Update Former Employee Income Employee By Former Employee Income Id
      description: Update the former employee income employee amounts by former employee income id.
      parameters:
      - in: path
        name: formerEmployeeIncomeId
        schema:
          type: string
        required: true
        example: d4e5f6a7-b8c9-0123-def0-12345678901c
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Employee income ID
                  amount:
                    type: number
                    description: Updated amount
                required:
                - id
                - amount
            example:
            - id: 79f537af-83b2-4a8b-851c-5d14ec046554
              amount: 9000000
            - id: 90f537af-83b2-4a8b-851c-5d14ec046554
              amount: 1000000
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/former-employee-incomes/d4e5f6a7-b8c9-0123-def0-12345678901c/former-employee-income-employees/amounts\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"id\": \"79f537af-83b2-4a8b-851c-5d14ec046554\",\n    \"amount\": 9000000\n  },\n  {\n    \"id\": \"90f537af-83b2-4a8b-851c-5d14ec046554\",\n    \"amount\": 1000000\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import FormerEmployeeIncomeEmployeeAmountUpdateRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.former_employee_incomes.former_employee_income_employees.amounts.update_many(\n    former_employee_income_id=\"d4e5f6a7-b8c9-0123-def0-12345678901c\",\n    former_employee_income_employee_amount_update_list_request=[\n        FormerEmployeeIncomeEmployeeAmountUpdateRequest(\n            id=\"79f537af-83b2-4a8b-851c-5d14ec046554\", amount=9000000\n        ),\n        FormerEmployeeIncomeEmployeeAmountUpdateRequest(\n            id=\"90f537af-83b2-4a8b-851c-5d14ec046554\", amount=1000000\n        ),\n    ],\n)"
  /core/v1/former-employee-incomes/{id}:
    get:
      tags:
      - former-employee-income
      summary: Get Former Employee Income by Id
      description: Return the former employee income by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Former employee income ID
                  itemName:
                    type: string
                    description: Income item name
                  itemType:
                    type: string
                    description: Income item type
                  referenceDate:
                    type: string
                    format: date
                    description: Reference date
                  pph21Method:
                    type: string
                    description: PPH21 calculation method
                  minimumLastWorkingDate:
                    type: string
                    format: date
                    description: Minimum last working date
                  proportionalMethod:
                    type: string
                    description: Proportional calculation method
                  proportionalDays:
                    type: integer
                    description: Number of proportional days
                  formula:
                    type: string
                    description: Calculation formula
              example:
                id: 79f537af-83b2-4a8b-851c-5d14ec046554
                itemName: Bonus
                itemType: EDITABLE
                referenceDate: '2020-01-01'
                pph21Method: GROSS
                minimumLastWorkingDate: '2020-01-01'
                proportionalMethod: BY_MONTH
                proportionalDays: 28
                formula: ''
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/former-employee-incomes/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.former_employee_incomes.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/identity-cards:
    get:
      tags:
      - master-data
      summary: Get Identity Card
      description: |
        ### Search Query
        | Supported Keys          | Supported Operators | Notes                      |
        |-------------------------|---------------------|----------------------------|
        | name                    | `:`                 | Like operator              |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          identityCardType:
                            type: string
              example:
                content:
                - id: 73dabc7c-a7da-11e6-80f5-76304dec7eb7
                  code: SIMC
                  name: SIM C
                  identityCardType: OTHER
                - id: 73daac7c-a7da-11e6-80f5-76304dec7eb7
                  code: SIMA
                  name: SIM A
                  identityCardType: OTHER
                - id: 73da9d40-a7da-11e6-80f5-76304dec7eb7
                  code: PASSP
                  name: PASSPORT
                  identityCardType: PASSPORT
                - id: 73da99da-a7da-11e6-80f5-76304dec7eb7
                  code: KTP
                  name: KTP
                  identityCardType: KTP
                totalPages: 1
                last: true
                totalElements: 4
                numberOfElements: 4
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/identity-cards\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.identity_cards.list()"
  /core/v1/institutions:
    get:
      tags:
      - master-data
      summary: Get Institutions
      description: Return the institutions.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                |
          |--------------------|---------------------|--------------------------------------------------------------------------------------|
          | id                 | `:`                 | Equal operator with multiple values. Each value should separated with delimiters `;` |
        schema:
          type: string
        examples:
          one:
            summary: Search Institutions by Multiple IDs
            value: id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;37364434-f4c9-11e6-bc64-92361f002671
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
              example:
                content:
                - id: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                  name: University of Indonesia
                  code: UI
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: name
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/institutions?page=0&size=10&query=id%3Ae18f5618-bc6c-11e6-80f5-76304dec7eb1%3B37364434-f4c9-11e6-bc64-92361f002671\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.institutions.list(\n    page=0,\n    size=10,\n    query=\"id:e18f5618-bc6c-11e6-80f5-76304dec7eb1;37364434-f4c9-11e6-bc64-92361f002671\",\n)"
  /core/v1/job-experiences/approvals:
    get:
      tags:
      - job-experience
      summary: Get Job Experience Approvals
      description: Return paginated job experience approvals across all employees.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                |
          |--------------------|---------------------|--------------------------------------------------------------------------------------|
          | employee.id        | `:`                 | Equal operator with multiple values. Each value should separated with delimiters `;` |
          | approvalStatus     | `:`                 | Equal operator. Values: APPROVED, REJECTED, OPEN, WAITING_FOR_APPROVAL               |
        schema:
          type: string
        examples:
          one:
            summary: Search by employee ID
            value: employee.id:0ab1c2d3-e4f5-6789-0123-456789abcdef
          two:
            summary: Search by multiple employee IDs
            value: employee.id:0ab1c2d3-e4f5-6789-0123-456789abcdef;f51a21dd-9055-4a42-aeee-1db1a64d2598
          three:
            summary: Search by approval status
            value: approvalStatus:WAITING_FOR_APPROVAL
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        allOf:
                        - type: object
                          properties:
                            id:
                              type: string
                            companyName:
                              type: string
                            jobTitle:
                              type: string
                            jobLevel:
                              type: string
                            startDate:
                              type: string
                              format: date
                            endDate:
                              type: string
                              format: date
                            companyBusiness:
                              type: string
                            terminationReasonInput:
                              type: string
                            companyLocation:
                              type: string
                            lastSalary:
                              type: number
                            employee:
                              type: object
                              properties:
                                id:
                                  type: string
                                identificationNumber:
                                  type: string
                                name:
                                  type: string
                                employmentStatus:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    employmentStatusNumber:
                                      type: string
                                    effectiveDate:
                                      type: string
                                      format: date
                                    organization:
                                      type: object
                                      allOf:
                                      - type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      - type: object
                                        properties:
                                          type:
                                            type: string
                                            enum:
                                            - STRUCTURAL
                                            - FUNCTIONAL
                                          company:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                    jobLevel:
                                      type: object
                                      allOf:
                                      - type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                      - type: object
                                        properties:
                                          level:
                                            type: integer
                                    employmentType:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                    jobTitle:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                    location:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                    costCenter:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                    position:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                            references:
                              type: array
                              items:
                                type: string
                        - type: object
                          properties:
                            jobExperience:
                              type: object
                              allOf:
                              - type: object
                                properties:
                                  id:
                                    type: string
                                  companyName:
                                    type: string
                                  jobTitle:
                                    type: string
                                  jobLevel:
                                    type: string
                                  startDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                                  companyBusiness:
                                    type: string
                                  terminationReasonInput:
                                    type: string
                                  companyLocation:
                                    type: string
                                  lastSalary:
                                    type: number
                                  employee:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      identificationNumber:
                                        type: string
                                      name:
                                        type: string
                                      employmentStatus:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          employmentStatusNumber:
                                            type: string
                                          effectiveDate:
                                            type: string
                                            format: date
                                          organization:
                                            type: object
                                            allOf:
                                            - type: object
                                              properties:
                                                id:
                                                  type: string
                                                code:
                                                  type: string
                                                name:
                                                  type: string
                                            - type: object
                                              properties:
                                                type:
                                                  type: string
                                                  enum:
                                                  - STRUCTURAL
                                                  - FUNCTIONAL
                                                company:
                                                  type: object
                                                  properties:
                                                    id:
                                                      type: string
                                                    code:
                                                      type: string
                                                    name:
                                                      type: string
                                          jobLevel:
                                            type: object
                                            allOf:
                                            - type: object
                                              properties:
                                                id:
                                                  type: string
                                                code:
                                                  type: string
                                                name:
                                                  type: string
                                            - type: object
                                              properties:
                                                level:
                                                  type: integer
                                          employmentType:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                          jobTitle:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                          location:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                          costCenter:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                          position:
                                            type: object
                                            properties:
                                              id:
                                                type: string
                                              code:
                                                type: string
                                              name:
                                                type: string
                                  references:
                                    type: array
                                    items:
                                      type: string
                            approvalStatus:
                              type: string
                              enum:
                              - APPROVED
                              - REJECTED
                              - OPEN
                              - WAITING_FOR_APPROVAL
                            rejectionReason:
                              type: string
                            action:
                              type: string
                              enum:
                              - NONE
                              - ADD
                              - EDIT
                              - DELETE
                              - DELETE_ALL
              example:
                content:
                - id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                  companyName: PT Acme Corp
                  jobTitle: Software Engineer
                  jobLevel: Senior
                  startDate: '2020-01-15'
                  endDate: '2023-06-30'
                  companyBusiness: Technology
                  terminationReasonInput: Career growth
                  companyLocation: Jakarta
                  lastSalary: 15000000
                  employee:
                    id: 0ab1c2d3-e4f5-6789-0123-456789abcdef
                    identificationNumber: ID-0001
                    name: John Doe
                    employmentStatus:
                      id: b2c3d4e5-f6a7-8901-bcde-f12345678901
                      employmentStatusNumber: ES-0001
                      effectiveDate: '2020-01-15'
                      organization:
                        id: c3d4e5f6-a7b8-9012-cdef-123456789012
                        name: Engineering
                        code: ENG
                        type: STRUCTURAL
                        company:
                          id: d4e5f6a7-b8c9-0123-defa-234567890123
                          name: PT Acme Corp
                          code: ACME
                      jobLevel:
                        id: e5f6a7b8-c9d0-1234-efab-345678901234
                        name: Senior
                        code: SR
                        level: 5
                      employmentType:
                        id: f6a7b8c9-d0e1-2345-fabc-456789012345
                        name: Permanent
                      jobTitle:
                        id: a7b8c9d0-e1f2-3456-abcd-567890123456
                        name: Software Engineer
                      location:
                        id: b8c9d0e1-f2a3-4567-bcde-678901234567
                        name: Jakarta
                      costCenter:
                        id: c9d0e1f2-a3b4-5678-cdef-234567890123
                        code: CC-001
                        name: Technology Cost Center
                      position:
                        id: d0e1f2a3-b4c5-6789-def0-345678901234
                        code: POS-001
                        name: Senior Position
                  references:
                  - ref-123
                  - ref-456
                  jobExperience:
                    id: e1f2a3b4-c5d6-7890-ef01-456789012345
                    companyName: Previous Company
                    jobTitle: Junior Developer
                    jobLevel: Junior
                    startDate: '2018-01-01'
                    endDate: '2020-01-14'
                  approvalStatus: WAITING_FOR_APPROVAL
                  rejectionReason: ''
                  action: ADD
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/job-experiences/approvals?page=0&size=10&query=employee.id%3A0ab1c2d3-e4f5-6789-0123-456789abcdef\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.job_experiences.approvals.list(\n    page=0, size=10, query=\"employee.id:0ab1c2d3-e4f5-6789-0123-456789abcdef\"\n)"
  /core/v1/job-levels:
    get:
      tags:
      - organization
      summary: Get Job Level
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes                                                                             |
        |----------------|---------------------|-----------------------------------------------------------------------------------|
        | name           | `:`                 | Like operator                                                                     |
        | code           | `:`                 | Like operator                                                                     |
        | jobPosistionId | `:`                 | Like operator                                                                     |
        | level          | `:`<br/>`>`<br/>`<` | Equal operator<br/>Greater than or equal operator<br/>Less than or equal operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          jobPosition:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          level:
                            type: number
                          effectiveDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
              example:
                content:
                - id: d1cb34e4-d7e8-11e6-bf26-cec0c932ce01
                  code: '11'
                  name: Senior Supervisor
                  effectiveDate: '2024-01-01'
                  endDate: '9999-12-31'
                  jobPosition:
                    id: 4a166410-d7e8-11e6-bf26-cec0c932ce01
                    code: KANIT
                    name: KEPALA UNIT
                  level: 1
                - id: d1cb312e-d7e8-11e6-bf26-cec0c932ce01
                  code: '10'
                  name: Senior Supervisor
                  effectiveDate: '2024-01-01'
                  endDate: '2024-12-31'
                  jobPosition:
                    id: 4a166410-d7e8-11e6-bf26-cec0c932ce01
                    code: KANIT
                    name: KEPALA UNIT
                  level: 1
                - id: d1cb2fda-d7e8-11e6-bf26-cec0c932ce01
                  code: '09'
                  name: Supervisor
                  effectiveDate: '2024-01-01'
                  endDate: '9999-12-31'
                  jobPosition:
                    id: 4a166410-d7e8-11e6-bf26-cec0c932ce01
                    code: KANIT
                    name: KEPALA UNIT
                  level: 1
                - id: d1cb2e7c-d7e8-11e6-bf26-cec0c932ce01
                  code: '08'
                  name: Junior Supervisor
                  effectiveDate: '2024-01-01'
                  endDate: '2024-12-31'
                  jobPosition:
                    id: 4a166410-d7e8-11e6-bf26-cec0c932ce01
                    code: KANIT
                    name: KEPALA UNIT
                  level: 1
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 4
                totalElements: 4
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/job-levels\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.job_levels.list()"
    post:
      tags:
      - organization
      summary: Create Job Level
      description: Create a job level.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  jobPosition:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  level:
                    type: number
                  effectiveDate:
                    type: string
                    format: date
                  endDate:
                    type: string
                    format: date
              example:
                id: 2ee5526d-fe72-4a25-8280-223c785701dc
                code: NEW
                name: NEW
                effectiveDate: '2024-01-01'
                endDate: '9999-12-31'
                jobPosition:
                  id: 4a166550-d7e8-11e6-bf26-cec0c932ce01
                  code: PELAKSANA
                  name: STAFF PELAKSANA
                level: 1
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                level:
                  type: number
                  minimum: 1
                  maximum: 99
                jobPositionId:
                  type: string
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                effectiveDate:
                  type: string
                  format: date
                  description: Effective date for the job level. Defaults to minimum date if not provided.
                endDate:
                  type: string
                  format: date
                  description: End date for the job level
              required:
              - code
              - level
              - name
              - effectiveDate
            example:
              code: NEW
              level: 1
              jobPositionId: 4a166550-d7e8-11e6-bf26-cec0c932ce01
              name: NEW
              effectiveDate: '2024-01-01'
              endDate: '9999-12-31'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/job-levels\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"NEW\",\n  \"level\": 1,\n  \"jobPositionId\": \"4a166550-d7e8-11e6-bf26-cec0c932ce01\",\n  \"name\": \"NEW\",\n  \"effectiveDate\": \"2024-01-01\",\n  \"endDate\": \"9999-12-31\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import JobLevelRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.job_levels.create(\n    job_level_request=JobLevelRequest(\n        code=\"NEW\",\n        level=1,\n        job_position_id=\"4a166550-d7e8-11e6-bf26-cec0c932ce01\",\n        name=\"NEW\",\n        effective_date=\"2024-01-01\",\n        end_date=\"9999-12-31\",\n    )\n)"
  /core/v1/job-titles:
    get:
      tags:
      - organization
      summary: Get Job Titles
      description: |
        minJobLevel and maxJobLevel are deprecated.
        check Tenant Job Hierarchy Policy setting, it may cause error to this endpoint
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys | Supported Operators | Notes                      |
          |----------------|---------------------|----------------------------|
          | name           | `:`                 | Like operator              |
          | code           | `:`                 | Like operator              |
          | minJobLevelId  | `:`                 | Equal operator(Deprecated) |
          | maxJobLevelId  | `:`                 | Equal operator(Deprecated) |
        schema:
          type: string
        example: name:Manager
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
                          effectiveDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
                          minJobLevel:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              jobPosition:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              level:
                                type: number
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
                          maxJobLevel:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              jobPosition:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              level:
                                type: number
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
              example:
                content:
                - id: ff6ba12f-adc2-4d9e-910c-9a9a91b062b9
                  code: API
                  name: API
                  effectiveDate: '2020-11-11'
                  endDate: '9999-12-31'
                  minJobLevel:
                    id: b2c92a5d-a707-44d4-88fa-55bda8450001
                    code: 021-test
                    name: Staff test
                    effectiveDate: '2020-11-11'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: 4a166410-d7e8-11e6-bf26-cec0c932ce01
                      code: KANIT
                      name: KEPALA UNIT
                    level: 5
                  maxJobLevel:
                    id: b2c92a5d-a707-44d4-88fa-55bda8450002
                    code: 020-test
                    name: Senior Staff
                    effectiveDate: '2020-11-11'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: 4a166410-d7e8-11e6-bf26-cec0c932ce01
                      code: KANIT
                      name: KEPALA UNIT
                    level: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                size: 1
                number: 0
                last: true
                sort:
                - direction: ASC
                  property: id
                first: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/job-titles?page=0&size=10&query=name%3AManager\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.job_titles.list(page=0, size=10, query=\"name:Manager\")"
    post:
      deprecated: true
      tags:
      - organization
      summary: Create Job Title
      description: |
        ⚠️ **This endpoint is deprecated.**  
            Please use [Create Job Title with Job Levels](https://api-docs.catapa.com/#tag/organization/operation/createJobTitleWithJobLevels) instead.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  code:
                    type: string
                  effectiveDate:
                    type: string
                    format: date
                  endDate:
                    type: string
                    format: date
                  minJobLevel:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      jobPosition:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      level:
                        type: number
                      effectiveDate:
                        type: string
                        format: date
                      endDate:
                        type: string
                        format: date
                  maxJobLevel:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      jobPosition:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      level:
                        type: number
                      effectiveDate:
                        type: string
                        format: date
                      endDate:
                        type: string
                        format: date
              example:
                id: da299f77-d2d3-4177-9e9e-8047218a375b
                code: NEW
                name: NEW
                effectiveDate: '2020-11-11'
                endDate: '9999-12-31'
                minJobLevel:
                  id: d1cb4b96-d7e8-11e6-bf26-cec0c932ce01
                  code: Level 1
                  name: Level 1
                  effectiveDate: '2020-11-11'
                  endDate: '9999-12-31'
                  jobPosition:
                    id: 4a16682a-d7e8-11e6-bf26-cec0c932ce01
                    code: BOD/BOC
                    name: BOD/BOC
                  level: 1
                maxJobLevel:
                  id: d1cb4b96-d7e8-11e6-bf26-cec0c932ce01
                  code: Level 2
                  name: Level 2
                  effectiveDate: '2020-11-11'
                  endDate: '9999-12-31'
                  jobPosition:
                    id: 4a16682a-d7e8-11e6-bf26-cec0c932ce01
                    code: BOD/BOC
                    name: BOD/BOC
                  level: 1
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                minJobLevelId:
                  type: string
                  deprecated: true
                maxJobLevelId:
                  type: string
                  deprecated: true
                effectiveDate:
                  type: string
                  format: date
                  description: if null, it will be set to 1970-01-01
                endDate:
                  type: string
                  format: date
              required:
              - code
              - name
            example:
              code: NEW
              name: NEW
              minJobLevelId: d1cb4b96-d7e8-11e6-bf26-cec0c932ce01
              maxJobLevelId: d1cb4b96-d7e8-11e6-bf26-cec0c932ce0
              effectiveDate: '2020-11-11'
              endDate: '9999-12-31'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/job-titles\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"NEW\",\n  \"name\": \"NEW\",\n  \"minJobLevelId\": \"d1cb4b96-d7e8-11e6-bf26-cec0c932ce01\",\n  \"maxJobLevelId\": \"d1cb4b96-d7e8-11e6-bf26-cec0c932ce0\",\n  \"effectiveDate\": \"2020-11-11\",\n  \"endDate\": \"9999-12-31\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import JobTitleRequestDeprecated\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.job_titles.create(\n    job_title_request_deprecated=JobTitleRequestDeprecated(\n        code=\"NEW\",\n        name=\"NEW\",\n        min_job_level_id=\"d1cb4b96-d7e8-11e6-bf26-cec0c932ce01\",\n        max_job_level_id=\"d1cb4b96-d7e8-11e6-bf26-cec0c932ce0\",\n        effective_date=\"2020-11-11\",\n        end_date=\"9999-12-31\",\n    )\n)"
  /core/v1/job-title-levels:
    get:
      tags:
      - organization
      summary: Get Job Title Job Level Mappings
      description: |
        minJobLevel and MaxJobLevel are deprecated.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys | Supported Operators | Notes                                                                                     |
          |----------------|---------------------|-------------------------------------------------------------------------------------------|
          | jobLevel.code  | `:`                 | Like operator                                                                             |
          | jobLevel.name  | `:`                 | Like operator                                                                             |
          | jobTitle.id    | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | jobLevel.id    | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
        schema:
          type: string
        examples:
          one:
            summary: Search Job Title-Job Level Mappings by Multiple Job Title Ids
            value: jobTitle.id:ff6ba12f-adc2-4d9e-910c-9a9a91b062b9;ff6ba12f-adc2-4d9e-910c-9a9a91b06200
          two:
            summary: Search Job Title-Job Level Mappings by Multiple Job Level Ids
            value: jobLevel.id:d1cb34e4-d7e8-11e6-bf26-cec0c932ce01;d1cb34e4-d7e8-11e6-bf26-cec0c932ce00
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          jobTitle:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              code:
                                type: string
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
                              minJobLevel:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  jobPosition:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  level:
                                    type: number
                                  effectiveDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                              maxJobLevel:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  jobPosition:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  level:
                                    type: number
                                  effectiveDate:
                                    type: string
                                    format: date
                                  endDate:
                                    type: string
                                    format: date
                          jobLevel:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              jobPosition:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              level:
                                type: number
                              effectiveDate:
                                type: string
                                format: date
                              endDate:
                                type: string
                                format: date
              example:
                content:
                - jobTitle:
                    id: ff6ba12f-adc2-4d9e-910c-9a9a91b062b9
                    code: API
                    name: API
                    effectiveDate: '2020-11-11'
                    endDate: '9999-12-31'
                    minJobLevel:
                      id: b2c92a5d-a707-44d4-88fa-55bda8450001
                      code: 021-test
                      name: Staff test
                      effectiveDate: '2020-11-11'
                      endDate: '9999-12-31'
                      jobPosition:
                        id: 4a166410-d7e8-11e6-bf26-cec0c932ce01
                        code: KANIT
                        name: KEPALA UNIT
                      level: 5
                    maxJobLevel:
                      id: b2c92a5d-a707-44d4-88fa-55bda8450002
                      code: 020-test
                      name: Senior Staff
                      effectiveDate: '2020-11-11'
                      endDate: '2020-12-31'
                      jobPosition:
                        id: 4a166410-d7e8-11e6-bf26-cec0c932ce01
                        code: KANIT
                        name: KEPALA UNIT
                      level: 10
                  jobLevel:
                    id: d1cb34e4-d7e8-11e6-bf26-cec0c932ce01
                    code: '11'
                    name: Senior Supervisor
                    effectiveDate: '2024-01-01'
                    endDate: '9999-12-31'
                    jobPosition:
                      id: 4a166410-d7e8-11e6-bf26-cec0c932ce01
                      code: KANIT
                      name: KEPALA UNIT
                    level: 1
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort:
                - direction: ASC
                  property: id
                first: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/job-title-levels?page=0&size=10&query=jobTitle.id%3Aff6ba12f-adc2-4d9e-910c-9a9a91b062b9%3Bff6ba12f-adc2-4d9e-910c-9a9a91b06200\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.job_title_levels.list(\n    page=0,\n    size=10,\n    query=\"jobTitle.id:ff6ba12f-adc2-4d9e-910c-9a9a91b062b9;ff6ba12f-adc2-4d9e-910c-9a9a91b06200\",\n)"
  /core/v1/kpps:
    get:
      tags:
      - tax
      summary: Get Kpp
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes         |
        | -------------- | ------------------- | ------------- |
        | name           | :                   | Like operator |
        | code           | :                   | Like operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      description: List of KPPs
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            description: KPP unique identifier
                          code:
                            type: string
                            description: KPP code
                          name:
                            type: string
                            description: KPP name
                          address:
                            type: string
                            description: KPP address
                          responsiblePersonName:
                            type: string
                            description: Name of the responsible person
                          responsiblePersonNpwp:
                            type: string
                            description: NPWP of the responsible person
                          responsiblePersonJobTitle:
                            type: string
                            description: Job title of the responsible person
                          kppStatus:
                            type: string
                            description: Status of the KPP
              example:
                content:
                - id: string
                  code: string
                  name: string
                  address: string
                  responsiblePersonName: string
                  responsiblePersonNpwp: string
                  responsiblePersonJobTitle: string
                  kppStatus: string
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/kpps\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.kpps.list()"
  /core/v1/location-groups:
    get:
      tags:
      - organization
      summary: Get Location Group
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes                      |
        |----------------|---------------------|----------------------------|
        | name           | `:`                 | Like operator              |
        | code           | `:`                 | Like operator              |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
              example:
                content:
                - id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                  code: LG
                  name: Location Group
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/location-groups\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.location_groups.list()"
  /core/v1/locations:
    get:
      tags:
      - organization
      summary: Get Location
      description: Return the locations.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search query  
          | Supported Keys    | Supported Operators | Notes                                                                                                              |
          |-------------------|---------------------|--------------------------------------------------------------------------------------------------------------------|
          | name              | `:`                 | Like operator                                                                                                      |
          | code              | `:`                 | Like operator                                                                                                      |
          | zipCode           | `:`                 | Equal operator                                                                                                     |
          | phone             | `:`                 | Equal operator                                                                                                     |
          | address           | `:`                 | Equal operator                                                                                                     |
          | locationGroupId   | `:`                 | Equal operator                                                                                                     |
          | cityId            | `:`                 | Equal operator                                                                                                     |
          | endDateIsNull     | `:`                 | Use `true` or `false` to filter locations with null or non-null end date respectively.                             |
          | effectiveDate     | `>` , `<`           | Use to filter locations effective after or before the specified date.                                              |
          | endDate           | `>` , `<`           | Use to filter locations ending after or before the specified date.                                                 |
        schema:
          type: string
        examples:
          one:
            summary: Search a location by code
            value: code:JKT
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          locationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          city:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          latitude:
                            type: number
                            format: float
                          longitude:
                            type: number
                            format: float
                          headquarter:
                            type: boolean
                          address:
                            type: string
                          phone:
                            type: string
                          zipCode:
                            type: string
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD, effective date of the location
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD, end date of the location
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                              code:
                                type: string
                              name:
                                type: string
              example:
                content:
                - id: a31aa166-70be-4303-81e4-5ada93b5213a
                  code: JOG
                  name: Yogyakarta
                  locationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: LG
                    name: Location Group
                  city:
                    id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    code: '34.71'
                    name: Kota Yogyakarta
                    state:
                      id: 71f5a5fc-a699-11e6-80f5-76304dec7eb7
                      name: Special Region Yogyakarta
                      code: '34'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        name: Indonesia
                        code: IDN
                  latitude: -7.7955798
                  longitude: 110.3694896
                  address: Perum Jombor Kavling Indah, Jl. Amerta VIII No. 56, Sinduadi, Mlati, Sleman
                  phone: '+62274881234'
                  zipCode: '55284'
                  headquarter: false
                  effectiveDate: '2023-01-01'
                  endDate: '9999-12-31'
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: COMP-001
                    name: PT. CATAPA
                - id: f4eaf74f-3e63-414f-b7be-54c46902407f
                  code: SBY
                  name: Surabaya
                  locationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb8
                    code: LG2
                    name: Location Group 2
                  city:
                    id: 2d1ee1fe-a6ea-11e6-80f5-76304dec7eb7
                    code: '35.78'
                    name: Kota Surabaya
                    state:
                      id: 71f5a7a0-a699-11e6-80f5-76304dec7eb7
                      name: East Java
                      code: '35'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        name: Indonesia
                        code: IDN
                  latitude: -7.2574719
                  longitude: 112.7520883
                  address: Jl. Kedung Doro No.34, Sawahan, Kec. Sawahan
                  phone: '+62315678901'
                  zipCode: '60251'
                  headquarter: false
                  effectiveDate: '2023-02-01'
                  endDate: '9999-12-31'
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb8
                    code: COMP-002
                    name: PT. CATAPA II
                - id: 7b43bb37-fed4-4d76-9838-221ec23647d1
                  code: DPS
                  name: Denpasar
                  locationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb9
                    code: LG3
                    name: Location Group 3
                  city:
                    id: 2d1ee384-a6ea-11e6-80f5-76304dec7eb7
                    code: '51.71'
                    name: Kota Denpasar
                    state:
                      id: 71f5a926-a699-11e6-80f5-76304dec7eb7
                      name: Bali
                      code: '51'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        name: Indonesia
                        code: IDN
                  latitude: -8.6704582
                  longitude: 115.2126293
                  address: Jl. Tukad Musi IIIB - Panjer
                  phone: '+62361234567'
                  zipCode: '80361'
                  headquarter: false
                  effectiveDate: '2023-03-01'
                  endDate: '9999-12-31'
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb9
                    code: COMP-003
                    name: PT. CATAPA III
                - id: 763a52e7-c386-479a-b330-0d6cb64064de
                  code: BDG
                  name: Bandung
                  locationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7ec0
                    code: LG4
                    name: Location Group 4
                  city:
                    id: 2d1eaaf4-a6ea-11e6-80f5-76304dec7eb7
                    code: '32.73'
                    name: Kota Bandung
                    state:
                      id: 71f5a2d2-a699-11e6-80f5-76304dec7eb7
                      name: West Java
                      code: '32'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        name: Indonesia
                        code: IDN
                  latitude: -6.9174639
                  longitude: 107.6191228
                  address: Jl. Dr. Otten No.10
                  phone: '+62227890123'
                  zipCode: '40132'
                  headquarter: false
                  effectiveDate: '2023-04-01'
                  endDate: '2024-12-31'
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7ec0
                    code: COMP-004
                    name: PT. CATAPA IV
                - id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                  code: JKT
                  name: Jakarta
                  locationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7ec1
                    code: LG5
                    name: Location Group 5
                  city:
                    id: 2d1e9f5a-a6ea-11e6-80f5-76304dec7eb7
                    code: '31.73'
                    name: Kota Adm. Jakarta Barat
                    state:
                      id: 71f59dbe-a699-11e6-80f5-76304dec7eb7
                      name: Jakarta Special Capital Region
                      code: '31'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        name: Indonesia
                        code: IDN
                  latitude: -6.1753924
                  longitude: 106.8271528
                  address: Menara Citicon, 17th Floor, Jl. Letjen. S. Parman Kav 72
                  phone: '+62214567890'
                  zipCode: '11410'
                  headquarter: true
                  effectiveDate: '2023-01-01'
                  endDate: '2024-05-31'
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7ec1
                    code: COMP-005
                    name: PT. CATAPA V
                totalPages: 1
                last: true
                totalElements: 5
                numberOfElements: 5
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/locations?page=0&size=10&query=code%3AJKT\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.locations.list(page=0, size=10, query=\"code:JKT\")"
    post:
      tags:
      - organization
      summary: Create Location
      description: Create a location.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  locationGroup:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  city:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      state:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          country:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              callingCode:
                                type: string
                              taxTreaty:
                                type: boolean
                  latitude:
                    type: number
                    format: float
                  longitude:
                    type: number
                    format: float
                  headquarter:
                    type: boolean
                  address:
                    type: string
                  phone:
                    type: string
                  zipCode:
                    type: string
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD, effective date of the location
                  endDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD, end date of the location
                  company:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      code:
                        type: string
                      name:
                        type: string
              example:
                id: 1895eb60-1f5d-44d6-9885-95734a0f9fad
                code: CAT88
                name: Catapa HQ
                locationGroup:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                  code: LG
                  name: Location Group
                city:
                  id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                  code: '34.71'
                  name: Kota Yogyakarta
                  state:
                    id: 71f5a5fc-a699-11e6-80f5-76304dec7eb7
                    name: Special Region Yogyakarta
                    code: '34'
                    country:
                      id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                      name: Indonesia
                      code: IDN
                latitude: 23.1029437563
                longitude: 32.8452647254
                address: Jl. Kedung Doro No.32
                phone: '+62476275642743'
                zipCode: '55284'
                headquarter: false
                effectiveDate: '2023-06-01'
                endDate: '9999-12-31'
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                locationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                city:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                latitude:
                  type: number
                longitude:
                  type: number
                address:
                  type: string
                  maxLength: 65535
                phone:
                  type: string
                  maxLength: 255
                  pattern: ^[+]{1}[0-9-() ]+
                  description: e.g. `+6281234567890`
                zipCode:
                  type: string
                  maxLength: 5
                  description: Numeric
                effectiveDate:
                  type: string
                  format: date
                  description: The date when this location becomes effective
                endDate:
                  type: string
                  format: date
                  description: The date when this location is no longer effective. If null, means this location is still effective
                headquarter:
                  type: boolean
                  description: If value is true, will automatically update headquarter in company profile
              required:
              - code
              - name
              - city
              - effectiveDate
              - headquarter
            example:
              code: CAT88
              name: Catapa HQ
              locationGroup:
                id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
              city:
                id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
              latitude: 23.1029437563
              longitude: 32.8452647254
              address: Jl. Kedung Doro No.32
              phone: '+62476275642743'
              zipCode: '55284'
              headquarter: false
              effectiveDate: '2023-06-01'
              endDate: '9999-12-31'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/locations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"CAT88\",\n  \"name\": \"Catapa HQ\",\n  \"locationGroup\": {\n    \"id\": \"61d5f69a-a5a4-1111-80f5-76304dec7eb7\"\n  },\n  \"city\": {\n    \"id\": \"2d1ecc14-a6ea-11e6-80f5-76304dec7eb7\"\n  },\n  \"latitude\": 23.1029437563,\n  \"longitude\": 32.8452647254,\n  \"address\": \"Jl. Kedung Doro No.32\",\n  \"phone\": \"+62476275642743\",\n  \"zipCode\": \"55284\",\n  \"effectiveDate\": \"2023-06-01\",\n  \"endDate\": \"9999-12-31\",\n  \"headquarter\": false\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest, LocationCreateRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.locations.create(\n    location_create_request=LocationCreateRequest(\n        code=\"CAT88\",\n        name=\"Catapa HQ\",\n        location_group=IdRequest(id=\"61d5f69a-a5a4-1111-80f5-76304dec7eb7\"),\n        city=IdRequest(id=\"2d1ecc14-a6ea-11e6-80f5-76304dec7eb7\"),\n        latitude=23.1029437563,\n        longitude=32.8452647254,\n        address=\"Jl. Kedung Doro No.32\",\n        phone=\"+62476275642743\",\n        zip_code=\"55284\",\n        effective_date=\"2023-06-01\",\n        end_date=\"9999-12-31\",\n        headquarter=False,\n    )\n)"
  /core/v1/sub-locations:
    get:
      tags:
      - organization
      summary: Get Sub Location
      description: Return the sub locations.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys  | Supported Operators | Notes                                                                                         |
          |-----------------|---------------------|-----------------------------------------------------------------------------------------------|
          | id              | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter     |
          | name            | `:`                 | Like operator                                                                                 |
          | code            | `:`                 | Like operator                                                                                 |
          | location.id     | `:`                 | Equal operator                                                                                |
          | endDateIsNull   | `:`                 | Use `true` or `false` to filter sub-locations with null or non-null end date respectively.    |
          | effectiveDate   | `>` , `<`           | Use to filter sub-locations effective after or before the specified date.                     |
          | endDate         | `>` , `<`           | Use to filter sub-locations ending after or before the specified date.                        |
        schema:
          type: string
        examples:
          one:
            summary: Search a sub-location by ID
            value: id:a31aa166-70be-4303-81e4-5ada93b5213a
          two:
            summary: Search sub-locations by location ID
            value: location.id:61d5f69a-a5a4-1111-80f5-76304dec7eb7
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          location:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD or null when ongoing
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD or null when ongoing
              example:
                content:
                - id: a31aa166-70be-4303-81e4-5ada93b5213a
                  code: FL-1
                  name: First Floor
                  location:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: JKT
                    name: Jakarta
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                      code: COMP-001
                      name: PT. CATAPA
                    effectiveDate: '2023-01-01'
                    endDate: '9999-12-31'
                  effectiveDate: '2023-01-01'
                  endDate: '2023-12-31'
                - id: f4eaf74f-3e63-414f-b7be-54c46902407f
                  code: FL-2
                  name: Second Floor
                  location:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: JKT
                    name: Jakarta
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb8
                      code: COMP-002
                      name: PT. CATAPA II
                    effectiveDate: '2023-01-01'
                    endDate: '9999-12-31'
                  effectiveDate: '2023-01-01'
                  endDate: '9999-12-31'
                - id: 7b43bb37-fed4-4d76-9838-221ec23647d1
                  code: FL-3
                  name: Third Floor
                  location:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: JKT
                    name: Jakarta
                    company:
                      id: 61d5f69a-a5a4-1111-80f5-76304dec7eb9
                      code: COMP-003
                      name: PT. CATAPA III
                    effectiveDate: '2023-01-01'
                    endDate: '2023-12-31'
                  effectiveDate: '2023-01-01'
                  endDate: '2023-12-31'
                totalPages: 1
                last: true
                totalElements: 3
                numberOfElements: 3
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/sub-locations?page=0&size=10&query=id%3Aa31aa166-70be-4303-81e4-5ada93b5213a\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.sub_locations.list(\n    page=0, size=10, query=\"id:a31aa166-70be-4303-81e4-5ada93b5213a\"\n)"
    post:
      tags:
      - organization
      summary: Add Sub Location
      description: Add a sub location.
      parameters: []
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  location:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD or null when ongoing
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  endDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD or null when ongoing
              example:
                id: a31aa166-70be-4303-81e4-5ada93b5213a
                code: FL-1
                name: First Floor
                location:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                  code: JKT
                  name: Jakarta
                  locationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7ec1
                    code: LG5
                    name: Location Group 5
                  city:
                    id: 2d1e9f5a-a6ea-11e6-80f5-76304dec7eb7
                    code: '31.73'
                    name: Kota Adm. Jakarta Barat
                    state:
                      id: 71f59dbe-a699-11e6-80f5-76304dec7eb7
                      name: Jakarta Special Capital Region
                      code: '31'
                      country:
                        id: d1eac40e-a691-11e6-80f5-76304dec7eb7
                        code: IDN
                        callingCode: '+62'
                        name: Indonesia
                        taxTreaty: false
                  effectiveDate: '2023-01-01'
                  endDate: '9999-12-31'
                effectiveDate: '2023-01-01'
                endDate: '2023-12-31'
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                locationId:
                  type: string
                  description: Parent location ID
                effectiveDate:
                  type: string
                  format: date
                  description: The date when the sub-location becomes effective
                endDate:
                  type: string
                  format: date
                  description: The date when the sub-location ends; null means no planned end date / active indefinitely
              required:
              - code
              - name
              - locationId
              - effectiveDate
            example:
              code: FL-1
              name: First Floor
              locationId: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
              effectiveDate: '2023-01-01'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/sub-locations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '...'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.sub_locations.create(...)"
    delete:
      tags:
      - organization
      summary: Delete Sub Location
      description: |
        This endpoint expects a JSON array in the request body,  where each item is an object containing an `id` field representing the sub-location to delete. The array must contain at least 1 item.
        **Request body schema:** ```json [
          { "id": "string" }
        ] ```
        **Example payload:** ```json [
          { "id": "a31aa166-70be-4303-81e4-5ada93b5213a" }
        ] ```
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier
                required:
                - id
            example:
            - id: a31aa166-70be-4303-81e4-5ada93b5213a
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              examples:
                Success:
                  value:
                    successes:
                    - id: a31aa166-70be-4303-81e4-5ada93b5213a
                    failures: []
                Failure:
                  value:
                    successes: []
                    failures:
                    - code: ORG-FAILED_DELETE_SUBLOCATION
                      message: Sub Location cannot be deleted as it is being used by other entities.
                      params:
                        id: f4eaf74f-3e63-414f-b7be-54c46902407f
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/sub-locations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"id\": \"a31aa166-70be-4303-81e4-5ada93b5213a\"\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.sub_locations.delete_many(\n    approval_ids_request=[IdRequest(id=\"a31aa166-70be-4303-81e4-5ada93b5213a\")]\n)"
  /core/v1/monthly-recapitulation/{filterType}:
    get:
      tags:
      - payroll-others
      summary: Get Monthly Recapitulation
      description: Return the monthly recapitulation.
      parameters:
      - in: path
        name: filterType
        schema:
          type: string
        required: true
        example: ORGANIZATION
      - in: query
        name: year
        schema:
          type: number
          example: 2024
        example: 2024
      - in: query
        name: month
        schema:
          type: number
          example: 1
        example: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          code:
                            type: string
                          id:
                            type: string
                          month:
                            type: number
                          name:
                            type: string
                          totalThp:
                            type: number
                          year:
                            type: number
                          details:
                            type: array
                            items:
                              type: object
                              properties:
                                amount:
                                  type: number
                                salaryItem:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    salaryItemType:
                                      type: string
              example:
                content:
                - code: string
                  id: string
                  month: 1
                  name: string
                  totalThp: 0
                  year: 1970
                  details:
                  - amount: 0
                    salaryItem:
                      code: string
                      id: string
                      name: string
                      salaryItemType: INDIVIDUAL
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/monthly-recapitulation/ORGANIZATION?year=2024&month=1\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.monthly_recapitulation.retrieve(\n    filter_type=\"ORGANIZATION\", year=2024, month=1\n)"
  /core/v1/monthly-tax-reports:
    get:
      tags:
      - tax
      summary: Get Monthly Tax Report
      description: |
        ### Search Query
        | Supported Keys               | Supported Operators | Notes                                                                              |
        | ---------------------------- | ------------------- | ---------------------------------------------------------------------------------- |
        | year                         | :<br>\><br><        | Equal operator<br>Greater than or equal to<br>Less than or equal to                |
        | month                        | :<br>\><br><        | Equal operator<br>Greater than or equal to<br>Less than or equal to equal operator |
        | taxObject                    | :                   | Equal operator                                                                     |
        | taxObjectIn                  | :                   | Equal operator with multiple value delimited by “;”                                |
        | pph21Method                  | :                   | Equal operator                                                                     |
        | employeeId                   | :                   | Equal operator                                                                     |
        | employeeIdentificationNumber | :                   | Like operator                                                                      |
        | employeeName                 | :                   | Like operator                                                                      |
        | kppId                        | :                   | Equal operator                                                                     |
        | migrated                     | :                   | Equal operator                                                                     |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          year:
                            type: number
                          month:
                            type: number
                          pph21Method:
                            type: string
                          membershipNumber:
                            type: string
                          membershipAddress:
                            type: string
                          totalMonthlyGrossIncome:
                            type: number
                          totalTaxAndAllowance:
                            type: object
                            properties:
                              original:
                                type: number
                              penalty:
                                type: number
                              tax:
                                type: number
                              allowance:
                                type: number
                          paidTaxAndAllowance:
                            type: object
                            properties:
                              original:
                                type: number
                              penalty:
                                type: number
                              tax:
                                type: number
                              allowance:
                                type: number
                          taxObject:
                            type: string
                            enum:
                            - PERMANENT
                            - TEMPORARY
                            - MULTI_LEVEL_DISTRIBUTOR
                            - INSURANCE_AGENT
                            - MERCHANT_GOODS
                            - EXPERT_CONTINUOUS
                            - EXPERT_NON_CONTINUOUS
                            - CONTINUOUS
                            - NON_CONTINUOUS
                            - COMMISSIONER
                            - FORMER_EMPLOYEE
                            - EVENT_PARTICIPANT
                            - EXPATRIATE
                            - EXPERT
                            - MEETING_PARTICIPANT
                            - COMMITTEE_PARTICIPANT
                            - EDUCATION_PARTICIPANT
                            - OTHER_PARTICIPANT
                            - ADVISOR_LECTURER
                            - AUTHOR_RESEARCHER
                            - SERVICE_PROVIDER
                            - ADVERTISING_AGENT
                            - PROJECT_MANAGER
                            - INTERMEDIARY
                            - ARTIST
                            - ATHLETE
                            - TEMPORARY_MONTHLY
                            - COMPETITION_PARTICIPANT
                          sequenceNumber:
                            type: number
                          migrated:
                            type: boolean
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          kpp:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  year: 2020
                  month: 1
                  pph21Method: GROSS
                  membershipNumber: '123456789012345'
                  membershipAddress: Kalideres
                  totalMonthlyGrossIncome: 7000000
                  totalTaxAndAllowance:
                    original: 60000
                    penalty: 200
                    tax: 60200
                    allowance: 0
                  paidTaxAndAllowance:
                    original: 60000
                    penalty: 200
                    tax: 60200
                    allowance: 0
                  taxObject: PERMANENT
                  sequenceNumber: 1
                  migrated: false
                  employee:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                  kpp:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: kpp-01
                    name: Kpp Name
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/monthly-tax-reports\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.monthly_tax_reports.list()"
  /core/v1/monthly-tax-details:
    get:
      tags:
      - tax
      summary: Get Monthly Tax Detail
      description: |
        ### Search Query
        | Supported Keys               | Supported Operators | Notes                                                                              |
        | ---------------------------- | ------------------- | ---------------------------------------------------------------------------------- |
        | year                         | :<br>\><br><        | Equal operator<br>Greater than or equal to<br>Less than or equal to                |
        | month                        | :<br>\><br><        | Equal operator<br>Greater than or equal to<br>Less than or equal to equal operator |
        | taxObject                    | :                   | Equal operator                                                                     |
        | taxObjectIn                  | :                   | Equal operator with multiple value delimited by “;”                                |
        | pph21Method                  | :                   | Equal operator                                                                     |
        | employeeId                   | :                   | Equal operator                                                                     |
        | employeeIdentificationNumber | :                   | Like operator                                                                      |
        | employeeName                 | :                   | Like operator                                                                      |
        | kppId                        | :                   | Equal operator                                                                     |
        | migrated                     | :                   | Equal operator                                                                     |
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          annualCalculation:
                            type: boolean
                          taxObject:
                            type: string
                            enum:
                            - PERMANENT
                            - TEMPORARY
                            - MULTI_LEVEL_DISTRIBUTOR
                            - INSURANCE_AGENT
                            - MERCHANT_GOODS
                            - EXPERT_CONTINUOUS
                            - EXPERT_NON_CONTINUOUS
                            - CONTINUOUS
                            - NON_CONTINUOUS
                            - COMMISSIONER
                            - FORMER_EMPLOYEE
                            - EVENT_PARTICIPANT
                            - EXPATRIATE
                            - PERMANENT_DTP
                            - EXPERT
                            - MEETING_PARTICIPANT
                            - COMMITTEE_PARTICIPANT
                            - EDUCATION_PARTICIPANT
                            - OTHER_PARTICIPANT
                            - ADVISOR_LECTURER
                            - AUTHOR_RESEARCHER
                            - SERVICE_PROVIDER
                            - ADVERTISING_AGENT
                            - PROJECT_MANAGER
                            - INTERMEDIARY
                            - TEMPORARY_DTP
                            - NON_EMPLOYEE_DTP
                            - ARTIST
                            - ATHLETE
                            - TEMPORARY_MONTHLY
                            - COMPETITION_PARTICIPANT
                          year:
                            type: integer
                            format: int32
                          month:
                            type: integer
                            format: int32
                          employeeId:
                            type: string
                          npwpNumber:
                            type: string
                          npwpAddress:
                            type: string
                          ptkpCategoryCode:
                            type: string
                          terCategory:
                            type: string
                          percentage:
                            type: number
                            format: double
                          monthlyGrossIncome:
                            type: number
                          tax:
                            type: object
                            properties:
                              original:
                                type: number
                              penalty:
                                type: number
                          regularTax:
                            type: object
                            properties:
                              original:
                                type: number
                              penalty:
                                type: number
                          bonusTax:
                            type: object
                            properties:
                              original:
                                type: number
                              penalty:
                                type: number
                          income:
                            type: object
                            properties:
                              basicSalary:
                                type: number
                              taxAllowance:
                                type: number
                              bonus:
                                type: number
                              irregularBonus:
                                type: number
                              bonusAllowance:
                                type: number
                              honorarium:
                                type: number
                              insurancePremium:
                                type: number
                              enjoymentRevenue:
                                type: number
                              otherAllowance:
                                type: number
                              irregularOtherAllowance:
                                type: number
                              retirementContribution:
                                type: number
                              religionAllowance:
                                type: number
                          positionalAllowance:
                            type: number
                          baseIncomeTaxDeduction:
                            type: number
              example:
                content:
                - annualCalculation: true
                  taxObject: PERMANENT
                  year: 2024
                  month: 1
                  employeeId: string
                  npwpNumber: string
                  npwpAddress: string
                  ptkpCategoryCode: string
                  terCategory: string
                  percentage: 0
                  monthlyGrossIncome: 0
                  tax:
                    original: 0
                    penalty: 0
                  regularTax:
                    original: 0
                    penalty: 0
                  bonusTax:
                    original: 0
                    penalty: 0
                  income:
                    basicSalary: 0
                    taxAllowance: 0
                    bonus: 0
                    irregularBonus: 0
                    bonusAllowance: 0
                    honorarium: 0
                    insurancePremium: 0
                    enjoymentRevenue: 0
                    otherAllowance: 0
                    irregularOtherAllowance: 0
                    retirementContribution: 0
                    religionAllowance: 0
                  positionalAllowance: 0
                  baseIncomeTaxDeduction: 0
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/monthly-tax-details?page=0&size=10\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.monthly_tax_details.list(page=0, size=10)"
  /core/v1/operational-groups:
    get:
      tags:
      - organization
      summary: Get Operational Groups
      description: Return the operational groups.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys  | Supported Operators | Notes                                                                                     |
          |-----------------|---------------------|-------------------------------------------------------------------------------------------|
          | id              | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | name            | `:`                 | Like operator                                                                             |
          | code            | `:`                 | Like operator                                                                             |
        schema:
          type: string
        examples:
          one:
            summary: Search an operational group by ID
            value: id:a31aa166-70be-4303-81e4-5ada93b5213a
          two:
            summary: Search operational groups by name
            value: name:Production
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
              example:
                content:
                - id: a31aa166-70be-4303-81e4-5ada93b5213a
                  code: OG-1
                  name: Production Team
                - id: f4eaf74f-3e63-414f-b7be-54c46902407f
                  code: OG-2
                  name: Quality Assurance
                - id: 7b43bb37-fed4-4d76-9838-221ec23647d1
                  code: OG-3
                  name: Research and Development
                totalPages: 1
                last: true
                totalElements: 3
                numberOfElements: 3
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/operational-groups?page=0&size=10&query=id%3Aa31aa166-70be-4303-81e4-5ada93b5213a\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.operational_groups.list(\n    page=0, size=10, query=\"id:a31aa166-70be-4303-81e4-5ada93b5213a\"\n)"
  /core/v1/organization-groups:
    get:
      tags:
      - organization
      summary: Get Organization Group
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes                      |
        |----------------|---------------------|----------------------------|
        | name           | `:`                 | Like operator              |
        | code           | `:`                 | Like operator              |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
              example:
                content:
                - id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                  code: OG
                  name: Organization Group
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/organization-groups\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.organization_groups.list()"
    post:
      tags:
      - organization
      summary: Create Organization Group
      description: Create an organization group.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
              example:
                id: ab1a286b-4c8b-4d28-8b5b-7a2e10cc3cf1
                code: GRP123
                name: Engineering Department
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
              required:
              - code
              - name
            example:
              code: GRP123
              name: Engineering Department
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/organization-groups\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"GRP123\",\n  \"name\": \"Engineering Department\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import OrganizationGroupRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.organization_groups.create(\n    organization_group_request=OrganizationGroupRequest(\n        code=\"GRP123\", name=\"Engineering Department\"\n    )\n)"
  /core/v1/organization-hierarchies:
    get:
      tags:
      - organization
      summary: Get Organization Hierarchies
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes                                                                           |
        |----------------|---------------------|---------------------------------------------------------------------------------|
        | name           | `:`                 | Like operator                                                                   |
        | code           | `:`                 | Like operator                                                                   |
        | color          | `:`                 | Like operator                                                                   |
        | level          | `:`<br>`<`<br>`>`   | Equal operator<br>Less than or equal operator<br>Greater than or equal operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          color:
                            type: string
                          level:
                            type: integer
              example:
                content:
                - id: a896cc20-aba9-11e6-80f5-76304dec7eb7
                  code: '004'
                  name: Unit
                  color: '#62A4D5'
                  level: 4
                - id: a896cf54-aba9-11e6-80f5-76304dec7eb7
                  code: '003'
                  name: Divisi
                  color: '#E8CF44'
                  level: 3
                - id: a896d062-aba9-11e6-80f5-76304dec7eb7
                  code: '002'
                  name: Departemen
                  color: '#B7783A'
                  level: 2
                - id: a896d3be-aba9-11e6-80f5-76304dec7eb7
                  code: '001'
                  name: Direktorat
                  color: '#379353'
                  level: 1
                totalPages: 1
                last: true
                totalElements: 4
                numberOfElements: 4
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/organization-hierarchies\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.organization_hierarchies.list()"
    post:
      tags:
      - organization
      summary: Create Organization Hierarchies
      description: Create the organization hierarchies.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  color:
                    type: string
                  level:
                    type: integer
              example:
                id: a896cc20-aba9-11e6-80f5-76304dec7eb7
                code: '004'
                name: Unit
                color: '#62A4D5'
                level: 4
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                color:
                  type: string
                  minLength: 7
                  maxLength: 7
                  description: Hexadecimal color code, e.g. `#62A4D5`
                level:
                  type: number
                  minimum: 1
                  maximum: 99
              required:
              - code
              - name
              - level
            example:
              code: '004'
              name: Unit
              color: '#62A4D5'
              level: 4
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/organization-hierarchies\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"004\",\n  \"name\": \"Unit\",\n  \"color\": \"#62A4D5\",\n  \"level\": 4\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import OrganizationHierarchyRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.organization_hierarchies.create(\n    organization_hierarchy_request=OrganizationHierarchyRequest(\n        code=\"004\", name=\"Unit\", color=\"#62A4D5\", level=4\n    )\n)"
  /core/v1/organizations:
    get:
      tags:
      - organization
      summary: Get Organization
      description: |
        > **Deprecated:** The `organizationParent` field in the response is deprecated and will always return `null`.
        > Please use the Organization Superior API instead.

        ### Search Query
          | Supported Keys          | Supported Operators | Notes                                                                           |
          |-------------------------|---------------------|---------------------------------------------------------------------------------|
          | id                      | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | name                    | `:`                 | Like operator                                                                   |
          | code                    | `:`                 | Like operator                                                                   |
          | type                    | `:`                 | Equal operator                                                                  |
          | organizationGroupId     | `:`                 | Equal operator                                                                  |
          | organizationHierarchyId | `:`                 | Equal operator                                                                  |
          | organizationParentId    | `:`                 | Equal operator. **Deprecated:** Use Organization Superior API instead.          |
          | haveParent              | `:`                 | Equal operator. **Deprecated:** Use Organization Superior API instead.          |
          | organizationChildrenId  | `:`                 | Equal operator                                                                  |
          | level                   | `:`<br>`<`<br>`>`   | Equal operator<br>Less than or equal operator<br>Greater than or equal operator |
          | company.id              | `:`                 | Equal operator                                                                  |
          | effectiveDate           | `<`<br>`>`          | Less than or equal operator<br>Greater than or equal operator                   |
          | endDate                 | `<`<br>`>`          | Less than or equal operator<br>Greater than or equal operator                   |
          | endDateIsNull           | `:`                 | Equal operator                                                                  |
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        schema:
          type: string
        example: name:Engineering
        description: Search query string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          type:
                            type: string
                            enum:
                            - STRUCTURAL
                            - FUNCTIONAL
                          effectiveDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          endDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
                          organizationHierarchy:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              color:
                                type: string
                              level:
                                type: integer
                          organizationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          organizationParent:
                            type: object
                            deprecated: true
                            description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              type:
                                type: string
                                enum:
                                - STRUCTURAL
                                - FUNCTIONAL
                              effectiveDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              endDate:
                                type: string
                                format: date
                                description: YYYY-MM-DD
                              createdBy:
                                type: string
                              createdDate:
                                type: number
                              updatedBy:
                                type: string
                              updatedDate:
                                type: number
                              organizationHierarchy:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  color:
                                    type: string
                                  level:
                                    type: integer
                              organizationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              organizationParent:
                                type: object
                                description: Deprecated. Always null.
                                deprecated: true
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
              example:
                content:
                - id: 8adeb122-acab-11e6-80f5-76304dec7eb7
                  code: '001'
                  name: BOD
                  type: FUNCTIONAL
                  effectiveDate: '1970-01-01'
                  endDate: '2099-12-31'
                  createdBy: system
                  createdDate: 1478586884810
                  updatedBy: system
                  updatedDate: 1478586884810
                  organizationHierarchy:
                    id: a896d3be-aba9-11e6-80f5-76304dec7eb7
                    code: '001'
                    name: Direktorat
                    color: '#379353'
                    level: 1
                  organizationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: OG
                    name: Organization Group
                  organizationParent: {}
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: COMP-001
                    name: CATAPA
                - id: 8adebaf0-acab-11e6-80f5-76304dec7eb7
                  code: '003'
                  name: HRD
                  type: FUNCTIONAL
                  organizationHierarchy:
                    id: a896d062-aba9-11e6-80f5-76304dec7eb7
                    code: '002'
                    name: Departemen
                    color: '#B7783A'
                    level: 2
                  organizationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: OG
                    name: Organization Group
                  organizationParent: {}
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: COMP-001
                    name: CATAPA
                - id: 8adeb8b6-acab-11e6-80f5-76304dec7eb7
                  code: '002'
                  name: ICT
                  type: FUNCTIONAL
                  effectiveDate: '1970-01-01'
                  endDate: '2099-12-31'
                  createdBy: system
                  createdDate: 1478586884810
                  updatedBy: system
                  updatedDate: 1478586884810
                  organizationHierarchy:
                    id: a896d062-aba9-11e6-80f5-76304dec7eb7
                    code: '002'
                    name: Departemen
                    color: '#B7783A'
                    level: 2
                  organizationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: OG
                    name: Organization Group
                  organizationParent: {}
                  company:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: COMP-001
                    name: CATAPA
                totalPages: 1
                last: true
                totalElements: 3
                numberOfElements: 3
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/organizations?page=0&size=10&query=name%3AEngineering\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.organizations.list(page=0, size=10, query=\"name:Engineering\")"
    post:
      tags:
      - organization
      summary: Create Organization
      description: |
        Create an organization.

        > **Deprecated:** The `organizationParentId` request field and `organizationParent` response field are deprecated.
        > Please use the Organization Superior API instead.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  type:
                    type: string
                    enum:
                    - STRUCTURAL
                    - FUNCTIONAL
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  endDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
                  organizationHierarchy:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      color:
                        type: string
                      level:
                        type: integer
                  organizationGroup:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  organizationParent:
                    type: object
                    deprecated: true
                    description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      type:
                        type: string
                        enum:
                        - STRUCTURAL
                        - FUNCTIONAL
                      effectiveDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      endDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      createdBy:
                        type: string
                      createdDate:
                        type: number
                      updatedBy:
                        type: string
                      updatedDate:
                        type: number
                      organizationHierarchy:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          color:
                            type: string
                          level:
                            type: integer
                      organizationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      organizationParent:
                        type: object
                        description: Deprecated. Always null.
                        deprecated: true
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                  company:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
              example:
                id: 9e20fea5-0c11-4370-9748-afcdbdd8e3f0
                code: BBCA
                name: PT Bank Central Asia Tbk.
                type: FUNCTIONAL
                effectiveDate: '1970-01-01'
                endDate: '2099-12-31'
                createdBy: system
                createdDate: 1478586884810
                updatedBy: system
                updatedDate: 1478586884810
                organizationHierarchy:
                  id: a896d3be-aba9-11e6-80f5-76304dec7eb7
                  code: '001'
                  name: Direktorat
                  color: '#379353'
                  level: 1
                organizationGroup:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                  code: DJRM
                  name: Djarum
                organizationParent: {}
                company:
                  id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                  code: COMP-001
                  name: CATAPA
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                organizationHierarchyId:
                  type: string
                organizationParentId:
                  type: string
                  deprecated: true
                  description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                name:
                  type: string
                  minLength: 3
                  maxLength: 255
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                organizationGroupId:
                  type: string
                companyId:
                  type: string
                  description: If the request is null, then it will default to the earliest company created in the system.
              required:
              - code
              - organizationHierarchyId
              - name
              - type
            example:
              code: BBCA
              organizationHierarchyId: a896d3be-aba9-11e6-80f5-76304dec7eb7
              organizationParentId: 8adeb122-acab-11e6-80f5-76304dec7eb7
              name: PT Bank Central Asia Tbk.
              type: FUNCTIONAL
              organizationGroupId: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
              companyId: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/organizations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"BBCA\",\n  \"organizationHierarchyId\": \"a896d3be-aba9-11e6-80f5-76304dec7eb7\",\n  \"organizationParentId\": \"8adeb122-acab-11e6-80f5-76304dec7eb7\",\n  \"name\": \"PT Bank Central Asia Tbk.\",\n  \"type\": \"FUNCTIONAL\",\n  \"organizationGroupId\": \"61d5f69a-a5a4-1111-80f5-76304dec7eb7\",\n  \"companyId\": \"61d5f69a-a5a4-1111-80f5-76304dec7eb7\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import OrganizationRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.organizations.create(\n    organization_request=OrganizationRequest(\n        code=\"BBCA\",\n        organization_hierarchy_id=\"a896d3be-aba9-11e6-80f5-76304dec7eb7\",\n        organization_parent_id=\"8adeb122-acab-11e6-80f5-76304dec7eb7\",\n        name=\"PT Bank Central Asia Tbk.\",\n        type=\"FUNCTIONAL\",\n        organization_group_id=\"61d5f69a-a5a4-1111-80f5-76304dec7eb7\",\n        company_id=\"61d5f69a-a5a4-1111-80f5-76304dec7eb7\",\n    )\n)"
  /core/v1/organizations/heads:
    get:
      tags:
      - organization
      summary: Get Organization Heads
      description: Return the organization heads.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
            | Supported Keys          | Supported Operators | Notes                                                                                     |
            |-------------------------|---------------------|-------------------------------------------------------------------------------------------|
            | id                      | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
            | organization.company.id | `:`                 | Equal operator                                                                            |
            | organization.id         | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
        schema:
          type: string
        examples:
          one:
            summary: Search organization heads by IDs
            value: id:a31aa166-70be-4303-81e4-5ada93b5213a;0332e2b1-ba56-4a33-9d8a-6e66a4acde21
          two:
            summary: Search organization heads by organization IDs
            value: organization.id:61d5f69a-a5a4-1111-80f5-76304dec7eb7;8adeb8b6-acab-11e6-80f5-76304dec7eb7
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          effectiveDate:
                            type: string
                          organization:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          position:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
              example:
                content:
                - id: 550e8400-e29b-41d4-a716-446655440000
                  effectiveDate: '2023-06-01'
                  organization:
                    id: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
                    code: DEPT-001
                    name: Engineering Department
                  position:
                    id: 6ba7b811-9dad-11d1-80b4-00c04fd430c9
                    code: MGR-ENG
                    name: Engineering Manager
                - id: b3efe784-2e05-4afc-aae9-1425e55490bf
                  effectiveDate: '2023-03-01'
                  organization:
                    id: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
                    code: DEPT-001
                    name: Engineering Department
                  position:
                    id: 6ba7b811-9dad-11d1-80b4-00c04fd430c9
                    code: MGR-ENG
                    name: Engineering Manager
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 2
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/organizations/heads?page=0&size=10&query=id%3Aa31aa166-70be-4303-81e4-5ada93b5213a%3B0332e2b1-ba56-4a33-9d8a-6e66a4acde21\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.organizations.heads.list(\n    page=0,\n    size=10,\n    query=\"id:a31aa166-70be-4303-81e4-5ada93b5213a;0332e2b1-ba56-4a33-9d8a-6e66a4acde21\",\n)"
  /core/v1/organizations/histories:
    get:
      tags:
      - organization
      summary: Get Organization Histories
      description: Return the organization histories.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys       | Supported Operators | Notes                                                                                     |
          |---------------------|---------------------|-------------------------------------------------------------------------------------------|
          | id                  | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | organization.id     | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | type                | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | organization.company.id          | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | organizationGroup.id| `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | effectiveDate       | `>`, `<`            | Greater than or equal / Less than or equal operators<br/>Date format: YYYY-MM-DD         |
          | endDate             | `>`, `<`            | Greater than or equal / Less than or equal operators<br/>Date format: YYYY-MM-DD         |
        schema:
          type: string
        examples:
          one:
            summary: Search organization histories by IDs
            value: id:a31aa166-70be-4303-81e4-5ada93b5213a;0332e2b1-ba56-4a33-9d8a-6e66a4acde21
          two:
            summary: Search organization histories by organization IDs
            value: organization.id:61d5f69a-a5a4-1111-80f5-76304dec7eb7;8adeb8b6-acab-11e6-80f5-76304dec7eb7
          three:
            summary: Search organization histories by type
            value: type:STRUCTURAL;FUNCTIONAL
          four:
            summary: Search organization histories by effective date range
            value: effectiveDate.gte:2024-01-01,effectiveDate.lte:2024-12-31
          five:
            summary: Search organization histories by company and date range
            value: company.id:61d5f69a-a5a4-1111-80f5-76304dec7eb8,effectiveDate.gte:2025-01-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          organization:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          type:
                            type: string
                            enum:
                            - STRUCTURAL
                            - FUNCTIONAL
                          organizationHierarchy:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              level:
                                type: integer
                          organizationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          effectiveDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
              example:
                content:
                - id: org-001
                  code: '001'
                  name: '001'
                  organization:
                    id: org-123
                    code: ACME
                    name: Acme Corporation
                  company:
                    id: comp-001
                    code: COMP
                    name: COMP Corporation
                  type: STRUCTURAL
                  organizationHierarchy:
                    id: hie-001
                    code: HR001
                    name: HROUP
                    level: 1
                  organizationGroup:
                    id: group-001
                    code: GR001
                    name: GROUP
                  effectiveDate: '2022-01-15'
                  endDate: '2023-12-31'
                - id: org-002
                  code: '001'
                  name: '001'
                  organization:
                    id: org-123
                    code: ACME
                    name: Acme Corporation
                  company:
                    id: comp-001
                    code: COMP
                    name: COMP Corporation
                  type: STRUCTURAL
                  organizationHierarchy:
                    id: hie-001
                    code: HR001
                    name: HROUP
                    level: 1
                  organizationGroup:
                    id: 61d5f69a-a5a4-1111-80f5-76304dec7eb7
                    code: OG
                    name: Organization Group
                  effectiveDate: '2024-01-01'
                  endDate: '2099-12-31'
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 20
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/organizations/histories?page=0&size=10&query=id%3Aa31aa166-70be-4303-81e4-5ada93b5213a%3B0332e2b1-ba56-4a33-9d8a-6e66a4acde21\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.organizations.histories.list(\n    page=0,\n    size=10,\n    query=\"id:a31aa166-70be-4303-81e4-5ada93b5213a;0332e2b1-ba56-4a33-9d8a-6e66a4acde21\",\n)"
  /core/v1/organizations/superiors:
    get:
      tags:
      - organization
      summary: Get Organization Superiors
      description: Return the organization superiors.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys  | Supported Operators | Notes                                                                                     |
          |-----------------|---------------------|-------------------------------------------------------------------------------------------|
          | id              | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | organization.id | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | superior.id     | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | effectiveDate   | `gte`, `lte`        | Greater than or equal / Less than or equal operators<br/>Date format: YYYY-MM-DD         |
        schema:
          type: string
        examples:
          one:
            summary: Search organization superiors by IDs
            value: id:org-001;org-002
          two:
            summary: Search organization superiors by organization IDs
            value: organization.id:d8b9f2e3-4c5a-67d8-9f0a-b1c2d3e4f567;fffffff0-1234-5678-90ab-cdef12345678
          three:
            summary: Search organization superiors by superior organization IDs
            value: superior.id:sup11111-1111-1111-1111-111111111111;sup22222-2222-2222-2222-222222222222
          four:
            summary: Search organization superiors by effective date range
            value: effectiveDate.gte:2025-01-01,effectiveDate.lte:2025-12-31
          five:
            summary: Search organization superiors by organization and date range
            value: organization.id:d8b9f2e3-4c5a-67d8-9f0a-b1c2d3e4f567,effectiveDate.gte:2025-01-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          organization:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          superior:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          effectiveDate:
                            type: string
                            format: date
              example:
                content:
                - id: org-001
                  organization:
                    id: org-123
                    code: ACME
                    name: Acme Corporation
                  superior:
                    id: group-001
                    code: GR001
                    name: GROUP
                  effectiveDate: '2022-01-15'
                - id: org-002
                  organization:
                    id: org-123
                    code: ACME
                    name: Acme Corporation
                  superior:
                    id: group-001
                    code: GR001
                    name: GROUP
                  effectiveDate: '2024-01-01'
                - id: org-003
                  organization:
                    id: org-456
                    code: BETA
                    name: Beta Corporation
                  superior:
                    id: group-002
                    code: GR002
                    name: GROUP 2
                  effectiveDate: '2024-06-01'
                totalPages: 1
                last: true
                totalElements: 3
                numberOfElements: 3
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 20
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/organizations/superiors?page=0&size=10&query=id%3Aorg-001%3Borg-002\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.organizations.superiors.list(\n    page=0, size=10, query=\"id:org-001;org-002\"\n)"
  /core/v1/paygroups:
    get:
      tags:
      - paygroup
      summary: Get Paygroups
      description: |
        ### Search Query
        | Supported Keys  | Supported Operators | Notes   |
        | --------------- | ------------------- | ------- |
        | code            | :                   | Equal   |
        | defaultPaygroup | :                   | boolean |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          cutoffType:
                            type: string
                          cutoffDayOfWeek:
                            type: string
                          dailyCutoffDate:
                            type: number
                          dailyCutoffBase:
                            type: string
                          defaultPaygroup:
                            type: boolean
                          monthlyCutoffDate:
                            type: number
              example:
                content:
                - cutoffType: MONTHLY
                  cutoffDayOfWeek: NONE
                  id: 812a74bc-7fa4-4c6f-8d3d-25d3a3f17845
                  code: findedPaygroup
                  dailyCutoffDate: 25
                  dailyCutoffBase: CURRENT_MONTH
                  defaultPaygroup: false
                  name: findedPaygroup
                  monthlyCutoffDate: 25
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/paygroups\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.paygroups.list()"
  /core/v1/employee-paygroups:
    get:
      tags:
      - employee-paygroup
      summary: Get Employee Paygroups
      description: Return the employee paygroups.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys          | Supported Operators | Notes                                                                                |
          |-------------------------|---------------------|--------------------------------------------------------------------------------------|
          | employee.id             | `:`                 | Equal operator with multiple values. Each value should separated with delimiters `;` |
          | effectiveDate           | `>`<br/>`<`<br/>`=` | Equal operator<br/>Greater than or equal operator<br/>Less than or equal operator<br/><br/>Use the `YYYY-MM-DD` format, e.g. `effectiveDate>2023-09-20` |
        schema:
          type: string
        example: effectiveDate>2023-09-20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          updatedDate:
                            type: integer
                            format: timestamp in milliseconds
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                              active:
                                type: boolean
                          paygroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              cutoffType:
                                type: string
                              cutoffDayOfWeek:
                                type: string
                              dailyCutoffDate:
                                type: number
                              dailyCutoffBase:
                                type: string
                              defaultPaygroup:
                                type: boolean
                              monthlyCutoffDate:
                                type: number
                          effectiveDate:
                            type: string
                            format: date
              example:
                content:
                - id: fb1fc36c-6714-490c-aadb-5869e27e7bfe
                  updatedDate: 1718000000000
                  employee:
                    id: ad988ae3-2aa9-456d-93e5-a3974b4ee2f1
                    identificationNumber: EMP123456
                    name: John Doe
                    active: true
                  paygroup:
                    id: 061aa34e-3c3c-4b1d-a627-78e79bbf6ce8
                    code: PG01
                    name: Monthly Payroll
                  effectiveDate: '2024-06-10'
                totalPages: 11
                last: false
                totalElements: 11
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 1
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employee-paygroups?page=0&size=10&query=effectiveDate%3E2023-09-20\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_paygroups.list(\n    page=0, size=10, query=\"effectiveDate>2023-09-20\"\n)"
  /core/v1/employee-paygroups/{id}:
    get:
      tags:
      - employee-paygroup
      summary: Get Employee Paygroup by Id
      description: Return the employee paygroup by Id.
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
        example: fb1fc36c-6714-490c-aadb-5869e27e7bfe
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  updatedDate:
                    type: integer
                    format: timestamp in milliseconds
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      active:
                        type: boolean
                  paygroup:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      cutoffType:
                        type: string
                      cutoffDayOfWeek:
                        type: string
                      dailyCutoffDate:
                        type: number
                      dailyCutoffBase:
                        type: string
                      defaultPaygroup:
                        type: boolean
                      monthlyCutoffDate:
                        type: number
                  effectiveDate:
                    type: string
                    format: date
              example:
                id: fb1fc36c-6714-490c-aadb-5869e27e7bfe
                updatedDate: 1718000000000
                employee:
                  id: ad988ae3-2aa9-456d-93e5-a3974b4ee2f1
                  identificationNumber: EMP123456
                  name: John Doe
                  active: true
                paygroup:
                  id: 061aa34e-3c3c-4b1d-a627-78e79bbf6ce8
                  code: PG01
                  name: Monthly Payroll
                effectiveDate: '2024-06-10'
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/employee-paygroups/fb1fc36c-6714-490c-aadb-5869e27e7bfe\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.employee_paygroups.retrieve(\n    id=\"fb1fc36c-6714-490c-aadb-5869e27e7bfe\"\n)"
  /core/v1/payslip-layouts:
    get:
      tags:
      - payslip
      summary: Get Payslip Layouts
      description: |
        ### Search Query
        | Supported Keys               | Supported Operators | Notes                |
        | ---------------------------- | ------------------- | ---------------------|
        | section                      | :                   | Equal operator       |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          html:
                            type: string
                          section:
                            type: string
                          effectiveDate:
                            type: string
              example:
                content:
                - id: 673d457f-1975-434c-81a4-067f79345554
                  html: <!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"></html>
                  section: MASTER
                  effectiveDate: '2020-01-01'
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/payslip-layouts\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.payslip_layouts.list()"
    put:
      tags:
      - payslip
      summary: Create or Update Payslip Layout
      description: Create or update the payslip layout.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  html:
                    type: string
                  section:
                    type: string
                  effectiveDate:
                    type: string
              example:
                id: 673d457f-1975-434c-81a4-067f79345554
                html: <!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"></html>
                section: MASTER
                effectiveDate: '2020-01-01'
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                html:
                  type: string
                section:
                  type: string
                effectiveDate:
                  type: string
              required:
              - html
              - section
              - effectiveDate
            example:
              html: <!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"></html>
              section: MASTER
              effectiveDate: '2020-01-01'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/payslip-layouts\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"html\": \"<!DOCTYPE html><html lang=\\\"en\\\" xmlns:th=\\\"http://www.thymeleaf.org\\\"></html>\",\n  \"section\": \"MASTER\",\n  \"effectiveDate\": \"2020-01-01\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import PayslipLayoutRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.payslip_layouts.update_many(\n    payslip_layout_request=PayslipLayoutRequest(\n        html='<!DOCTYPE html><html lang=\"en\" xmlns:th=\"http://www.thymeleaf.org\"></html>',\n        section=\"MASTER\",\n        effective_date=\"2020-01-01\",\n    )\n)"
  /core/v1/payslip-layouts/{id}:
    get:
      tags:
      - payslip
      summary: Get Payslip Layout by Id
      description: Return the payslip layout by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  html:
                    type: string
                  section:
                    type: string
                  effectiveDate:
                    type: string
              example:
                id: 673d457f-1975-434c-81a4-067f79345554
                html: <!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"></html>
                section: MASTER
                effectiveDate: '2020-01-01'
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/payslip-layouts/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.payslip_layouts.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
    delete:
      tags:
      - payslip
      summary: Delete Payslip Layout by Id
      description: Delete the payslip layout by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/payslip-layouts/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.payslip_layouts.delete(id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\")"
  /core/v1/payslip-additional-notes:
    get:
      tags:
      - payslip
      summary: Get Payslip Additional Notes
      description: |
        ### Search Query
        | Supported Keys               | Supported Operators | Notes                |
        | ---------------------------- | ------------------- | ---------------------|
        | paymentDate                  | :                   | Equal operator       |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          paymentDate:
                            type: string
                          note:
                            type: string
              example:
                content:
                - id: 673d457f-1975-434c-81a4-067f79345554
                  paymentDate: '2022-01-15'
                  note: This is note
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/payslip-additional-notes\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.payslip_additional_notes.list()"
    post:
      tags:
      - payslip
      summary: Create Payslip Additional Note
      description: Create a payslip additional note.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  paymentDate:
                    type: string
                  note:
                    type: string
              example:
                id: 673d457f-1975-434c-81a4-067f79345554
                paymentDate: '2022-01-15'
                note: This is note
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                paymentDate:
                  type: string
                note:
                  type: string
                  description: Max length 150
                  maxLength: 150
              required:
              - paymentDate
              - note
            example:
              paymentDate: '2022-01-15'
              note: This is note
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/payslip-additional-notes\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"paymentDate\": \"2022-01-15\",\n  \"note\": \"This is note\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import PayslipAdditionalNoteRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.payslip_additional_notes.create(\n    payslip_additional_note_request=PayslipAdditionalNoteRequest(\n        payment_date=\"2022-01-15\", note=\"This is note\"\n    )\n)"
  /core/v1/payslip-additional-notes/{id}:
    put:
      tags:
      - payslip
      summary: Update Payslip Additional Note by Id
      description: Update the payslip additional note by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  paymentDate:
                    type: string
                  note:
                    type: string
              example:
                id: 673d457f-1975-434c-81a4-067f79345554
                paymentDate: '2022-01-15'
                note: This is note
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                paymentDate:
                  type: string
                note:
                  type: string
                  description: Max length 150
                  maxLength: 150
              required:
              - paymentDate
              - note
            example:
              paymentDate: '2022-01-15'
              note: This is note
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/payslip-additional-notes/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"paymentDate\": \"2022-01-15\",\n  \"note\": \"This is note\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import PayslipAdditionalNoteRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.payslip_additional_notes.update(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    payslip_additional_note_request=PayslipAdditionalNoteRequest(\n        payment_date=\"2022-01-15\", note=\"This is note\"\n    ),\n)"
  /core/v1/positions:
    get:
      tags:
      - organization
      summary: Get Positions
      description: Return the positions.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          Get a list of positions with pagination support.
          ### Search Query
            | Supported Keys          | Supported Operators | Notes                                                                           |
            |-------------------------|---------------------|---------------------------------------------------------------------------------|
            | id                      | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
            | name                    | `:`                 | Like operator                                                                   |
            | code                    | `:`                 | Like operator                                                                   |
        schema:
          type: string
        example: name:Engineer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
              example:
                content:
                - id: 123e4567-e89b-12d3-a456-426614174000
                  code: POS001
                  name: Software Engineer
                  createdBy: system
                  createdDate: 1727370164151
                  updatedBy: system
                  updatedDate: 1727370164151
                - id: 123e4567-e89b-12d3-a456-426614174001
                  code: POS002
                  name: Product Manager
                  createdBy: system
                  createdDate: 1727370164151
                  updatedBy: system
                  updatedDate: 1727370164151
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/positions?page=0&size=10&query=name%3AEngineer\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.positions.list(page=0, size=10, query=\"name:Engineer\")"
  /core/v1/positions/cost-centers:
    get:
      tags:
      - organization
      summary: Get Position Cost Centers
      description: Return the position cost centers.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys  | Supported Operators | Notes                                                                                     |
          |-----------------|---------------------|-------------------------------------------------------------------------------------------|
          | id              | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | position.id     | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
        schema:
          type: string
        examples:
          one:
            summary: Search cost centers by IDs
            value: id:a31aa166-70be-4303-81e4-5ada93b5213a;0332e2b1-ba56-4a33-9d8a-6e66a4acde21
          two:
            summary: Search cost centers by position IDs
            value: position.id:61d5f69a-a5a4-1111-80f5-76304dec7eb7;8adeb8b6-acab-11e6-80f5-76304dec7eb7
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          effectiveDate:
                            type: string
                          costCenter:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          position:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
              example:
                content:
                - id: a31aa166-70be-4303-81e4-5ada93b5213a
                  effectiveDate: '2023-10-31'
                  costCenter:
                    id: a46e387f-7a16-4794-b8b9-1087cd5fa80f
                    code: C-01
                    name: Cost Center 01
                  position:
                    id: 123e4567-e89b-12d3-a456-426614174000
                    code: P-01
                    name: Position 01
                  createdBy: system
                  createdDate: 1478586884810
                  updatedBy: system
                  updatedDate: 1478586884810
                - id: f4eaf74f-3e63-414f-b7be-54c46902407f
                  effectiveDate: '2024-11-30'
                  costCenter:
                    id: 463cac73-f830-474a-92c2-1847e1c5af37
                    code: C-02
                    name: Cost Center 02
                  position:
                    id: 123e4567-e89b-12d3-a456-426614174001
                    code: P-02
                    name: Position 02
                  createdBy: system
                  createdDate: 1478586884810
                  updatedBy: system
                  updatedDate: 1478586884810
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/positions/cost-centers?page=0&size=10&query=id%3Aa31aa166-70be-4303-81e4-5ada93b5213a%3B0332e2b1-ba56-4a33-9d8a-6e66a4acde21\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.positions.cost_centers.list(\n    page=0,\n    size=10,\n    query=\"id:a31aa166-70be-4303-81e4-5ada93b5213a;0332e2b1-ba56-4a33-9d8a-6e66a4acde21\",\n)"
  /core/v1/positions/histories:
    get:
      tags:
      - organization
      summary: Get Position Histories
      description: Return the position histories.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys  | Supported Operators | Notes                                                                                     |
          |-----------------|---------------------|-------------------------------------------------------------------------------------------|
          | id              | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | position.id     | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | organization.id | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
        schema:
          type: string
        examples:
          one:
            summary: Search position histories by IDs
            value: id:a31aa166-70be-4303-81e4-5ada93b5213a;0332e2b1-ba56-4a33-9d8a-6e66a4acde21
          two:
            summary: Search position histories by position IDs
            value: position.id:61d5f69a-a5a4-1111-80f5-76304dec7eb7;8adeb8b6-acab-11e6-80f5-76304dec7eb7
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          position:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          organization:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          effectiveDate:
                            type: string
                          endDate:
                            type: string
              example:
                content:
                - id: a31aa166-70be-4303-81e4-5ada93b5213a
                  code: PH-01
                  name: POSITION HISTORY 01
                  position:
                    id: 123e4567-e89b-12d3-a456-426614174000
                    code: P-01
                    name: Position 01
                  organization:
                    id: 123e4567-e89b-12d3-a456-426614174999
                    code: O-01
                    name: Organization 01
                    company:
                      id: 123e4567-e89b-12d3-a456-426614174000
                      code: COMP-01
                      name: COMPANY 01
                  effectiveDate: '2024-01-01'
                  endDate: '2025-12-31'
                - id: f4eaf74f-3e63-414f-b7be-54c46902407f
                  code: PH-02
                  name: POSITION HISTORY 02
                  position:
                    id: 123e4567-e89b-12d3-a456-426614174000
                    code: P-01
                    name: Position 01
                  organization:
                    id: 123e4567-e89b-12d3-a456-426614174999
                    code: O-01
                    name: Organization 01
                    company:
                      id: 123e4567-e89b-12d3-a456-426614174000
                      code: COMP-01
                      name: COMPANY 01
                  effectiveDate: '2024-01-01'
                  endDate: '2025-12-31'
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/positions/histories?page=0&size=10&query=id%3Aa31aa166-70be-4303-81e4-5ada93b5213a%3B0332e2b1-ba56-4a33-9d8a-6e66a4acde21\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.positions.histories.list(\n    page=0,\n    size=10,\n    query=\"id:a31aa166-70be-4303-81e4-5ada93b5213a;0332e2b1-ba56-4a33-9d8a-6e66a4acde21\",\n)"
  /core/v1/positions/vacancy-statuses:
    get:
      tags:
      - organization
      summary: Get Position Vacancy Statuses
      description: Return the position vacancy statuses.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys  | Supported Operators | Notes                                                                                     |
          |-----------------|---------------------|-------------------------------------------------------------------------------------------|
          | id              | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | position.id     | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | vacancyStatus   | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
        schema:
          type: string
        examples:
          one:
            summary: Search vacancy statuses by IDs
            value: id:a31aa166-70be-4303-81e4-5ada93b5213a;0332e2b1-ba56-4a33-9d8a-6e66a4acde21
          two:
            summary: Search vacancy statuses by position IDs
            value: position.id:61d5f69a-a5a4-1111-80f5-76304dec7eb7;8adeb8b6-acab-11e6-80f5-76304dec7eb7
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          effectiveDate:
                            type: string
                          vacancyStatus:
                            type: string
                            enum:
                            - VACANT
                            - FILLED
                          position:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
              example:
                content:
                - id: a31aa166-70be-4303-81e4-5ada93b5213a
                  effectiveDate: '2023-10-31'
                  vacancyStatus: FILLED
                  position:
                    id: 123e4567-e89b-12d3-a456-426614174000
                    code: P-01
                    name: Position 01
                  createdBy: system
                  createdDate: 1478586884810
                  updatedBy: system
                  updatedDate: 1478586884810
                - id: f4eaf74f-3e63-414f-b7be-54c46902407f
                  effectiveDate: '2024-11-30'
                  vacancyStatus: VACANT
                  position:
                    id: 123e4567-e89b-12d3-a456-426614174001
                    code: P-02
                    name: Position 02
                  createdBy: system
                  createdDate: 1478586884810
                  updatedBy: system
                  updatedDate: 1478586884810
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                sort:
                - direction: DESC
                  property: effectiveDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/positions/vacancy-statuses?page=0&size=10&query=id%3Aa31aa166-70be-4303-81e4-5ada93b5213a%3B0332e2b1-ba56-4a33-9d8a-6e66a4acde21\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.positions.vacancy_statuses.list(\n    page=0,\n    size=10,\n    query=\"id:a31aa166-70be-4303-81e4-5ada93b5213a;0332e2b1-ba56-4a33-9d8a-6e66a4acde21\",\n)"
  /core/v1/pph21-policies:
    get:
      tags:
      - tax
      summary: Get Pph21 Policy
      description: Return the Pph21 policy.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  linkToPayroll:
                    type: boolean
                  pph21FormFormatNumber:
                    type: string
                  pph21Method:
                    type: string
              example:
                id: string
                linkToPayroll: true
                pph21FormFormatNumber: CONTINUE_NUMBERING
                pph21Method: GROSS
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/pph21-policies\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.pph21_policies.list()"
  /core/v1/ptkp-categories:
    get:
      tags:
      - tax
      summary: Get Ptkp Categories
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes         |
        | -------------- | ------------------- | ------------- |
        | name           | :                   | Like operator |
        | code           | :                   | Like operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          maxDependent:
                            type: number
                          formula:
                            type: string
              example:
                content:
                - id: string
                  code: string
                  name: string
                  maxDependent: 0
                  formula: string
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/ptkp-categories\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.ptkp_categories.list()"
  /core/v1/religions:
    get:
      tags:
      - master-data
      summary: Get Religions
      description: Return the religions.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          code:
                            type: string
              example:
                content:
                - id: daa7f10k-a734-11e6-80f5-76304dec7eb7
                  name: Others
                  code: Others
                - id: daa7f10j-a734-11e6-80f5-76304dec7eb7
                  name: Protestantism
                  code: Protestantism
                - id: daa7f10i-a734-11e6-80f5-76304dec7eb7
                  name: Confucianism
                  code: Confucianism
                - id: daa7f10h-a734-11e6-80f5-76304dec7eb7
                  name: Islam
                  code: Islam
                - id: daa7f10g-a734-11e6-80f5-76304dec7eb7
                  name: Hinduism
                  code: Hinduism
                - id: daa7f10f-a734-11e6-80f5-76304dec7eb7
                  name: Catholicism
                  code: Catholicism
                - id: daa7f10e-a734-11e6-80f5-76304dec7eb7
                  name: Buddhism
                  code: Buddhism
                totalPages: 1
                last: true
                totalElements: 7
                numberOfElements: 7
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/religions\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.religions.list()"
    post:
      tags:
      - master-data
      summary: Create Religion
      description: Create a religion.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  code:
                    type: string
              example:
                id: daa7f10k-a734-11e6-80f5-76304dec7eb7
                name: Others
                code: Others
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                code:
                  type: string
                  maxLength: 255
              required:
              - name
            example:
              name: Others
              code: Others
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/religions\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"name\": \"Others\",\n  \"code\": \"Others\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import ReligionRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.religions.create(\n    religion_request=ReligionRequest(name=\"Others\", code=\"Others\")\n)"
  /core/v1/payroll-process-snapshots:
    get:
      tags:
      - payroll-process-snapshot
      summary: Get Payroll Process Snapshots
      description: Get all payroll process snapshots
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        schema:
          type: string
        description: |
          ### Search query
          | Supported Keys | Supported Operators | Notes                                             |
          |----------------|---------------------|---------------------------------------------------|
          | effectiveDate  | `<` `>`             | Greater than or equal to<br>Less than or equal to |
          | process        | `:`                 | Equal to                                          |
          | employeeId     | `:`                 | Equal to                                          |
        example: process:PAYROLL
      responses:
        '200':
          description: Page of PayrollProcessSnapshotResponse
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          employeeId:
                            type: string
                          effectiveDate:
                            type: string
                            format: date
                          terminationDate:
                            type: string
                            format: date
                          employmentStatus:
                            type: object
                            properties:
                              effectiveDate:
                                type: string
                                format: date
                              position:
                                type: object
                                properties:
                                  id:
                                    type: string
                              organization:
                                type: object
                                properties:
                                  id:
                                    type: string
                              location:
                                type: object
                                properties:
                                  id:
                                    type: string
                              subLocation:
                                type: object
                                properties:
                                  id:
                                    type: string
                              jobTitle:
                                type: object
                                properties:
                                  id:
                                    type: string
                              jobLevel:
                                type: object
                                properties:
                                  id:
                                    type: string
                              employmentType:
                                type: object
                                properties:
                                  id:
                                    type: string
                              operationalGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                              costCenter:
                                type: object
                                properties:
                                  id:
                                    type: string
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                              contractStart:
                                type: string
                                format: date
                              contractEnd:
                                type: string
                                format: date
                              permanentDate:
                                type: string
                                format: date
                          kpp:
                            type: object
                            properties:
                              id:
                                type: string
                          paygroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          payrollSequenceNumber:
                            type: integer
                          previousPayrollSequenceNumber:
                            type: integer
                          paymentItemGroup:
                            type: object
                            properties:
                              id:
                                type: string
                          bankAccountConfiguration:
                            type: object
                            properties:
                              effectiveDate:
                                type: string
                                format: date
                              bankAccounts:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    priority:
                                      type: integer
                          workflowActivities:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                effectiveDate:
                                  type: string
                                  format: date
                                createdDate:
                                  type: number
                                updatedDate:
                                  type: number
                                workflowTemplate:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    type:
                                      type: string
                                    name:
                                      type: string
                                workflowReason:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    category:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
              example:
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                first: true
                last: true
                size: 20
                number: 0
                content:
                - employeeId: 62b529c7-0cfb-4d34-8ef8-3be3ef0f911d
                  effectiveDate: '2024-01-01'
                  terminationDate: '2027-01-01'
                  employmentStatus:
                    effectiveDate: '2024-01-01'
                    position:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    organization:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    location:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    subLocation:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    jobTitle:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    jobLevel:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    employmentType:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    operationalGroup:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    costCenter:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    company:
                      id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    contractStart: '2024-01-01'
                    contractEnd: '2027-01-01'
                    permanentDate: '2024-01-01'
                  kpp:
                    id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                  paygroup:
                    id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                    code: PG-001
                    name: Monthly Paygroup
                  payrollSequenceNumber: 1
                  previousPayrollSequenceNumber: 0
                  paymentItemGroup:
                    id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                  bankAccountConfiguration:
                    id: 2d1ecc14-a6ea-11e6-80f5-76304dec7eb7
                  workflowActivities: []
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/payroll-process-snapshots?page=0&size=10&query=process%3APAYROLL\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.payroll_process_snapshots.list(\n    page=0, size=10, query=\"process:PAYROLL\"\n)"
  /core/v1/salary-calculations:
    get:
      tags:
      - salary-calculation
      summary: Get Salary Calculation
      description: |
        ### Search Query
        | Supported Keys         | Supported Operators | Notes |
        | ---------------------- | ------------------- | ----- |
        | id                  | :                   | Equal |
        | month                  | :                   | Equal |
        | year                   | :                   | Equal |
        | salaryPaymentProcess   | :                   | Equal |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          costCenterCode:
                            type: string
                          dailyWorkdayEndDate:
                            type: string
                          dailyWorkdayStartDate:
                            type: string
                          employeeId:
                            type: string
                          employeeIdentificationNumber:
                            type: string
                          employeeName:
                            type: string
                          employeeWorkday:
                            type: number
                          id:
                            type: string
                          locationGroupCode:
                            type: string
                          normalWorkday:
                            type: number
                          previousPeriodEmployeeWorkday:
                            type: number
                          previousPeriodNormalWorkday:
                            type: number
              example:
                content:
                - costCenterCode: string
                  dailyWorkdayEndDate: '2023-02-25'
                  dailyWorkdayStartDate: '2023-01-26'
                  employeeId: string
                  employeeIdentificationNumber: string
                  employeeName: string
                  employeeWorkday: 30
                  id: string
                  locationGroupCode: string
                  normalWorkday: 30
                  previousPeriodEmployeeWorkday: 30
                  previousPeriodNormalWorkday: 30
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-calculations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_calculations.list()"
  /core/v1/salary-calculations/details:
    get:
      tags:
      - salary-calculation
      summary: Get Salary Calculation Details
      description: |
        ### Search Query
        | Supported Keys      | Supported Operators | Notes         |
        | ------------------- | ------------------- | ------------- |
        | salaryCalculationId | :                   | Like operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          amount:
                            type: number
                          id:
                            type: string
                          salaryItemCategory:
                            type: string
                          salaryItemCode:
                            type: string
                          salaryItemName:
                            type: string
                          salaryItemType:
                            type: string
                          thp:
                            type: boolean
              example:
                content:
                - amount: 0
                  id: string
                  salaryItemCategory: INCOME
                  salaryItemCode: string
                  salaryItemName: string
                  salaryItemType: INDIVIDUAL
                  thp: true
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-calculations/details\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_calculations.details.list()"
  /core/v1/salary-calculations/details/{id}/time-allowance-details:
    get:
      tags:
      - salary-calculation
      summary: Get Time Allowance Details By Salary Calculation Detail
      description: Return the time allowance details for the salary calculation detail.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  salaryCalculationDetail:
                    type: object
                    properties:
                      id:
                        type: string
                  timeAllowanceDetails:
                    type: array
                    items:
                      type: object
                      properties:
                        amount:
                          type: number
                        date:
                          type: string
              example:
                salaryCalculationDetail:
                  id: string
                timeAllowanceDetails:
                - amount: 0
                  date: string
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-calculations/details/f47ac10b-58cc-4372-a567-0e02b2c3d479/time-allowance-details\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_calculations.details.time_allowance_details.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/salary-item-add-on:
    get:
      tags:
      - salary-template
      summary: Get Salary Item Add On
      description: Return the salary item add-on.
      parameters:
      - in: query
        name: employeeIdentificationNumber
        required: true
        schema:
          type: string
        example: EMP-2024-001
      - in: query
        name: date
        required: true
        schema:
          type: string
        example: '2024-01-01'
      - in: query
        name: salaryItemCode
        required: true
        schema:
          type: string
        example: BASIC_SALARY
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  amount:
                    type: number
                  date:
                    type: string
                  employee:
                    type: object
                    properties:
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  salaryCalculationProcessed:
                    type: boolean
                  salaryItem:
                    type: object
                    properties:
                      code:
                        type: string
                      name:
                        type: string
              example:
                amount: 0
                date: string
                employee:
                  identificationNumber: string
                  name: string
                salaryCalculationProcessed: true
                salaryItem:
                  code: string
                  name: string
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-item-add-on?employeeIdentificationNumber=EMP-2024-001&date=2024-01-01&salaryItemCode=BASIC_SALARY\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_item_add_on.list(\n    employee_identification_number=\"EMP-2024-001\",\n    date=\"2024-01-01\",\n    salary_item_code=\"BASIC_SALARY\",\n)"
    put:
      tags:
      - salary-template
      summary: Update Salary Item Add On
      description: Update the salary item add-on.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  amount:
                    type: number
                  date:
                    type: string
                  employee:
                    type: object
                    properties:
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  salaryCalculationProcessed:
                    type: boolean
                  salaryItem:
                    type: object
                    properties:
                      code:
                        type: string
                      name:
                        type: string
              example:
                amount: 0
                date: string
                employee:
                  identificationNumber: string
                  name: string
                salaryCalculationProcessed: true
                salaryItem:
                  code: string
                  name: string
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: number
                date:
                  type: string
                employee:
                  type: object
                  properties:
                    identificationNumber:
                      type: string
                  required:
                  - identificationNumber
                salaryItem:
                  type: object
                  properties:
                    code:
                      type: string
                  required:
                  - code
              required:
              - amount
              - date
              - employee
              - salaryItem
            example:
              amount: 0
              date: string
              employee:
                identificationNumber: string
              salaryItem:
                code: string
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/salary-item-add-on\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"amount\": 0,\n  \"date\": \"string\",\n  \"employee\": {\n    \"identificationNumber\": \"string\"\n  },\n  \"salaryItem\": {\n    \"code\": \"string\"\n  }\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import (\n    SalaryItemAddOnEmployeeRequest,\n    SalaryItemAddOnRequest,\n    SalaryItemAddOnSalaryItemRequest,\n)\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_item_add_on.update_many(\n    salary_item_add_on_request=SalaryItemAddOnRequest(\n        amount=0,\n        date=\"string\",\n        employee=SalaryItemAddOnEmployeeRequest(identification_number=\"string\"),\n        salary_item=SalaryItemAddOnSalaryItemRequest(code=\"string\"),\n    )\n)"
    delete:
      tags:
      - salary-template
      summary: Delete Salary Item Add On
      description: Delete the salary item add-on.
      parameters:
      - in: query
        name: employeeIdentificationNumber
        required: true
        schema:
          type: string
        example: EMP-2024-001
      - in: query
        name: date
        required: true
        schema:
          type: string
        example: '2024-01-01'
      - in: query
        name: salaryItemCode
        required: true
        schema:
          type: string
        example: BASIC_SALARY
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/salary-item-add-on?employeeIdentificationNumber=EMP-2024-001&date=2024-01-01&salaryItemCode=BASIC_SALARY\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_item_add_on.delete_many(\n    employee_identification_number=\"EMP-2024-001\",\n    date=\"2024-01-01\",\n    salary_item_code=\"BASIC_SALARY\",\n)"
  /core/v1/salary-item-add-on/add:
    put:
      tags:
      - salary-template
      summary: Add Salary Item Add On
      description: Add a salary item add-on.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  amount:
                    type: number
                  date:
                    type: string
                  employee:
                    type: object
                    properties:
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  salaryCalculationProcessed:
                    type: boolean
                  salaryItem:
                    type: object
                    properties:
                      code:
                        type: string
                      name:
                        type: string
              example:
                amount: 0
                date: string
                employee:
                  identificationNumber: string
                  name: string
                salaryCalculationProcessed: true
                salaryItem:
                  code: string
                  name: string
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: number
                date:
                  type: string
                employee:
                  type: object
                  properties:
                    identificationNumber:
                      type: string
                  required:
                  - identificationNumber
                salaryItem:
                  type: object
                  properties:
                    code:
                      type: string
                  required:
                  - code
              required:
              - amount
              - date
              - employee
              - salaryItem
            example:
              amount: 0
              date: string
              employee:
                identificationNumber: string
              salaryItem:
                code: string
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/salary-item-add-on/add\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"amount\": 0,\n  \"date\": \"string\",\n  \"employee\": {\n    \"identificationNumber\": \"string\"\n  },\n  \"salaryItem\": {\n    \"code\": \"string\"\n  }\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import (\n    SalaryItemAddOnEmployeeRequest,\n    SalaryItemAddOnRequest,\n    SalaryItemAddOnSalaryItemRequest,\n)\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_item_add_on.add.update_many(\n    salary_item_add_on_request=SalaryItemAddOnRequest(\n        amount=0,\n        date=\"string\",\n        employee=SalaryItemAddOnEmployeeRequest(identification_number=\"string\"),\n        salary_item=SalaryItemAddOnSalaryItemRequest(code=\"string\"),\n    )\n)"
  /core/v1/salary-item-add-on/subtract:
    put:
      tags:
      - salary-template
      summary: Subtract Salary Item Add On
      description: Subtract a salary item add-on.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: number
                date:
                  type: string
                employee:
                  type: object
                  properties:
                    identificationNumber:
                      type: string
                  required:
                  - identificationNumber
                salaryItem:
                  type: object
                  properties:
                    code:
                      type: string
                  required:
                  - code
              required:
              - amount
              - date
              - employee
              - salaryItem
            example:
              amount: 0
              date: string
              employee:
                identificationNumber: string
              salaryItem:
                code: string
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/salary-item-add-on/subtract\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"amount\": 0,\n  \"date\": \"string\",\n  \"employee\": {\n    \"identificationNumber\": \"string\"\n  },\n  \"salaryItem\": {\n    \"code\": \"string\"\n  }\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import (\n    SalaryItemAddOnEmployeeRequest,\n    SalaryItemAddOnRequest,\n    SalaryItemAddOnSalaryItemRequest,\n)\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_item_add_on.subtract.update_many(\n    salary_item_add_on_request=SalaryItemAddOnRequest(\n        amount=0,\n        date=\"string\",\n        employee=SalaryItemAddOnEmployeeRequest(identification_number=\"string\"),\n        salary_item=SalaryItemAddOnSalaryItemRequest(code=\"string\"),\n    )\n)"
  /core/v1/salary-payments:
    get:
      tags:
      - salary-payment
      summary: Get Salary Payments
      description: |
        ### Search Query
        | Supported Keys               | Supported Operators        | Notes                                                                        |
        | ---------------------------- | -------------------------- | ---------------------------------------------------------------------------- |
        | process                      | `:`                        | Equal operator                                                               |
        | salaryPaymentSummary.id      | `:`                        | Like operator                                                                |
        | paymentDate                  | `:`<br/>`>`<br/>`<`        | Equal operator<br/>Greater than or equal to<br/>Less than or equal to        |
        | employee.id                  | `:`                        | Equal operator                                                                |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          paymentMethod:
                            type: string
                            enum:
                            - CASH
                            - TRANSFER
                            - NONE
                          paymentDate:
                            type: string
                          organization:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          jobLevel:
                            type: object
                            properties:
                              name:
                                type: string
                          jobTitle:
                            type: object
                            properties:
                              name:
                                type: string
                          location:
                            type: object
                            properties:
                              name:
                                type: string
                          costCenter:
                            type: object
                            properties:
                              code:
                                type: string
                              name:
                                type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                              employmentStatus:
                                type: object
                                properties:
                                  jobTitle:
                                    type: object
                                    properties:
                                      name:
                                        type: string
                                  employmentType:
                                    type: object
                                    properties:
                                      name:
                                        type: string
                                  costCenter:
                                    type: object
                                    properties:
                                      code:
                                        type: string
                                      name:
                                        type: string
                          salaryPaymentDetails:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                bankCode:
                                  type: string
                                bankName:
                                  type: string
                                accountName:
                                  type: string
                                accountNumber:
                                  type: string
                                bankAccountPriority:
                                  type: integer
                                currencyCode:
                                  type: string
                                amount:
                                  type: number
                                exchangedAmount:
                                  type: number
                                companyBankAccount:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      format: uuid
                                      example: eb919ed1-c3c1-4334-a626-b9178b8a98ae
                                    name:
                                      type: string
                                      example: Comp Bank Account 1
                                    companyCode:
                                      type: string
                                      example: C001
                                    accountNumber:
                                      type: string
                                      example: '98343411'
                                    bankBranch:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                          format: uuid
                                          example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                                        name:
                                          type: string
                                          example: BCA Wisma Asia
                                        code:
                                          type: string
                                          example: BCA01
                                        address:
                                          type: string
                                          example: BCA01
                                        bank:
                                          type: object
                                          properties:
                                            id:
                                              type: string
                                              format: uuid
                                              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                            code:
                                              type: string
                                              example: '014'
                                            name:
                                              type: string
                                              example: BCA
                                            llg:
                                              type: string
                                              example: '146789'
                                    currency:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                          format: uuid
                                          example: d1ea18d8-a691-11e6-80f5-76304dec7066
                                        code:
                                          type: string
                                          example: IDR
                                        name:
                                          type: string
                                          example: Indonesian Rupiah
                                        baseCurrency:
                                          type: boolean
                                          example: true
              example:
                content:
                - id: string
                  paymentMethod: CASH
                  paymentDate: string
                  organization:
                    id: string
                    code: string
                    name: string
                    company:
                      id: string
                      name: string
                  jobLevel:
                    name: string
                  jobTitle:
                    name: string
                  location:
                    name: string
                  employee:
                    id: string
                    identificationNumber: string
                    name: string
                    employmentStatus:
                      jobTitle:
                        name: string
                      employmentType:
                        name: string
                      costCenter:
                        code: string
                        name: string
                  salaryPaymentDetails:
                  - id: string
                    bankCode: string
                    bankName: string
                    accountName: string
                    accountNumber: string
                    bankAccountPriority: 1
                    currencyCode: string
                    amount: 0
                    exchangedAmount: 0
                    companyBankAccount:
                      id: 550e8400-e29b-41d4-a716-446655440000
                      name: string
                      companyCode: string
                      accountNumber: string
                      bankBranch:
                        id: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
                        name: string
                        code: string
                        address: string
                        bank:
                          id: 6ba7b811-9dad-11d1-80b4-00c04fd430c9
                          code: string
                          name: string
                          llg: string
                        currency:
                          code: string
                          name: string
                          baseCurrency: true
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-payments\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_payments.list()"
  /core/v1/salary-payments/dates:
    get:
      tags:
      - salary-payment
      summary: Get Salary Payments Date
      description: Return the salary payment dates.
      parameters:
      - in: query
        name: year
        schema:
          type: number
          example: 2024
        example: 2024
      - in: query
        name: month
        schema:
          type: number
          example: 1
        example: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              example:
              - '2020-01-01'
              - '2020-01-20'
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-payments/dates?year=2024&month=1\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_payments.dates.list(year=2024, month=1)"
  /core/v1/salary-payments/process/processable/processed:
    get:
      deprecated: true
      tags:
      - salary-payment
      summary: Get Processed Salary Payments
      description: |
        ### Search Query
        | Supported Keys         | Supported Operators | Notes         |
        | ---------------------- | ------------------- | ------------- |
        | year                   | :                   | Like operator |
        | month                  | :                   | Like operator |
        | salaryPaymentProcess   | :                   | Like operator |
        | salaryPaymentSummaryId | :                   | Like operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          employeeId:
                            type: string
                          locationGroupCode:
                            type: string
                          paymentDate:
                            type: string
                          salaryPaymentDetails:
                            type: array
                            items:
                              type: object
                              properties:
                                accountNumber:
                                  type: string
                          totalThp:
                            type: number
              example:
                content:
                - employeeId: string
                  locationGroupCode: string
                  paymentDate: string
                  salaryPaymentDetails:
                  - accountNumber: string
                  totalThp: 0
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-payments/process/processable/processed\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_payments.process.processable.processed.list()"
  /core/v1/salary-payments/{id}/payment-item-groups:
    get:
      tags:
      - salary-payment
      summary: Get Payment Item Groups
      description: Return the payment item groups.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          paymentType:
                            type: string
                          startProcessDate:
                            type: string
                          endProcessDate:
                            type: string
                          jobLevel:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          location:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          paymentItemDetails:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                amount:
                                  type: number
                                salaryItem:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    salaryItemCategory:
                                      type: string
                                    salaryItemType:
                                      type: string
                                    thp:
                                      type: boolean
              example:
                content:
                - id: string
                  paymentType: string
                  startProcessDate: string
                  endProcessDate: string
                  jobLevel:
                    id: string
                    code: string
                    name: string
                  location:
                    id: string
                    code: string
                    name: string
                  paymentItemDetails:
                  - id: string
                    amount: 0
                    salaryItem:
                      id: string
                      code: string
                      name: string
                      salaryItemCategory: string
                      salaryItemType: string
                      thp: true
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-payments/f47ac10b-58cc-4372-a567-0e02b2c3d479/payment-item-groups\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_payments.payment_item_groups.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/salary-payment-summaries:
    get:
      tags:
      - salary-payment
      summary: Get Processed Salary Payment Summaries
      description: |
        ### Search Query
        | Supported Keys             | Supported Operators | Notes                                                      |
        | -------------------------- | ------------------- | ---------------------------------------------------------- |
        | exported                   | :                   | Like operator                                              |
        | bankId                     | :                   | Like operator                                              |
        | companyBankAccountId       | :                   | Like operator                                              |
        | bankName                   | :                   | Like operator                                              |
        | year                       | :<br>><br><         | Equal<br>Greater than or equal to<br>Less than or equal to |
        | month                      | :<br>><br><         | Equal<br>Greater than or equal to<br>Less than or equal to |
        | numberOfProcessedEmployees | :<br>><br><         | Equal<br>Greater than or equal to<br>Less than or equal to |
        | paymentDate                | :<br>><br><         | Equal<br>Greater than or equal to<br>Less than or equal to |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          accountNumber:
                            type: string
                          amount:
                            type: number
                          id:
                            type: string
                          numberOfProcessedEmployees:
                            type: number
                          numberOfTransferredEmployees:
                            type: number
                          paymentDate:
                            type: string
                          transferredAmount:
                            type: number
                          companyBankAccount:
                            type: object
                            properties:
                              id:
                                type: string
                              accountNumber:
                                type: string
                                example: '98343411'
                              bankBranch:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  bank:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                        format: uuid
                                        example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                      code:
                                        type: string
                                        example: '014'
                                      name:
                                        type: string
                                        example: BCA
                                      llg:
                                        type: string
                                        example: '146789'
              example:
                content:
                - accountNumber: string
                  amount: 0
                  id: string
                  numberOfProcessedEmployees: 0
                  numberOfTransferredEmployees: 0
                  paymentDate: string
                  transferredAmount: 0
                  companyBankAccount:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    accountNumber: string
                    bankBranch:
                      id: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
                      bank:
                        id: 6ba7b811-9dad-11d1-80b4-00c04fd430c9
                        code: string
                        name: string
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-payment-summaries\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_payment_summaries.list()"
  /core/v1/salary-templates:
    get:
      tags:
      - salary-template
      summary: Get Salary Templates
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes         |
        | -------------- | ------------------- | ------------- |
        | code           | :                   | Like operator |
        | name           | :                   | Like operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          code:
                            type: string
                          name:
                            type: string
                          salaryTemplateDetails:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  format: uuid
                                salaryItem:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      format: uuid
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    payslipName:
                                      type: string
                                    salaryItemCategory:
                                      type: string
                                    pph21Method:
                                      type: string
                                    pph21Item:
                                      type: string
              example:
                content:
                - id: 550e8400-e29b-41d4-a716-446655440000
                  code: string
                  name: string
                  salaryTemplateDetails:
                  - id: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
                    salaryItem:
                      id: 6ba7b811-9dad-11d1-80b4-00c04fd430c9
                      code: string
                      name: string
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-templates\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_templates.list()"
  /core/v1/salary-templates/{id}:
    get:
      tags:
      - salary-template
      summary: Get Salary Template by Id
      description: Return the salary template by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  code:
                    type: string
                  name:
                    type: string
                  salaryTemplateDetails:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        salaryItem:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                            code:
                              type: string
                            name:
                              type: string
                            payslipName:
                              type: string
                            salaryItemCategory:
                              type: string
                            pph21Method:
                              type: string
                            pph21Item:
                              type: string
              example:
                id: 550e8400-e29b-41d4-a716-446655440000
                code: string
                name: string
                salaryTemplateDetails:
                - id: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
                  salaryItem:
                    id: 6ba7b811-9dad-11d1-80b4-00c04fd430c9
                    code: string
                    name: string
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-templates/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_templates.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/salary-items:
    get:
      tags:
      - salary-item
      summary: Get Salary Items
      description: Get salary items with optional pagination and search.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: includeDefaultType
        required: false
        schema:
          type: boolean
          default: false
        example: false
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys | Supported Operators | Notes         |
          | -------------- | ------------------- | ------------- |
          | code           | :                   | Like operator |
          | name           | :                   | Like operator |
        schema:
          type: string
        example: name:Salary
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          code:
                            type: string
                          name:
                            type: string
                          payslipName:
                            type: string
                          salaryItemCategory:
                            type: string
                          pph21Method:
                            type: string
                          pph21Item:
                            type: string
              example:
                content:
                - id: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                  code: '001'
                  name: Basic Salary
                  payslipName: Gaji Pokok
                  salaryItemCategory: INCOME
                  pph21Method: GROSS
                  pph21Item: ITEM_01_BASIC_SALARY
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: name
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-items?page=0&size=10&includeDefaultType=False&query=name%3ASalary\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_items.list(\n    page=0, size=10, include_default_type=False, query=\"name:Salary\"\n)"
  /core/v1/salary-items/{id}:
    get:
      tags:
      - salary-item
      summary: Get Salary Item by Id
      description: Return the salary item by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  code:
                    type: string
                  name:
                    type: string
                  payslipName:
                    type: string
                  salaryItemCategory:
                    type: string
                  pph21Method:
                    type: string
                  pph21Item:
                    type: string
              example:
                id: e18f5618-bc6c-11e6-80f5-76304dec7eb1
                code: '001'
                name: Basic Salary
                payslipName: Gaji Pokok
                salaryItemCategory: INCOME
                pph21Method: GROSS
                pph21Item: ITEM_01_BASIC_SALARY
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/salary-items/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.salary_items.retrieve(id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\")"
  /core/v1/editable-salary-preprocess:
    post:
      tags:
      - editable-salary-preprocess
      summary: Preprocess editable salary
      description: Preprocess salary editor data for up to 50 items.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              minItems: 1
              maxItems: 50
              items:
                type: object
                properties:
                  employeeIdentificationNumber:
                    type: string
                    description: Employee identification number
                  salaryItemCode:
                    type: string
                    description: Salary item code
                  amount:
                    type: number
                    format: double
                    description: Amount
                  period:
                    type: integer
                    description: Period
                  year:
                    type: integer
                    description: Year
            example:
            - employeeIdentificationNumber: EMP-001
              salaryItemCode: BASIC
              amount: 5000000
              period: 1
              year: 2025
      responses:
        '200':
          description: Batch response for editable salary preprocess
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        employeeIdentificationNumber:
                          type: string
                        salaryItemCode:
                          type: string
                        amount:
                          type: number
                          format: double
                        period:
                          type: integer
                        year:
                          type: integer
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            id:
                              type: string
                            reason:
                              type: string
              example:
                successes:
                - employeeIdentificationNumber: EMP-001
                  salaryItemCode: BASIC
                  amount: 5000000
                  period: 1
                  year: 2025
                failures:
                - code: VALIDATION_ERROR
                  message: Salary item not found
                  params:
                    key: salaryItemCode
                    value: INVALID
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/editable-salary-preprocess\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"employeeIdentificationNumber\": \"EMP-001\",\n    \"salaryItemCode\": \"BASIC\",\n    \"amount\": 5000000,\n    \"period\": 1,\n    \"year\": 2025\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EditableSalaryPreprocessRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.editable_salary_preprocess.create(\n    editable_salary_preprocess_list_request=[\n        EditableSalaryPreprocessRequest(\n            employee_identification_number=\"EMP-001\",\n            salary_item_code=\"BASIC\",\n            amount=5000000,\n            period=1,\n            year=2025,\n        )\n    ]\n)"
  /core/v1/severance-payment-plans:
    get:
      tags:
      - severance
      summary: Get Severance Payment Plans
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes                                                                                       |
        | -------------- | ------------------- | ------------------------------------------------------------------------------------------- |
        | paymentDate    | :<br>\><br><        | Equal operator<br>Greater than or equal to operator<br>Less than or equal to operator       |
        | plannedDate    | :<br>\><br><        | Equal operator<br>Greater than or equal to operator<br>Less than or equal to equal operator |
        | paymentMethod  | :                   | Equal operator                                                                              |
        | paymentOption  | :                   | Equal operator                                                                              |
        | paid           | :                   | Equal operator                                                                              |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          terminationEntryId:
                            type: string
                            format: uuid
                          terminationEntryCode:
                            type: string
                          employeeId:
                            type: string
                            format: uuid
                          employeeIdentificationNumber:
                            type: string
                          employeeName:
                            type: string
                          terminationReasonId:
                            type: string
                            format: uuid
                          terminationReasonName:
                            type: string
                          terminationDate:
                            type: string
                            format: date
                          plannedDate:
                            type: string
                            format: date
                          paymentDate:
                            type: string
                            format: date
                          paymentMethod:
                            type: string
                            enum:
                            - CASH
                            - TRANSFER
                            - NONE
                          paymentOption:
                            type: string
                          amount:
                            type: number
                          nonTaxableAmount:
                            type: number
                          thpAmount:
                            type: number
                          pphAmount:
                            type: number
                          taxAllowance:
                            type: number
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  terminationEntryId: 79f537af-83b2-4a8b-851c-5d14ec046554
                  terminationEntryCode: TRM-1
                  employeeId: 79f537af-83b2-4a8b-851c-5d14ec046554
                  employeeIdentificationNumber: id-1
                  employeeName: Nama
                  terminationReasonId: 79f537af-83b2-4a8b-851c-5d14ec046554
                  terminationReasonName: Pensiun
                  terminationDate: '2020-01-01'
                  plannedDate: '2020-01-01'
                  paymentDate: '2020-01-01'
                  paymentMethod: TRANSFER
                  paymentOption: ONCE
                  amount: 700000
                  nonTaxableAmount: 0
                  thpAmount: 600000
                  pphAmount: 100000
                  taxAllowance: 0
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/severance-payment-plans\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.severance_payment_plans.list()"
  /core/v1/severance-payment-plans/{id}:
    get:
      tags:
      - severance
      summary: Get Severance Payment Plan by Id
      description: Return the severance payment plan by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  terminationEntryId:
                    type: string
                    format: uuid
                  terminationEntryCode:
                    type: string
                  employeeId:
                    type: string
                    format: uuid
                  employeeIdentificationNumber:
                    type: string
                  employeeName:
                    type: string
                  terminationReasonId:
                    type: string
                    format: uuid
                  terminationReasonName:
                    type: string
                  terminationDate:
                    type: string
                    format: date
                  plannedDate:
                    type: string
                    format: date
                  paymentDate:
                    type: string
                    format: date
                  paymentMethod:
                    type: string
                    enum:
                    - CASH
                    - TRANSFER
                    - NONE
                  paymentOption:
                    type: string
                  amount:
                    type: number
                  nonTaxableAmount:
                    type: number
                  thpAmount:
                    type: number
                  pphAmount:
                    type: number
                  taxAllowance:
                    type: number
              example:
                id: 79f537af-83b2-4a8b-851c-5d14ec046554
                terminationEntryId: 79f537af-83b2-4a8b-851c-5d14ec046554
                terminationEntryCode: TRM-1
                employeeId: 79f537af-83b2-4a8b-851c-5d14ec046554
                employeeIdentificationNumber: id-1
                employeeName: Nama
                terminationReasonId: 79f537af-83b2-4a8b-851c-5d14ec046554
                terminationReasonName: Pensiun
                terminationDate: '2020-01-01'
                plannedDate: '2020-01-01'
                paymentDate: '2020-01-01'
                paymentMethod: TRANSFER
                paymentOption: ONCE
                amount: 700000
                nonTaxableAmount: 0
                thpAmount: 600000
                pphAmount: 100000
                taxAllowance: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/severance-payment-plans/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.severance_payment_plans.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/severance-plans:
    get:
      tags:
      - severance
      summary: Get Severance Plans
      description: |
        ### Search Query
        | Supported Keys               | Supported Operators | Notes                 |
        | ---------------------------- | ------------------- | --------------------- |
        | employeeIdentificationNumber | :                   | Like operator<br><br> |
        | employeeName                 | :                   | Like operator         |
        | paymentMethod                | :                   | Equal operator        |
        | paymentOption                | :                   | Equal operator        |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          kpp:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          paymentMethod:
                            type: string
                            enum:
                            - CASH
                            - TRANSFER
                            - NONE
                          pph21Method:
                            type: string
                          paymentOption:
                            type: string
                          total:
                            type: number
                          totalThp:
                            type: number
                          totalPph:
                            type: number
                          taxAllowance:
                            type: number
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  kpp:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Kpp Name
                  paymentMethod: TRANSFER
                  pph21Method: GROSS
                  paymentOption: ONCE
                  total: 700000
                  totalThp: 600000
                  totalPph: 100000
                  taxAllowance: 0
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/severance-plans\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.severance_plans.list()"
  /core/v1/severance-plans/{id}:
    get:
      tags:
      - severance
      summary: Get Severance Plans by Id
      description: Return the severance plans by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  kpp:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  paymentMethod:
                    type: string
                    enum:
                    - CASH
                    - TRANSFER
                    - NONE
                  pph21Method:
                    type: string
                  paymentOption:
                    type: string
                  total:
                    type: number
                  totalThp:
                    type: number
                  totalPph:
                    type: number
                  taxAllowance:
                    type: number
                  details:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        name:
                          type: string
                        category:
                          type: string
                        amount:
                          type: number
                        pph21ItemMethod:
                          type: string
                  paymentPlans:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        terminationEntryId:
                          type: string
                          format: uuid
                        terminationEntryCode:
                          type: string
                        employeeId:
                          type: string
                          format: uuid
                        employeeIdentificationNumber:
                          type: string
                        employeeName:
                          type: string
                        terminationReasonId:
                          type: string
                          format: uuid
                        terminationReasonName:
                          type: string
                        terminationDate:
                          type: string
                          format: date
                        plannedDate:
                          type: string
                          format: date
                        paymentDate:
                          type: string
                          format: date
                        paymentMethod:
                          type: string
                          enum:
                          - CASH
                          - TRANSFER
                          - NONE
                        paymentOption:
                          type: string
                        amount:
                          type: number
                        nonTaxableAmount:
                          type: number
                        thpAmount:
                          type: number
                        pphAmount:
                          type: number
                        taxAllowance:
                          type: number
              example:
                id: 79f537af-83b2-4a8b-851c-5d14ec046554
                kpp:
                  id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  identificationNumber: id-01
                  name: Kpp Name
                paymentMethod: TRANSFER
                pph21Method: GROSS
                paymentOption: ONCE
                total: 700000
                totalThp: 600000
                totalPph: 100000
                taxAllowance: 0
                details:
                - code: UP
                  name: Uang Pesangon
                  category: INCOME
                  amount: 70000
                  pph21ItemMethod: TAXABLE
                paymentPlans:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  terminationEntryId: 79f537af-83b2-4a8b-851c-5d14ec046554
                  terminationEntryCode: TRM-1
                  employeeId: 79f537af-83b2-4a8b-851c-5d14ec046554
                  employeeIdentificationNumber: id-1
                  employeeName: Nama
                  terminationReasonId: 79f537af-83b2-4a8b-851c-5d14ec046554
                  terminationReasonName: Pensiun
                  terminationDate: '2020-01-01'
                  plannedDate: '2020-01-01'
                  paymentDate: '2020-01-01'
                  paymentMethod: TRANSFER
                  paymentOption: ONCE
                  amount: 700000
                  nonTaxableAmount: 0
                  thpAmount: 600000
                  pphAmount: 100000
                  taxAllowance: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/severance-plans/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.severance_plans.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
    delete:
      tags:
      - severance
      summary: Delete Severance Plans by Id
      description: Delete the severance plans by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/severance-plans/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.severance_plans.delete(id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\")"
  /core/v1/tax-calculations:
    get:
      tags:
      - tax
      summary: Get Tax Calculations
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes                                                                              |
        | -------------- | ------------------- | ---------------------------------------------------------------------------------- |
        | idIn           | :                   | Equal operator with multiple value delimited by “;”                                |
        | employeeIdIn   | :                   | Equal operator with multiple value delimited by “;”                                |
        | year           | :<br>\><br><        | Equal operator<br>Greater than or equal to<br>Less than or equal to                |
        | month          | :<br>\><br><        | Equal operator<br>Greater than or equal to<br>Less than or equal to equal operator |
        | paymentDate    | :<br>\><br><        | Equal operator<br>Greater than or equal to<br>Less than or equal to equal operator |
        | taxObject      | :                   | Equal operator                                                                     |
        | taxObjectIn    | :                   | Equal operator with multiple value delimited by “;”                                |
        | pph21Method    | :                   | Equal operator                                                                     |
        | employeeId     | :                   | Equal operator                                                                     |
        | employeeName   | :                   | Like operator                                                                      |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          kpp:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          externalId:
                            type: string
                          year:
                            type: number
                          month:
                            type: number
                          pph21Method:
                            type: string
                          membershipNumber:
                            type: string
                          membershipAddress:
                            type: string
                          totalMonthlyGrossIncome:
                            type: number
                          totalTaxAndAllowance:
                            type: object
                            properties:
                              original:
                                type: number
                              penalty:
                                type: number
                              tax:
                                type: number
                              allowance:
                                type: number
                          paidTaxAndAllowance:
                            type: object
                            properties:
                              original:
                                type: number
                              penalty:
                                type: number
                              tax:
                                type: number
                              allowance:
                                type: number
                          type:
                            type: string
                          taxObject:
                            type: string
                            enum:
                            - PERMANENT
                            - TEMPORARY
                            - MULTI_LEVEL_DISTRIBUTOR
                            - INSURANCE_AGENT
                            - MERCHANT_GOODS
                            - EXPERT_CONTINUOUS
                            - EXPERT_NON_CONTINUOUS
                            - CONTINUOUS
                            - NON_CONTINUOUS
                            - COMMISSIONER
                            - FORMER_EMPLOYEE
                            - EVENT_PARTICIPANT
                            - EXPATRIATE
                            - EXPERT
                            - MEETING_PARTICIPANT
                            - COMMITTEE_PARTICIPANT
                            - EDUCATION_PARTICIPANT
                            - OTHER_PARTICIPANT
                            - ADVISOR_LECTURER
                            - AUTHOR_RESEARCHER
                            - SERVICE_PROVIDER
                            - ADVERTISING_AGENT
                            - PROJECT_MANAGER
                            - INTERMEDIARY
                            - ARTIST
                            - ATHLETE
                            - TEMPORARY_MONTHLY
                            - COMPETITION_PARTICIPANT
                          referenceYear:
                            type: number
                          referenceMonth:
                            type: number
                          multiplier:
                            type: number
                          calculationType:
                            type: string
                          paymentMethod:
                            type: string
                            enum:
                            - COMBINED
                            - SEPARATED
                          referenceDate:
                            type: string
                            format: date
                          paymentDate:
                            type: string
                            format: date
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  createdBy: admin
                  createdDate: 1092038012
                  updatedBy: admin
                  updatedDate: 1092038012
                  employee:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                    company: Company Name
                  kpp:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: kpp-01
                    name: Kpp Name
                  externalId: 79f537af-83b2-4a8b-851c-5d14ec046553
                  year: 2020
                  month: 1
                  pph21Method: GROSS
                  membershipNumber: '123456789012345'
                  membershipAddress: Kalideres
                  totalMonthlyGrossIncome: 7000000
                  totalTaxAndAllowance:
                    original: 60000
                    penalty: 200
                    tax: 60200
                    allowance: 0
                  paidTaxAndAllowance:
                    original: 60000
                    penalty: 200
                    tax: 60200
                    allowance: 0
                  type: PERMANENT
                  taxObject: PERMANENT
                  referenceYear: 2020
                  referenceMonth: 1
                  multiplier: 1
                  calculationType: REGULAR
                  paymentMethod: COMBINED
                  referenceDate: '2020-01-01'
                  paymentDate: '2020-01-01'
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 8
                totalElements: 8
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-calculations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_calculations.list()"
    post:
      tags:
      - tax
      summary: Create Tax Calculation
      description: Create a tax calculation.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  kpp:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  externalId:
                    type: string
                  year:
                    type: number
                  month:
                    type: number
                  pph21Method:
                    type: string
                  membershipNumber:
                    type: string
                  membershipAddress:
                    type: string
                  totalMonthlyGrossIncome:
                    type: number
                  totalTaxAndAllowance:
                    type: object
                    properties:
                      original:
                        type: number
                      penalty:
                        type: number
                      tax:
                        type: number
                      allowance:
                        type: number
                  paidTaxAndAllowance:
                    type: object
                    properties:
                      original:
                        type: number
                      penalty:
                        type: number
                      tax:
                        type: number
                      allowance:
                        type: number
                  type:
                    type: string
                  taxObject:
                    type: string
                    enum:
                    - PERMANENT
                    - TEMPORARY
                    - MULTI_LEVEL_DISTRIBUTOR
                    - INSURANCE_AGENT
                    - MERCHANT_GOODS
                    - EXPERT_CONTINUOUS
                    - EXPERT_NON_CONTINUOUS
                    - CONTINUOUS
                    - NON_CONTINUOUS
                    - COMMISSIONER
                    - FORMER_EMPLOYEE
                    - EVENT_PARTICIPANT
                    - EXPATRIATE
                    - EXPERT
                    - MEETING_PARTICIPANT
                    - COMMITTEE_PARTICIPANT
                    - EDUCATION_PARTICIPANT
                    - OTHER_PARTICIPANT
                    - ADVISOR_LECTURER
                    - AUTHOR_RESEARCHER
                    - SERVICE_PROVIDER
                    - ADVERTISING_AGENT
                    - PROJECT_MANAGER
                    - INTERMEDIARY
                    - ARTIST
                    - ATHLETE
                    - TEMPORARY_MONTHLY
                    - COMPETITION_PARTICIPANT
                  referenceYear:
                    type: number
                  referenceMonth:
                    type: number
                  multiplier:
                    type: number
                  calculationType:
                    type: string
                  paymentMethod:
                    type: string
                    enum:
                    - COMBINED
                    - SEPARATED
                  referenceDate:
                    type: string
                    format: date
                  paymentDate:
                    type: string
                    format: date
              example:
                id: a5abd33b-57f0-4ee6-8729-ebd3ce9b25e5
                createdBy: anonymousUser
                createdDate: 1665455950038
                updatedBy: anonymousUser
                updatedDate: 1665455950038
                employee:
                  id: d2ea6f82-dd24-4415-9e6a-73782100a625
                  identificationNumber: EMP-01
                  name: Employee Name
                  company: Company Name
                kpp:
                  id: 1446d13d-933c-40a3-8c63-695f741b6fa7
                  name: KPP Pratama
                  code: '098'
                externalId: 21ba5875-d732-401a-ace8-3b55741ed36b
                year: 2101
                month: 12
                pph21Method: GROSS_UP
                membershipNumber: '123456789012345'
                membershipAddress: Kalideres
                totalMonthlyGrossIncome: 104864864
                totalTaxAndAllowance:
                  original: 2864864
                  penalty: 572973
                  tax: 3437837
                  allowance: 2864864
                paidTaxAndAllowance:
                  original: 2864864
                  penalty: 572973
                  tax: 3437837
                  allowance: 2864864
                type: NON_EMPLOYEE
                taxObject: EXPERT_CONTINUOUS
                referenceYear: 2101
                referenceMonth: 12
                multiplier: 1
                calculationType: REGULAR
                paymentMethod: COMBINED
                referenceDate: '2101-12-31'
                paymentDate: '2101-12-31'
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                employeeId:
                  type: string
                incomes:
                  type: array
                  items:
                    type: object
                    properties:
                      method:
                        type: string
                      amount:
                        type: number
                      item:
                        type: string
                    required:
                    - method
                    - amount
                    - item
                referenceDate:
                  type: string
                  format: date
                paymentMethod:
                  type: string
                  enum:
                  - COMBINED
                  - SEPARATED
                externalId:
                  type: string
                multiplier:
                  type: number
                paymentDate:
                  type: string
                  format: date
                calculationType:
                  type: string
                workingDays:
                  type: number
              required:
              - employeeId
              - incomes
              - referenceDate
              - paymentMethod
              - externalId
              - multiplier
              - paymentDate
              - calculationType
              - workingDays
            example:
              employeeId: d2ea6f82-dd24-4415-9e6a-73782100a625
              incomes:
              - method: GROSS_UP
                amount: 40000000
                item: ITEM_01_BASIC_SALARY
              - method: GROSS_UP
                amount: 10000000
                item: ITEM_03_OTHER_ALLOWANCE
              - method: GROSS_UP
                amount: 2000000
                item: ITEM_04_HONORARIUM
              - method: GROSS_UP
                amount: 1000000
                item: ITEM_05_INSURANCE_PREMIUM
              - method: GROSS_UP
                amount: 5000000
                item: ITEM_06_OTHER_ENJOYMENT_REVENUE
              - method: GROSS
                amount: 50000000
                item: ITEM_07_BONUS
              - method: GROSS_UP
                amount: 6000000
                item: ITEM_10_RETIREMENT_CONTRIBUTION
              referenceDate: '2101-12-31'
              paymentMethod: COMBINED
              externalId: 21ba5875-d732-401a-ace8-3b55741ed36b
              multiplier: 1
              paymentDate: '2101-12-31'
              calculationType: REGULAR
              workingDays: 26
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/tax-calculations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"employeeId\": \"d2ea6f82-dd24-4415-9e6a-73782100a625\",\n  \"incomes\": [\n    {\n      \"method\": \"GROSS_UP\",\n      \"amount\": 40000000,\n      \"item\": \"ITEM_01_BASIC_SALARY\"\n    },\n    {\n      \"method\": \"GROSS_UP\",\n      \"amount\": 10000000,\n      \"item\": \"ITEM_03_OTHER_ALLOWANCE\"\n    },\n    {\n      \"method\": \"GROSS_UP\",\n      \"amount\": 2000000,\n      \"item\": \"ITEM_04_HONORARIUM\"\n    },\n    {\n      \"method\": \"GROSS_UP\",\n      \"amount\": 1000000,\n      \"item\": \"ITEM_05_INSURANCE_PREMIUM\"\n    },\n    {\n      \"method\": \"GROSS_UP\",\n      \"amount\": 5000000,\n      \"item\": \"ITEM_06_OTHER_ENJOYMENT_REVENUE\"\n    },\n    {\n      \"method\": \"GROSS\",\n      \"amount\": 50000000,\n      \"item\": \"ITEM_07_BONUS\"\n    },\n    {\n      \"method\": \"GROSS_UP\",\n      \"amount\": 6000000,\n      \"item\": \"ITEM_10_RETIREMENT_CONTRIBUTION\"\n    }\n  ],\n  \"referenceDate\": \"2101-12-31\",\n  \"paymentMethod\": \"COMBINED\",\n  \"externalId\": \"21ba5875-d732-401a-ace8-3b55741ed36b\",\n  \"multiplier\": 1,\n  \"paymentDate\": \"2101-12-31\",\n  \"calculationType\": \"REGULAR\",\n  \"workingDays\": 26\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import TaxCalculationRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_calculations.create(\n    tax_calculation_request=TaxCalculationRequest(\n        employee_id=\"d2ea6f82-dd24-4415-9e6a-73782100a625\",\n        incomes=[\n            {\"method\": \"GROSS_UP\", \"amount\": 40000000, \"item\": \"ITEM_01_BASIC_SALARY\"},\n            {\n                \"method\": \"GROSS_UP\",\n                \"amount\": 10000000,\n                \"item\": \"ITEM_03_OTHER_ALLOWANCE\",\n            },\n            {\"method\": \"GROSS_UP\", \"amount\": 2000000, \"item\": \"ITEM_04_HONORARIUM\"},\n            {\n                \"method\": \"GROSS_UP\",\n                \"amount\": 1000000,\n                \"item\": \"ITEM_05_INSURANCE_PREMIUM\",\n            },\n            {\n                \"method\": \"GROSS_UP\",\n                \"amount\": 5000000,\n                \"item\": \"ITEM_06_OTHER_ENJOYMENT_REVENUE\",\n            },\n            {\"method\": \"GROSS\", \"amount\": 50000000, \"item\": \"ITEM_07_BONUS\"},\n            {\n                \"method\": \"GROSS_UP\",\n                \"amount\": 6000000,\n                \"item\": \"ITEM_10_RETIREMENT_CONTRIBUTION\",\n            },\n        ],\n        reference_date=\"2101-12-31\",\n        payment_method=\"COMBINED\",\n        external_id=\"21ba5875-d732-401a-ace8-3b55741ed36b\",\n        multiplier=1,\n        payment_date=\"2101-12-31\",\n        calculation_type=\"REGULAR\",\n        working_days=26,\n    )\n)"
  /core/v1/tax-calculations/{id}:
    get:
      tags:
      - tax
      summary: Get Tax Calculations by Id
      description: Return the tax calculation by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  kpp:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  externalId:
                    type: string
                  year:
                    type: number
                  month:
                    type: number
                  pph21Method:
                    type: string
                  membershipNumber:
                    type: string
                  membershipAddress:
                    type: string
                  totalMonthlyGrossIncome:
                    type: number
                  totalTaxAndAllowance:
                    type: object
                    properties:
                      original:
                        type: number
                      penalty:
                        type: number
                      tax:
                        type: number
                      allowance:
                        type: number
                  paidTaxAndAllowance:
                    type: object
                    properties:
                      original:
                        type: number
                      penalty:
                        type: number
                      tax:
                        type: number
                      allowance:
                        type: number
                  type:
                    type: string
                  taxObject:
                    type: string
                    enum:
                    - PERMANENT
                    - TEMPORARY
                    - MULTI_LEVEL_DISTRIBUTOR
                    - INSURANCE_AGENT
                    - MERCHANT_GOODS
                    - EXPERT_CONTINUOUS
                    - EXPERT_NON_CONTINUOUS
                    - CONTINUOUS
                    - NON_CONTINUOUS
                    - COMMISSIONER
                    - FORMER_EMPLOYEE
                    - EVENT_PARTICIPANT
                    - EXPATRIATE
                    - EXPERT
                    - MEETING_PARTICIPANT
                    - COMMITTEE_PARTICIPANT
                    - EDUCATION_PARTICIPANT
                    - OTHER_PARTICIPANT
                    - ADVISOR_LECTURER
                    - AUTHOR_RESEARCHER
                    - SERVICE_PROVIDER
                    - ADVERTISING_AGENT
                    - PROJECT_MANAGER
                    - INTERMEDIARY
                    - ARTIST
                    - ATHLETE
                    - TEMPORARY_MONTHLY
                    - COMPETITION_PARTICIPANT
                  referenceYear:
                    type: number
                  referenceMonth:
                    type: number
                  multiplier:
                    type: number
                  calculationType:
                    type: string
                  paymentMethod:
                    type: string
                    enum:
                    - COMBINED
                    - SEPARATED
                  referenceDate:
                    type: string
                    format: date
                  paymentDate:
                    type: string
                    format: date
              example:
                id: 79f537af-83b2-4a8b-851c-5d14ec046554
                createdBy: admin
                createdDate: 1092038012
                updatedBy: admin
                updatedDate: 1092038012
                employee:
                  id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  identificationNumber: id-01
                  name: Employee Name
                kpp:
                  id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  identificationNumber: kppd-01
                  name: KPP Name
                externalId: 79f537af-83b2-4a8b-851c-5d14ec046553
                year: 2020
                month: 1
                pph21Method: GROSS
                membershipNumber: '123456789012345'
                membershipAddress: Kalideres
                totalMonthlyGrossIncome: 7000000
                totalTaxAndAllowance:
                  original: 60000
                  penalty: 200
                  tax: 60200
                  allowance: 0
                paidTaxAndAllowance:
                  original: 60000
                  penalty: 200
                  tax: 60200
                  allowance: 0
                type: PERMANENT
                taxObject: PERMANENT
                referenceYear: 2020
                referenceMonth: 1
                multiplier: 1
                calculationType: REGULAR
                paymentMethod: COMBINED
                referenceDate: '2020-01-01'
                paymentDate: '2020-01-01'
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-calculations/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_calculations.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
    delete:
      tags:
      - tax
      summary: Undo Tax Calculation by Id
      description: Undo the tax calculation by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/core/v1/tax-calculations/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_calculations.delete(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/tax-reports/1721-a1:
    get:
      tags:
      - tax
      summary: Get 1721 A1 Reports
      description: Return the 1721 A1 reports.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          kpp:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          externalId:
                            type: string
                          year:
                            type: number
                          endMonth:
                            type: number
                          sequenceNumber:
                            type: number
                          membershipNumber:
                            type: string
                          ptkp:
                            type: string
                          jobTitle:
                            type: string
                          totalGrossIncome:
                            type: number
                          outstandingOriginalTax:
                            type: number
                          outstandingPenaltyTax:
                            type: number
                          outstandingTax:
                            type: number
                          paidOriginalTax:
                            type: number
                          paidPenaltyTax:
                            type: number
                          paidTax:
                            type: number
                          paidTaxAllowance:
                            type: number
                          basicSalary:
                            type: number
                          taxAllowance:
                            type: number
                          otherAllowance:
                            type: number
                          honorarium:
                            type: number
                          insurancePremium:
                            type: number
                          enjoymentRevenue:
                            type: number
                          bonus:
                            type: number
                          retirementContribution:
                            type: number
                          totalDeduction:
                            type: number
                          netIncome:
                            type: number
                          previousNetIncome:
                            type: number
                          totalNetIncome:
                            type: number
                          baseIncomeTaxDeduction:
                            type: number
                          baseIncomeTax:
                            type: number
                          yearlyOriginalTax:
                            type: number
                          yearlyPenaltyTax:
                            type: number
                          yearlyTax:
                            type: number
                          previousOriginalTax:
                            type: number
                          previousPenaltyTax:
                            type: number
                          previousTax:
                            type: number
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  employee:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                  kpp:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: kppid-01
                    name: KPP Name
                  externalId: 79f537af-83b2-4a8b-851c-5d14ec046553
                  year: 2020
                  endMonth: 12
                  sequenceNumber: 1
                  membershipNumber: '123456789012345'
                  ptkp: '54000000'
                  jobTitle: Titel
                  totalGrossIncome: 7000000
                  outstandingOriginalTax: 7000000
                  outstandingPenaltyTax: 0
                  outstandingTax: 7000000
                  paidOriginalTax: 7000000
                  paidPenaltyTax: 0
                  paidTax: 7000000
                  paidTaxAllowance: 0
                  basicSalary: 800000000
                  taxAllowance: 0
                  otherAllowance: 0
                  honorarium: 0
                  insurancePremium: 0
                  enjoymentRevenue: 0
                  bonus: 0
                  retirementContribution: 0
                  totalDeduction: 0
                  netIncome: 800000
                  previousNetIncome: 0
                  totalNetIncome: 800000
                  baseIncomeTaxDeduction: 50000
                  baseIncomeTax: 300000
                  yearlyOriginalTax: 70000
                  yearlyPenaltyTax: 0
                  yearlyTax: 70000
                  previousOriginalTax: 0
                  previousPenaltyTax: 0
                  previousTax: 0
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 8
                totalElements: 8
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-reports/1721-a1\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_reports.by_1721_a1.list()"
  /core/v1/tax-reports/1721-a1/{id}/download:
    get:
      tags:
      - tax
      summary: Download 1721 A1 Report
      description: Download the 1721 A1 report.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-reports/1721-a1/f47ac10b-58cc-4372-a567-0e02b2c3d479/download\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_reports.by_1721_a1.download.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/tax-reports/1721-vi:
    get:
      tags:
      - tax
      summary: Get 1721 VI Reports
      description: Return the 1721 VI reports.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          kpp:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          year:
                            type: number
                            description: Tax report year
                          month:
                            type: number
                            description: Tax report month
                          sequenceNumber:
                            type: number
                            description: Report sequence number
                          npwpNumber:
                            type: string
                            description: NPWP (Tax identification number)
                          monthlyGrossIncome:
                            type: number
                            description: Monthly gross income amount
                          tax:
                            type: object
                            properties:
                              original:
                                type: number
                                description: Original tax amount
                              penalty:
                                type: number
                                description: Penalty tax amount
                              total:
                                type: number
                                description: Total tax amount including penalty
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  employee:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                  kpp:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                  year: 2020
                  month: 12
                  sequenceNumber: 1
                  npwpNumber: '123456789012345'
                  monthlyGrossIncome: 7000000
                  tax:
                    original: 50000
                    penalty: 0
                    total: 50000
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 8
                totalElements: 8
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-reports/1721-vi\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_reports.by_1721_vi.list()"
  /core/v1/tax-reports/1721-vi/{id}/download:
    get:
      tags:
      - tax
      summary: Download 1721 VI Report
      description: Download the 1721 VI report.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-reports/1721-vi/f47ac10b-58cc-4372-a567-0e02b2c3d479/download\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_reports.by_1721_vi.download.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/tax-reports/1721-vi/detail:
    get:
      tags:
      - tax
      summary: Get Detailed 1721 VI Reports
      description: Return the detailed 1721 VI reports.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  kpp:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  year:
                    type: number
                    description: Tax report year
                  month:
                    type: number
                    description: Tax report month
                  sequenceNumber:
                    type: number
                    description: Report sequence number
                  npwpNumber:
                    type: string
                    description: NPWP (Tax identification number)
                  monthlyGrossIncome:
                    type: number
                    description: Monthly gross income amount
                  tax:
                    type: object
                    properties:
                      original:
                        type: number
                        description: Original tax amount
                      penalty:
                        type: number
                        description: Penalty tax amount
                      total:
                        type: number
                        description: Total tax amount including penalty
                  totalGrossIncome:
                    type: number
                    description: Total gross income amount
                  pkp:
                    type: number
                    description: PKP (Penghasilan Kena Pajak) value
              example:
                id: 79f537af-83b2-4a8b-851c-5d14ec046554
                employee:
                  id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  identificationNumber: id-01
                  name: Employee Name
                kpp:
                  id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  identificationNumber: kppid-01
                  name: KPP Name
                year: 2020
                month: 12
                sequenceNumber: 1
                npwpNumber: '123456789012345'
                monthlyGrossIncome: 7000000
                tax:
                  original: 50000
                  penalty: 0
                  total: 50000
                totalGrossIncome: 7000000
                pkp: 3000000
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-reports/1721-vi/detail\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_reports.by_1721_vi.detail.list()"
  /core/v1/tax-reports/1721-vii:
    get:
      tags:
      - tax
      summary: Get 1721 VII Reports
      description: Return the 1721 VII reports.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          kpp:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          year:
                            type: number
                            description: Tax report year
                          month:
                            type: number
                            description: Tax report month
                          sequenceNumber:
                            type: number
                            description: Report sequence number
                          npwpNumber:
                            type: string
                            description: NPWP (Tax identification number)
                          income:
                            type: number
                            description: Total income amount
                          tax:
                            type: number
                            description: Tax amount
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  employee:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                  kpp:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: kpp-01
                    name: Kpp Name
                  year: 2020
                  month: 12
                  sequenceNumber: 1
                  npwpNumber: '123456789012345'
                  income: 7000000
                  tax: 30000
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 8
                totalElements: 8
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-reports/1721-vii\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_reports.by_1721_vii.list()"
  /core/v1/tax-reports/1721-vii/{id}/download:
    get:
      tags:
      - tax
      summary: Download 1721 VII Report
      description: Download the 1721 VII report.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-reports/1721-vii/f47ac10b-58cc-4372-a567-0e02b2c3d479/download\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_reports.by_1721_vii.download.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/pph21-reports/1721-vi:
    get:
      tags:
      - tax
      summary: Get 1721 VI Reports
      description: Return the 1721 VI reports.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          kpp:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          year:
                            type: number
                            description: Tax report year
                          month:
                            type: number
                            description: Tax report month
                          sequenceNumber:
                            type: number
                            description: Report sequence number
                          npwpNumber:
                            type: string
                            description: NPWP (Tax identification number)
                          monthlyGrossIncome:
                            type: number
                            description: Monthly gross income amount
                          tax:
                            type: object
                            properties:
                              original:
                                type: number
                                description: Original tax amount
                              penalty:
                                type: number
                                description: Penalty tax amount
                              total:
                                type: number
                                description: Total tax amount including penalty
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  employee:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                  kpp:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                  year: 2020
                  month: 12
                  sequenceNumber: 1
                  npwpNumber: '123456789012345'
                  monthlyGrossIncome: 7000000
                  tax:
                    original: 50000
                    penalty: 0
                    total: 50000
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 8
                totalElements: 8
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/pph21-reports/1721-vi\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.pph21_reports.by_1721_vi.list()"
  /core/v1/pph21-reports/1721-vi/{id}/download:
    get:
      tags:
      - tax
      summary: Download 1721 VI Report
      description: Download the 1721 VI report.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/pph21-reports/1721-vi/f47ac10b-58cc-4372-a567-0e02b2c3d479/download\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.pph21_reports.by_1721_vi.download.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/pph21-reports/1721-vi/detail:
    get:
      tags:
      - tax
      summary: Get Detailed 1721 VI Reports
      description: Return the detailed 1721 VI reports.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  kpp:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  year:
                    type: number
                    description: Tax report year
                  month:
                    type: number
                    description: Tax report month
                  sequenceNumber:
                    type: number
                    description: Report sequence number
                  npwpNumber:
                    type: string
                    description: NPWP (Tax identification number)
                  monthlyGrossIncome:
                    type: number
                    description: Monthly gross income amount
                  tax:
                    type: object
                    properties:
                      original:
                        type: number
                        description: Original tax amount
                      penalty:
                        type: number
                        description: Penalty tax amount
                      total:
                        type: number
                        description: Total tax amount including penalty
                  totalGrossIncome:
                    type: number
                    description: Total gross income amount
                  pkp:
                    type: number
                    description: PKP (Penghasilan Kena Pajak) value
              example:
                id: 79f537af-83b2-4a8b-851c-5d14ec046554
                employee:
                  id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  identificationNumber: id-01
                  name: Employee Name
                kpp:
                  id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  identificationNumber: kppid-01
                  name: KPP Name
                year: 2020
                month: 12
                sequenceNumber: 1
                npwpNumber: '123456789012345'
                monthlyGrossIncome: 7000000
                tax:
                  original: 50000
                  penalty: 0
                  total: 50000
                totalGrossIncome: 7000000
                pkp: 3000000
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/pph21-reports/1721-vi/detail\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.pph21_reports.by_1721_vi.detail.list()"
  /core/v1/pph21-reports/1721-vii:
    get:
      tags:
      - tax
      summary: Get 1721 VII Reports
      description: Return the 1721 VII reports.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          kpp:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          year:
                            type: number
                            description: Tax report year
                          month:
                            type: number
                            description: Tax report month
                          sequenceNumber:
                            type: number
                            description: Report sequence number
                          npwpNumber:
                            type: string
                            description: NPWP (Tax identification number)
                          income:
                            type: number
                            description: Total income amount
                          tax:
                            type: number
                            description: Tax amount
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  employee:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                  kpp:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: kpp-01
                    name: Kpp Name
                  year: 2020
                  month: 12
                  sequenceNumber: 1
                  npwpNumber: '123456789012345'
                  income: 7000000
                  tax: 30000
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 8
                totalElements: 8
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/pph21-reports/1721-vii\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.pph21_reports.by_1721_vii.list()"
  /core/v1/pph21-reports/1721-vii/{id}/download:
    get:
      tags:
      - tax
      summary: Download 1721 VII Report
      description: Download the 1721 VII report.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/pph21-reports/1721-vii/f47ac10b-58cc-4372-a567-0e02b2c3d479/download\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.pph21_reports.by_1721_vii.download.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/tax-membership-histories/{id}:
    get:
      tags:
      - tax-membership-history
      summary: Get Tax Membership History by Id
      description: Get a specific tax membership history record by its unique identifier
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
        description: Unique identifier for the tax membership history record
      responses:
        '200':
          description: Tax membership history returned successfully
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier for the tax membership
                    foreignTaxObject:
                      type: boolean
                      description: Whether this is a foreign tax object
                    kppId:
                      type: string
                      description: Tax office (KPP) identifier
                    linkToPayroll:
                      type: boolean
                      description: Whether this tax membership is linked to payroll
                    membershipEndPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax membership ends
                    membershipStartPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax membership starts
                    effectiveEndPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax effectiveness ends
                    effectiveStartPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax becomes effective
                    method:
                      type: string
                      enum:
                      - GROSS
                      - NETTO
                      - GROSS_UP
                      - MIX
                      - MIX_GROSS_NETTO
                      - MIX_NETTO_GROSS
                      - MIX_GROSS_UP_GROSS
                      description: PPh21 calculation method
                    moreThanOneEmployer:
                      type: boolean
                      description: Whether employee has more than one employer
                    npwpAddress:
                      type: string
                      description: Address registered with NPWP
                    npwpNumber:
                      type: string
                      pattern: ^$|^\d+$
                      description: NPWP (Tax ID) number - can be empty or contain only digits
                    tin:
                      type: string
                      description: Tax Identification Number
                    previousNetIncome:
                      type: number
                      format: double
                      minimum: 0
                      description: Previous net income amount
                    previousPaidPph:
                      type: number
                      format: double
                      minimum: 0
                      description: Previous paid PPh amount
                    ptkpCategoryId:
                      type: string
                      description: PTKP (Personal Tax Free Income) category identifier
                    taxObject:
                      type: string
                      enum:
                      - PERMANENT
                      - TEMPORARY
                      - MULTI_LEVEL_DISTRIBUTOR
                      - INSURANCE_AGENT
                      - MERCHANT_GOODS
                      - EXPERT_CONTINUOUS
                      - EXPERT_NON_CONTINUOUS
                      - CONTINUOUS
                      - NON_CONTINUOUS
                      - COMMISSIONER
                      - FORMER_EMPLOYEE
                      - EVENT_PARTICIPANT
                      - EXPATRIATE
                      - EXPERT
                      - MEETING_PARTICIPANT
                      - COMMITTEE_PARTICIPANT
                      - EDUCATION_PARTICIPANT
                      - OTHER_PARTICIPANT
                      - ADVISOR_LECTURER
                      - AUTHOR_RESEARCHER
                      - SERVICE_PROVIDER
                      - ADVERTISING_AGENT
                      - PROJECT_MANAGER
                      - INTERMEDIARY
                      - ARTIST
                      - ATHLETE
                      - TEMPORARY_MONTHLY
                      - COMPETITION_PARTICIPANT
                      description: Type of tax object for the employee
                    useRecommendedPeriod:
                      type: boolean
                    taxDependents:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                            description: Name of the tax dependent
                          ptkpRelationType:
                            type: string
                            enum:
                            - SPOUSE
                            - CHILD
                            - PARENT
                            description: Relationship type for PTKP calculation
                          dateOfBirth:
                            type: string
                            format: date
                            description: Date of birth of the tax dependent
                          job:
                            type: string
                            description: Job or occupation of the tax dependent
                      description: List of tax dependents for PTKP calculation
                - type: object
                  properties:
                    employee:
                      type: object
                      properties:
                        id:
                          type: string
                        identificationNumber:
                          type: string
                        name:
                          type: string
              example:
                id: history-12345
                taxObject: PERMANENT
                membershipStartPeriod:
                  month: 1
                  year: 2024
                membershipEndPeriod:
                  month: 12
                  year: 2024
                effectiveStartPeriod:
                  month: 1
                  year: 2024
                effectiveEndPeriod:
                  month: 12
                  year: 2024
                method: GROSS
                npwpNumber: '123456789012345'
                npwpAddress: Jakarta Selatan, DKI Jakarta
                tin: TIN123456
                linkToPayroll: true
                moreThanOneEmployer: false
                foreignTaxObject: false
                previousNetIncome: 100000000
                previousPaidPph: 5000000
                kppId: kpp-jakarta-selatan
                ptkpCategoryId: ptkp-tk-1
                taxDependents:
                - id: dep-1
                  name: Jane Doe
                  ptkpRelationType: SPOUSE
                  dateOfBirth: '1990-05-15'
                  job: Teacher
                employee:
                  id: emp-12345
                  identificationNumber: EMP001234
                  name: John Doe
        '400':
          description: Bad Request - Invalid ID format
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: BAD_REQUEST
                message: Invalid tax membership history ID format
                status: 400
                timestamp: '2025-08-01T08:37:27.801052926'
        '404':
          description: Tax membership history not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
              example:
                code: NOT_FOUND
                message: Tax membership history with ID 'history-12345' not found
                status: 404
                timestamp: '2025-08-01T08:37:27.801052926'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-membership-histories/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_membership_histories.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/tax-membership-histories/{id}/tax-subjects:
    put:
      tags:
      - tax-membership-history
      summary: Update Tax Membership History Tax Subject
      description: Update tax subject information for a specific tax membership history record
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
        description: Unique identifier for the tax membership history record
      responses:
        '200':
          description: Tax membership history tax subject updated successfully
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier for the tax membership
                    foreignTaxObject:
                      type: boolean
                      description: Whether this is a foreign tax object
                    kppId:
                      type: string
                      description: Tax office (KPP) identifier
                    linkToPayroll:
                      type: boolean
                      description: Whether this tax membership is linked to payroll
                    membershipEndPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax membership ends
                    membershipStartPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax membership starts
                    effectiveEndPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax effectiveness ends
                    effectiveStartPeriod:
                      allOf:
                      - type: object
                        properties:
                          month:
                            type: integer
                            minimum: 1
                            maximum: 12
                            description: Month of membership start period
                          year:
                            type: integer
                            minimum: 1970
                            description: Year of membership start period
                      description: Period when tax becomes effective
                    method:
                      type: string
                      enum:
                      - GROSS
                      - NETTO
                      - GROSS_UP
                      - MIX
                      - MIX_GROSS_NETTO
                      - MIX_NETTO_GROSS
                      - MIX_GROSS_UP_GROSS
                      description: PPh21 calculation method
                    moreThanOneEmployer:
                      type: boolean
                      description: Whether employee has more than one employer
                    npwpAddress:
                      type: string
                      description: Address registered with NPWP
                    npwpNumber:
                      type: string
                      pattern: ^$|^\d+$
                      description: NPWP (Tax ID) number - can be empty or contain only digits
                    tin:
                      type: string
                      description: Tax Identification Number
                    previousNetIncome:
                      type: number
                      format: double
                      minimum: 0
                      description: Previous net income amount
                    previousPaidPph:
                      type: number
                      format: double
                      minimum: 0
                      description: Previous paid PPh amount
                    ptkpCategoryId:
                      type: string
                      description: PTKP (Personal Tax Free Income) category identifier
                    taxObject:
                      type: string
                      enum:
                      - PERMANENT
                      - TEMPORARY
                      - MULTI_LEVEL_DISTRIBUTOR
                      - INSURANCE_AGENT
                      - MERCHANT_GOODS
                      - EXPERT_CONTINUOUS
                      - EXPERT_NON_CONTINUOUS
                      - CONTINUOUS
                      - NON_CONTINUOUS
                      - COMMISSIONER
                      - FORMER_EMPLOYEE
                      - EVENT_PARTICIPANT
                      - EXPATRIATE
                      - EXPERT
                      - MEETING_PARTICIPANT
                      - COMMITTEE_PARTICIPANT
                      - EDUCATION_PARTICIPANT
                      - OTHER_PARTICIPANT
                      - ADVISOR_LECTURER
                      - AUTHOR_RESEARCHER
                      - SERVICE_PROVIDER
                      - ADVERTISING_AGENT
                      - PROJECT_MANAGER
                      - INTERMEDIARY
                      - ARTIST
                      - ATHLETE
                      - TEMPORARY_MONTHLY
                      - COMPETITION_PARTICIPANT
                      description: Type of tax object for the employee
                    useRecommendedPeriod:
                      type: boolean
                    taxDependents:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                            description: Name of the tax dependent
                          ptkpRelationType:
                            type: string
                            enum:
                            - SPOUSE
                            - CHILD
                            - PARENT
                            description: Relationship type for PTKP calculation
                          dateOfBirth:
                            type: string
                            format: date
                            description: Date of birth of the tax dependent
                          job:
                            type: string
                            description: Job or occupation of the tax dependent
                      description: List of tax dependents for PTKP calculation
                - type: object
                  properties:
                    employee:
                      type: object
                      properties:
                        id:
                          type: string
                        identificationNumber:
                          type: string
                        name:
                          type: string
              example:
                id: history-12345
                taxObject: PERMANENT
                membershipStartPeriod:
                  month: 1
                  year: 2024
                membershipEndPeriod:
                  month: 12
                  year: 2024
                effectiveStartPeriod:
                  month: 1
                  year: 2024
                effectiveEndPeriod:
                  month: 12
                  year: 2024
                method: GROSS
                npwpNumber: '123456789012345'
                npwpAddress: Jakarta Selatan, DKI Jakarta
                tin: TIN123456
                linkToPayroll: true
                moreThanOneEmployer: false
                foreignTaxObject: false
                previousNetIncome: 100000000
                previousPaidPph: 5000000
                kppId: kpp-jakarta-selatan
                ptkpCategoryId: ptkp-tk-1
                taxDependents:
                - id: dep-1
                  name: Jane Doe
                  ptkpRelationType: SPOUSE
                  dateOfBirth: '1990-05-15'
                  job: Teacher
                employee:
                  id: emp-12345
                  identificationNumber: EMP001234
                  name: John Doe
        '400':
          description: Bad Request - Invalid input data
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
        '404':
          description: Tax membership history not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Error code
                  message:
                    type: string
                    description: Error message
                  status:
                    type: integer
                    description: HTTP status code
                  timestamp:
                    type: string
                    description: Timestamp when the error occurred
        '422':
          description: Unprocessable Entity - Business logic validation failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Error message
                  details:
                    type: array
                    items:
                      type: string
                    description: Business validation errors
      requestBody:
        required: true
        description: Tax subject information to update for the history record
        content:
          application/json:
            schema:
              type: object
              properties:
                npwpAddress:
                  type: string
                  description: Address registered with NPWP
                npwpNumber:
                  type: string
                  pattern: ^$|^\d+$
                  description: NPWP (Tax ID) number - can be empty or contain only digits
                idTku:
                  type: string
                  description: TKU (Tax Knowledge Unit) identifier
                tin:
                  type: string
                  description: Tax Identification Number
                kppId:
                  type: string
                  description: Tax office (KPP) identifier
                ptkpCategoryId:
                  type: string
                  description: PTKP (Personal Tax Free Income) category identifier
                taxDependents:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: Unique identifier for the tax dependent
                      name:
                        type: string
                        maxLength: 100
                        description: Name of the tax dependent
                      ptkpRelationType:
                        type: string
                        enum:
                        - CHILD
                        - SPOUSE
                        - PARENT
                        description: Relationship type for PTKP calculation
                      dateOfBirth:
                        type: string
                        format: date
                        description: Date of birth of the tax dependent (YYYY-MM-DD).
                      job:
                        type: string
                        maxLength: 100
                        description: Job or occupation of the tax dependent
                    required:
                    - name
                    - ptkpRelationType
                    - dateOfBirth
                  description: List of tax dependents for PTKP calculation
              required:
              - npwpAddress
              additionalProperties: false
            example:
              npwpAddress: Jakarta Selatan, DKI Jakarta
              npwpNumber: '123456789012345'
              idTku: TKU123456
              tin: TIN123456
              kppId: kpp-jakarta-selatan
              ptkpCategoryId: ptkp-tk-1
              taxDependents:
              - id: dep-1
                name: Jane Doe
                ptkpRelationType: SPOUSE
                dateOfBirth: '1990-05-15'
                job: Teacher
              - id: dep-2
                name: John Doe Jr
                ptkpRelationType: CHILD
                dateOfBirth: '2015-03-20'
                job: Student
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/tax-membership-histories/f47ac10b-58cc-4372-a567-0e02b2c3d479/tax-subjects\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"npwpAddress\": \"Jakarta Selatan, DKI Jakarta\",\n  \"npwpNumber\": \"123456789012345\",\n  \"idTku\": \"TKU123456\",\n  \"tin\": \"TIN123456\",\n  \"kppId\": \"kpp-jakarta-selatan\",\n  \"ptkpCategoryId\": \"ptkp-tk-1\",\n  \"taxDependents\": [\n    {\n      \"id\": \"dep-1\",\n      \"name\": \"Jane Doe\",\n      \"ptkpRelationType\": \"SPOUSE\",\n      \"dateOfBirth\": \"1990-05-15\",\n      \"job\": \"Teacher\"\n    },\n    {\n      \"id\": \"dep-2\",\n      \"name\": \"John Doe Jr\",\n      \"ptkpRelationType\": \"CHILD\",\n      \"dateOfBirth\": \"2015-03-20\",\n      \"job\": \"Student\"\n    }\n  ]\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import TaxMembershipTaxSubjectRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_membership_histories.tax_subjects.update_many(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    tax_membership_tax_subject_request=TaxMembershipTaxSubjectRequest(\n        npwp_address=\"Jakarta Selatan, DKI Jakarta\",\n        npwp_number=\"123456789012345\",\n        id_tku=\"TKU123456\",\n        tin=\"TIN123456\",\n        kpp_id=\"kpp-jakarta-selatan\",\n        ptkp_category_id=\"ptkp-tk-1\",\n        tax_dependents=[\n            {\n                \"id\": \"dep-1\",\n                \"name\": \"Jane Doe\",\n                \"ptkpRelationType\": \"SPOUSE\",\n                \"dateOfBirth\": \"1990-05-15\",\n                \"job\": \"Teacher\",\n            },\n            {\n                \"id\": \"dep-2\",\n                \"name\": \"John Doe Jr\",\n                \"ptkpRelationType\": \"CHILD\",\n                \"dateOfBirth\": \"2015-03-20\",\n                \"job\": \"Student\",\n            },\n        ],\n    ),\n)"
  /core/v1/tax-reports/1721-viii:
    get:
      tags:
      - tax
      summary: Get 1721 VIII Reports
      description: Return the 1721 VIII reports.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          kpp:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          year:
                            type: number
                          month:
                            type: number
                          sequenceNumber:
                            type: number
                          npwpNumber:
                            type: string
                          address:
                            type: string
                          monthlyGrossIncome:
                            type: number
                          monthlyTax:
                            type: object
                            properties:
                              original:
                                type: number
                              penalty:
                                type: number
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  employee:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: id-01
                    name: Employee Name
                  kpp:
                    id: 79f537af-83b2-4a8b-851c-5d14ec046554
                    identificationNumber: kppid-01
                    name: KPP Name
                  year: 2020
                  month: 1
                  sequenceNumber: 1
                  npwpNumber: '123456789012345'
                  address: Address
                  monthlyGrossIncome: 100000
                  monthlyTax:
                    original: 10000
                    penalty: 0
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 8
                totalElements: 8
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-reports/1721-viii\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_reports.by_1721_viii.list()"
  /core/v1/tax-reports/1721-viii/{id}/download:
    get:
      tags:
      - tax
      summary: Download 1721 VIII Report
      description: Download the 1721 VIII report.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/tax-reports/1721-viii/f47ac10b-58cc-4372-a567-0e02b2c3d479/download\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_reports.by_1721_viii.download.list(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /core/v1/termination-entries/{id}/severance-plans:
    post:
      tags:
      - severance
      summary: Create Severance Plan
      description: Create a severance plan.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  kpp:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  paymentMethod:
                    type: string
                    enum:
                    - CASH
                    - TRANSFER
                    - NONE
                  pph21Method:
                    type: string
                  paymentOption:
                    type: string
                  total:
                    type: number
                  totalThp:
                    type: number
                  totalPph:
                    type: number
                  taxAllowance:
                    type: number
                  details:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        name:
                          type: string
                        category:
                          type: string
                        amount:
                          type: number
                        pph21ItemMethod:
                          type: string
                  paymentPlans:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        terminationEntryId:
                          type: string
                          format: uuid
                        terminationEntryCode:
                          type: string
                        employeeId:
                          type: string
                          format: uuid
                        employeeIdentificationNumber:
                          type: string
                        employeeName:
                          type: string
                        terminationReasonId:
                          type: string
                          format: uuid
                        terminationReasonName:
                          type: string
                        terminationDate:
                          type: string
                          format: date
                        plannedDate:
                          type: string
                          format: date
                        paymentDate:
                          type: string
                          format: date
                        paymentMethod:
                          type: string
                          enum:
                          - CASH
                          - TRANSFER
                          - NONE
                        paymentOption:
                          type: string
                        amount:
                          type: number
                        nonTaxableAmount:
                          type: number
                        thpAmount:
                          type: number
                        pphAmount:
                          type: number
                        taxAllowance:
                          type: number
              example:
                id: 79f537af-83b2-4a8b-851c-5d14ec046554
                kpp:
                  id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  identificationNumber: id-01
                  name: Kpp Name
                paymentMethod: TRANSFER
                pph21Method: GROSS
                paymentOption: ONCE
                total: 700000
                totalThp: 600000
                totalPph: 100000
                taxAllowance: 0
                details:
                - code: UP
                  name: Uang Pesangon
                  category: INCOME
                  amount: 70000
                  pph21ItemMethod: TAXABLE
                paymentPlans:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  terminationEntryId: 79f537af-83b2-4a8b-851c-5d14ec046554
                  terminationEntryCode: TRM-1
                  employeeId: 79f537af-83b2-4a8b-851c-5d14ec046554
                  employeeIdentificationNumber: id-1
                  employeeName: Nama
                  terminationReasonId: 79f537af-83b2-4a8b-851c-5d14ec046554
                  terminationReasonName: Pensiun
                  terminationDate: '2020-01-01'
                  plannedDate: '2020-01-01'
                  paymentDate: '2020-01-01'
                  paymentMethod: TRANSFER
                  paymentOption: ONCE
                  amount: 700000
                  nonTaxableAmount: 0
                  thpAmount: 600000
                  pphAmount: 100000
                  taxAllowance: 0
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                pph21Method:
                  type: string
                details:
                  type: array
                  items:
                    type: object
                    properties:
                      code:
                        type: string
                      name:
                        type: string
                      category:
                        type: string
                      amount:
                        type: number
                      pph21ItemMethod:
                        type: string
                    required:
                    - code
                    - name
                    - category
                    - amount
                    - pph21ItemMethod
                paymentPlans:
                  type: array
                  items:
                    type: object
                    properties:
                      plannedDate:
                        type: string
                      paymentDate:
                        type: string
                      amount:
                        type: number
                    required:
                    - plannedDate
                    - paymentDate
                    - amount
              required:
              - pph21Method
              - details
              - paymentPlans
            example:
              pph21Method: GROSS
              details:
              - code: UP
                name: Uang Pesangon
                category: INCOME
                amount: 70000
                pph21ItemMethod: TAXABLE
              paymentPlans:
              - plannedDate: '2020-01-01'
                paymentDate: '2020-01-01'
                amount: 700000
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/termination-entries/f47ac10b-58cc-4372-a567-0e02b2c3d479/severance-plans\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"pph21Method\": \"GROSS\",\n  \"details\": [\n    {\n      \"code\": \"UP\",\n      \"name\": \"Uang Pesangon\",\n      \"category\": \"INCOME\",\n      \"amount\": 70000,\n      \"pph21ItemMethod\": \"TAXABLE\"\n    }\n  ],\n  \"paymentPlans\": [\n    {\n      \"plannedDate\": \"2020-01-01\",\n      \"paymentDate\": \"2020-01-01\",\n      \"amount\": 700000\n    }\n  ]\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import SeverancePlanRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.termination_entries.severance_plans.create(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    severance_plan_request=SeverancePlanRequest(\n        pph21_method=\"GROSS\",\n        details=[\n            {\n                \"code\": \"UP\",\n                \"name\": \"Uang Pesangon\",\n                \"category\": \"INCOME\",\n                \"amount\": 70000,\n                \"pph21ItemMethod\": \"TAXABLE\",\n            }\n        ],\n        payment_plans=[\n            {\"plannedDate\": \"2020-01-01\", \"paymentDate\": \"2020-01-01\", \"amount\": 700000}\n        ],\n    ),\n)"
  /core/v1/termination-reasons:
    get:
      tags:
      - termination
      summary: Get Termination Reason
      description: |
        ### Search Query
        | Supported Keys          | Supported Operators | Notes                      |
        |-------------------------|---------------------|----------------------------|
        | name                    | `:`                 | Like operator              |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          terminationPph21Reason:
                            type: string
                            deprecated: true
                            description: Use taxReason instead
                          terminationBpjsManpowerReason:
                            type: string
                            deprecated: true
                            description: Use bpjsManpowerReason instead
                          terminationReasonCategory:
                            type: string
                            deprecated: true
                            description: Use reasonCategory instead
                          taxReason:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              taxAnnualized:
                                type: boolean
                          bpjsManpowerReason:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                          reasonCategory:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                          severance:
                            type: boolean
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  name: Termination reason for deleted template
                  terminationPph21Reason: Pensiun
                  terminationBpjsManpowerReason: Mengundurkan diri
                  terminationReasonCategory: Force Majeur
                  taxReason:
                    id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb7
                    name: Pensiun
                    taxAnnualized: false
                  bpjsManpowerReason:
                    id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb1
                    name: Mengundurkan diri
                  reasonCategory:
                    id: 60a2e07e-b5ff-11e6-80f5-76304dec7eb7
                    name: Force Majeur
                  severance: false
                - id: fe0b217f-dd55-426a-b987-9a618ca794fe
                  name: Mengundurkan diri dengan permohonan 30 hari sebelumnya
                  terminationPph21Reason: PHK
                  terminationBpjsManpowerReason: PHK
                  terminationReasonCategory: PHK Atas Kehendak Karyawan
                  taxReason:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK
                    taxAnnualized: false
                  bpjsManpowerReason:
                    id: 7373bcba-85a0-467a-a36e-7ed8366b12f5
                    name: PHK
                  reasonCategory:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK Atas Kehendak Karyawan
                  severance: true
                - id: f8c6557f-d265-46d7-b496-ae3d666a93ed
                  name: Penggabungan kepemilikan perusahaan dan karyawan tidak melanjutkan hubungan kerja
                  terminationPph21Reason: PHK
                  terminationBpjsManpowerReason: PHK
                  terminationReasonCategory: PHK Atas Kehendak Karyawan
                  taxReason:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK
                    taxAnnualized: false
                  bpjsManpowerReason:
                    id: 7373bcba-85a0-467a-a36e-7ed8366b12f5
                    name: PHK
                  reasonCategory:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK Atas Kehendak Karyawan
                  severance: true
                - id: cc15dba5-b836-4e06-9067-abc63943d3aa
                  name: Karyawan mangkir tanpa keterangan tertulis dan telah dipanggil oleh perusahaan 2 (dua) kali
                  terminationPph21Reason: PHK
                  terminationBpjsManpowerReason: PHK
                  terminationReasonCategory: PHK Atas Kehendak Perusahaan
                  taxReason:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK
                    taxAnnualized: false
                  bpjsManpowerReason:
                    id: 7373bcba-85a0-467a-a36e-7ed8366b12f5
                    name: PHK
                  reasonCategory:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK Atas Kehendak Karyawan
                  severance: true
                - id: cb87595f-843d-42d9-b523-7086145096b0
                  name: Karyawan ditahan pihak berwajib
                  terminationPph21Reason: PHK
                  terminationBpjsManpowerReason: PHK
                  terminationReasonCategory: PHK Atas Kehendak Perusahaan
                  taxReason:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK
                    taxAnnualized: false
                  bpjsManpowerReason:
                    id: 7373bcba-85a0-467a-a36e-7ed8366b12f5
                    name: PHK
                  reasonCategory:
                    id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK Atas Kehendak Perusahaan
                  severance: true
                - id: a8a54fc3-51e5-4ac2-9fcf-f2fb715d1ce2
                  name: Sakit berkepanjangan dan tidak dapat lanjut bekerja setelah 12 (dua belas) bulan
                  terminationPph21Reason: PHK
                  terminationBpjsManpowerReason: Cacat total tetap
                  terminationReasonCategory: PHK Atas Kehendak Perusahaan
                  taxReason:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK
                    taxAnnualized: false
                  bpjsManpowerReason:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb2
                    name: Cacat total tetap
                  reasonCategory:
                    id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK Atas Kehendak Perusahaan
                  severance: true
                - id: 7e7aaf65-7f77-43c0-ab53-5ad7c48e3a4f
                  name: Pensiun
                  terminationPph21Reason: Pensiun
                  terminationBpjsManpowerReason: Usia pensiun
                  terminationReasonCategory: PHK Atas Kehendak Perusahaan
                  taxReason:
                    id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb7
                    name: Pensiun
                    taxAnnualized: false
                  bpjsManpowerReason:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb3
                    name: Usia pensiun
                  reasonCategory:
                    id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK Atas Kehendak Perusahaan
                  severance: true
                - id: 7aa6d7f4-8066-4ad3-b3c4-99a1c13e2fea
                  name: Perusahaan melakukan tindakan kurang menyenangkan
                  terminationPph21Reason: PHK
                  terminationBpjsManpowerReason: PHK
                  terminationReasonCategory: PHK Atas Kehendak Karyawan
                  taxReason:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK
                    taxAnnualized: false
                  bpjsManpowerReason:
                    id: 7373bcba-85a0-467a-a36e-7ed8366b12f5
                    name: PHK
                  reasonCategory:
                    id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                    name: PHK Atas Kehendak Karyawan
                  severance: true
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 8
                totalElements: 8
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/termination-reasons\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.termination_reasons.list()"
    post:
      tags:
      - termination
      summary: Create Termination Reason
      description: Create a termination reason.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  terminationPph21Reason:
                    type: string
                    deprecated: true
                    description: Use taxReason instead
                  terminationBpjsManpowerReason:
                    type: string
                    deprecated: true
                    description: Use bpjsManpowerReason instead
                  terminationReasonCategory:
                    type: string
                    deprecated: true
                    description: Use reasonCategory instead
                  taxReason:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      taxAnnualized:
                        type: boolean
                  bpjsManpowerReason:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  reasonCategory:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  severance:
                    type: boolean
              example:
                id: 02bcd3f5-a07b-4f6c-88aa-5474a604ba56
                name: Meninggalkan Indonesia selama-lamanya
                terminationPph21Reason: Meninggalkan Indonesia selama-lamanya
                terminationBpjsManpowerReason: Meninggalkan wilayah NKRI selamanya
                terminationReasonCategory: PHK Atas Kehendak Karyawan
                taxReason:
                  id: 233ed3e1-3d8d-4138-99d2-b6d831247dad
                  name: Meninggalkan Indonesia selama-lamanya
                  taxAnnualized: true
                bpjsManpowerReason:
                  id: 60a2e07e-b5ff-11e6-80f5-76304dec7eb6
                  name: Meninggalkan wilayah NKRI selamanya
                reasonCategory:
                  id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                  name: PHK Atas Kehendak Karyawan
                severance: false
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                taxReason:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                bpjsManpowerReason:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                reasonCategory:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                severance:
                  type: boolean
                  default: false
              required:
              - name
              - reasonCategory
              - taxReason
              - bpjsManpowerReason
            example:
              name: Meninggalkan Indonesia selama-lamanya
              taxReason:
                id: 233ed3e1-3d8d-4138-99d2-b6d831247dad
              bpjsManpowerReason:
                id: 60a2e07e-b5ff-11e6-80f5-76304dec7eb6
              reasonCategory:
                id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
              severance: false
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/termination-reasons\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"name\": \"Meninggalkan Indonesia selama-lamanya\",\n  \"taxReason\": {\n    \"id\": \"233ed3e1-3d8d-4138-99d2-b6d831247dad\"\n  },\n  \"bpjsManpowerReason\": {\n    \"id\": \"60a2e07e-b5ff-11e6-80f5-76304dec7eb6\"\n  },\n  \"reasonCategory\": {\n    \"id\": \"60a2db60-b5ff-11e6-80f5-76304dec7eb7\"\n  },\n  \"severance\": false\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest, TerminationReasonRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.termination_reasons.create(\n    termination_reason_request=TerminationReasonRequest(\n        name=\"Meninggalkan Indonesia selama-lamanya\",\n        tax_reason=IdRequest(id=\"233ed3e1-3d8d-4138-99d2-b6d831247dad\"),\n        bpjs_manpower_reason=IdRequest(id=\"60a2e07e-b5ff-11e6-80f5-76304dec7eb6\"),\n        reason_category=IdRequest(id=\"60a2db60-b5ff-11e6-80f5-76304dec7eb7\"),\n        severance=False,\n    )\n)"
  /core/v1/termination-reasons/{id}:
    put:
      tags:
      - termination
      summary: Update Termination Reason
      description: Update the termination reason.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  terminationPph21Reason:
                    type: string
                    deprecated: true
                    description: Use taxReason instead
                  terminationBpjsManpowerReason:
                    type: string
                    deprecated: true
                    description: Use bpjsManpowerReason instead
                  terminationReasonCategory:
                    type: string
                    deprecated: true
                    description: Use reasonCategory instead
                  taxReason:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      taxAnnualized:
                        type: boolean
                  bpjsManpowerReason:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  reasonCategory:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  severance:
                    type: boolean
              example:
                id: 02bcd3f5-a07b-4f6c-88aa-5474a604ba56
                name: Meninggalkan Indonesia selama-lamanya
                terminationPph21Reason: Meninggalkan Indonesia selama-lamanya
                terminationBpjsManpowerReason: Meninggalkan wilayah NKRI selamanya
                terminationReasonCategory: PHK Atas Kehendak Karyawan
                taxReason:
                  id: 233ed3e1-3d8d-4138-99d2-b6d831247dad
                  name: Meninggalkan Indonesia selama-lamanya
                  taxAnnualized: true
                bpjsManpowerReason:
                  id: 60a2e07e-b5ff-11e6-80f5-76304dec7eb6
                  name: Meninggalkan wilayah NKRI selamanya
                reasonCategory:
                  id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
                  name: PHK Atas Kehendak Karyawan
                severance: false
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                taxReason:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                bpjsManpowerReason:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                reasonCategory:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                severance:
                  type: boolean
                  default: false
              required:
              - name
              - reasonCategory
              - taxReason
              - bpjsManpowerReason
            example:
              name: Meninggalkan Indonesia selama-lamanya
              taxReason:
                id: 233ed3e1-3d8d-4138-99d2-b6d831247dad
              bpjsManpowerReason:
                id: 60a2e07e-b5ff-11e6-80f5-76304dec7eb6
              reasonCategory:
                id: 60a2db60-b5ff-11e6-80f5-76304dec7eb7
              severance: false
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/termination-reasons/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"name\": \"Meninggalkan Indonesia selama-lamanya\",\n  \"taxReason\": {\n    \"id\": \"233ed3e1-3d8d-4138-99d2-b6d831247dad\"\n  },\n  \"bpjsManpowerReason\": {\n    \"id\": \"60a2e07e-b5ff-11e6-80f5-76304dec7eb6\"\n  },\n  \"reasonCategory\": {\n    \"id\": \"60a2db60-b5ff-11e6-80f5-76304dec7eb7\"\n  },\n  \"severance\": false\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest, TerminationReasonRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.termination_reasons.update(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    termination_reason_request=TerminationReasonRequest(\n        name=\"Meninggalkan Indonesia selama-lamanya\",\n        tax_reason=IdRequest(id=\"233ed3e1-3d8d-4138-99d2-b6d831247dad\"),\n        bpjs_manpower_reason=IdRequest(id=\"60a2e07e-b5ff-11e6-80f5-76304dec7eb6\"),\n        reason_category=IdRequest(id=\"60a2db60-b5ff-11e6-80f5-76304dec7eb7\"),\n        severance=False,\n    ),\n)"
  /core/v1/termination-reason-categories:
    get:
      tags:
      - termination
      summary: Get Termination Reason Category
      description: |
        ### Search Query
        | Supported Keys          | Supported Operators | Notes                      |
        |-------------------------|---------------------|----------------------------|
        | name                    | `:`                 | Like operator              |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  name: Pengunduran Diri
                - id: fe0b217f-dd55-426a-b987-9a618ca794fe
                  name: Pensiun
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 2
                totalElements: 2
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/termination-reason-categories\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.termination_reason_categories.list()"
  /core/v1/termination-tax-reasons:
    get:
      tags:
      - termination
      summary: Get Termination Tax Reasons
      description: |
        ### Search Query
        | Supported Keys          | Supported Operators | Notes                      |
        |-------------------------|---------------------|----------------------------|
        | name                    | `:`                 | Like operator              |
        | taxAnnualized           | `:`                 | Equal operator             |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          taxAnnualized:
                            type: boolean
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  name: Alasan Medis
                  taxAnnualized: false
                - id: fe0b217f-dd55-426a-b987-9a618ca794fe
                  name: Pensiun
                  taxAnnualized: true
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 2
                totalElements: 2
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/termination-tax-reasons\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.termination_tax_reasons.list()"
  /core/v1/termination-bpjs-manpower-reasons:
    get:
      tags:
      - termination
      summary: Get Termination BPJS Manpower Reasons
      description: |
        ### Search Query
        | Supported Keys          | Supported Operators | Notes                      |
        |-------------------------|---------------------|----------------------------|
        | name                    | `:`                 | Like operator              |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  name: Pengunduran Diri
                - id: fe0b217f-dd55-426a-b987-9a618ca794fe
                  name: Pensiun
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 2
                totalElements: 2
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/termination-bpjs-manpower-reasons\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.termination_bpjs_manpower_reasons.list()"
  /core/v1/transition-calculations/process/count:
    get:
      tags:
      - transition-calculation
      summary: Get Transition Calculation Count
      deprecated: true
      description: |
        ⚠️ **This endpoint is deprecated.** 
        Transition Calculation Process now available at Regular Salary Process, so the menu and existing endpoint are deprecated and will be removed

        ---
        ### Search Query
        | Supported Keys               | Supported Operators | Notes                                                                       |
        | ---------------------------- | ------------------- | --------------------------------------------------------------------------- |
        | idIn                         | :                   | Equal operator with multiple values, each value separated with delimiters ; |
        | year                         | :                   | Like operator                                                               |
        | month                        | :                   | Like operator                                                               |
        | organizationId               | :                   | Like operator                                                               |
        | jobTitleId                   | :                   | Like operator                                                               |
        | locationId                   | :                   | Like operator                                                               |
        | employeeId                   | :                   | Like operator                                                               |
        | employeeName                 | :                   | Like operator                                                               |
        | employeeIdentificationNumber | :                   | Like operator                                                               |
        | startDate                    | :<br>><br><          | Equal<br>Greater than or equal to<br>Less than or equal to                  |
        | endDate                      | :<br>><br><          | Equal<br>Greater than or equal to<br>Less than or equal to                  |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  processedCount:
                    type: number
                  unprocessedCount:
                    type: number
              example:
                processedCount: 0
                unprocessedCount: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/transition-calculations/process/count\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.transition_calculations.process.count.list()"
  /core/v1/transition-calculations/process/processable/processed:
    get:
      tags:
      - transition-calculation
      summary: Get Processed Transition Calculation
      deprecated: true
      description: |
        ⚠️ **This endpoint is deprecated.**
        Transition Calculation Process now available at Regular Salary Process, so the menu and existing endpoint are deprecated and will be removed

        ---
        ### Search Query
        | Supported Keys               | Supported Operators | Notes                                                                       |
        | ---------------------------- | ------------------- | --------------------------------------------------------------------------- |
        | idIn                         | :                   | Equal operator with multiple values, each value separated with delimiters ; |
        | year                         | :                   | Like operator                                                               |
        | month                        | :                   | Like operator                                                               |
        | organizationId               | :                   | Like operator                                                               |
        | jobTitleId                   | :                   | Like operator                                                               |
        | locationId                   | :                   | Like operator                                                               |
        | employeeId                   | :                   | Like operator                                                               |
        | employeeName                 | :                   | Like operator                                                               |
        | employeeIdentificationNumber | :                   | Like operator                                                               |
        | startDate                    | :<br>><br><          | Equal<br>Greater than or equal to<br>Less than or equal to                  |
        | endDate                      | :<br>><br><          | Equal<br>Greater than or equal to<br>Less than or equal to                  |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          costCenter:
                            type: object
                            properties:
                              name:
                                type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          employeeSalaryTemplateHistory:
                            type: object
                            properties:
                              effectiveDate:
                                type: string
                              salaryDecreeNumber:
                                type: string
                              salaryTemplate:
                                type: object
                                properties:
                                  name:
                                    type: string
                          employeeWorkday:
                            type: number
                          employmentType:
                            type: object
                            properties:
                              name:
                                type: string
                          endDate:
                            type: string
                          id:
                            type: string
                          jobTitle:
                            type: object
                            properties:
                              name:
                                type: string
                          location:
                            type: object
                            properties:
                              name:
                                type: string
                          messages:
                            type: array
                            items:
                              type: object
                              properties:
                                code:
                                  type: string
                                description:
                                  type: string
                          normalWorkday:
                            type: number
                          organization:
                            type: object
                            properties:
                              name:
                                type: string
                          paymentProcess:
                            type: boolean
                          startDate:
                            type: string
                          totalThp:
                            type: number
              example:
                content:
                - costCenter:
                    name: string
                  employee:
                    identificationNumber: string
                    name: string
                  employeeSalaryTemplateHistory:
                    effectiveDate: string
                    salaryDecreeNumber: string
                    salaryTemplate:
                      name: string
                  employeeWorkday: 0
                  employmentType:
                    name: string
                  endDate: string
                  id: string
                  jobTitle:
                    name: string
                  location:
                    name: string
                  messages:
                  - code: string
                    description: string
                  normalWorkday: 0
                  organization:
                    name: string
                  paymentProcess: true
                  startDate: string
                  totalThp: 0
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/transition-calculations/process/processable/processed\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.transition_calculations.process.processable.processed.list()"
  /core/v1/transition-calculations/process/processable/unprocessed:
    get:
      tags:
      - transition-calculation
      summary: Get Processable Transition Calculation
      deprecated: true
      description: |
        ⚠️ **This endpoint is deprecated.** 
        Transition Calculation Process now available at Regular Salary Process, so the menu and existing endpoint are deprecated and will be removed

        ---
        ### Search Query
        | Supported Keys               | Supported Operators | Notes                                                                       |
        | ---------------------------- | ------------------- | --------------------------------------------------------------------------- |
        | idIn                         | :                   | Equal operator with multiple values, each value separated with delimiters ; |
        | year                         | :                   | Like operator                                                               |
        | month                        | :                   | Like operator                                                               |
        | organizationId               | :                   | Like operator                                                               |
        | jobTitleId                   | :                   | Like operator                                                               |
        | locationId                   | :                   | Like operator                                                               |
        | employeeId                   | :                   | Like operator                                                               |
        | employeeName                 | :                   | Like operator                                                               |
        | employeeIdentificationNumber | :                   | Like operator                                                               |
        | startDate                    | :<br>><br><          | Equal<br>Greater than or equal to<br>Less than or equal to                  |
        | endDate                      | :<br>><br><          | Equal<br>Greater than or equal to<br>Less than or equal to                  |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          costCenter:
                            type: object
                            properties:
                              name:
                                type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          employeeSalaryTemplateHistory:
                            type: object
                            properties:
                              effectiveDate:
                                type: string
                              salaryDecreeNumber:
                                type: string
                              salaryTemplate:
                                type: object
                                properties:
                                  name:
                                    type: string
                          employeeWorkday:
                            type: number
                          employmentType:
                            type: object
                            properties:
                              name:
                                type: string
                          endDate:
                            type: string
                          id:
                            type: string
                          jobTitle:
                            type: object
                            properties:
                              name:
                                type: string
                          location:
                            type: object
                            properties:
                              name:
                                type: string
                          normalWorkday:
                            type: number
                          organization:
                            type: object
                            properties:
                              name:
                                type: string
                          paymentProcess:
                            type: boolean
                          startDate:
                            type: string
                          totalThp:
                            type: number
              example:
                content:
                - costCenter:
                    name: string
                  employee:
                    identificationNumber: string
                    name: string
                  employeeSalaryTemplateHistory:
                    effectiveDate: string
                    salaryDecreeNumber: string
                    salaryTemplate:
                      name: string
                  employeeWorkday: 0
                  employmentType:
                    name: string
                  endDate: string
                  id: string
                  jobTitle:
                    name: string
                  location:
                    name: string
                  normalWorkday: 0
                  organization:
                    name: string
                  paymentProcess: true
                  startDate: string
                  totalThp: 0
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/transition-calculations/process/processable/unprocessed\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.transition_calculations.process.processable.unprocessed.list()"
  /core/v1/transition-calculations/time-allowances/process/processable:
    get:
      tags:
      - transition-calculation
      summary: Get Processable Time Allowance Transition
      deprecated: true
      description: |
        ⚠️ **This endpoint is deprecated.**
        Transition Calculation Process now available at Regular Salary Process, so the menu and existing endpoint are deprecated and will be removed

        ### Search Query
        | Supported Keys               | Supported Operators | Notes                                                                       |
        | ---------------------------- | ------------------- | --------------------------------------------------------------------------- |
        | idIn                         | :                   | Equal operator with multiple values, each value separated with delimiters ; |
        | year                         | :                   | Like operator                                                               |
        | month                        | :                   | Like operator                                                               |
        | organizationId               | :                   | Like operator                                                               |
        | jobTitleId                   | :                   | Like operator                                                               |
        | locationId                   | :                   | Like operator                                                               |
        | employeeId                   | :                   | Like operator                                                               |
        | employeeName                 | :                   | Like operator                                                               |
        | employeeIdentificationNumber | :                   | Like operator                                                               |
        | startDate                    | :<br>><br><          | Equal<br>Greater than or equal to<br>Less than or equal to                  |
        | endDate                      | :<br>><br><          | Equal<br>Greater than or equal to<br>Less than or equal to                  |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          dailyEndDate:
                            type: string
                          dailyStartDate:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                              employmentStatus:
                                type: object
                                properties:
                                  organization:
                                    type: object
                                    properties:
                                      name:
                                        type: string
                                  jobTitle:
                                    type: object
                                    properties:
                                      name:
                                        type: string
                          id:
                            type: string
              example:
                content:
                - dailyEndDate: string
                  dailyStartDate: string
                  employee:
                    id: string
                    identificationNumber: string
                    name: string
                    employmentStatus:
                      organization:
                        name: string
                      jobTitle:
                        name: string
                  id: string
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/transition-calculations/time-allowances/process/processable\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = (\n    client.core.transition_calculations.time_allowances.process.processable.list()\n)"
  /core/v1/tax-calculators:
    post:
      tags:
      - tax
      summary: Simulate annual tax calculation
      description: |
        Simulate annual tax calculation based on the provided scenario.
        <br>This API only works for <strong>PERMANENT</strong> taxObject.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - taxObject
              - taxMethod
              - ptkpCategory
              - startMonth
              - components
              properties:
                taxMethod:
                  type: string
                  enum:
                  - GROSS
                  - GROSS_UP
                  - NETTO
                  - MIX
                ptkpCategory:
                  type: string
                taxObject:
                  type: string
                  enum:
                  - PERMANENT
                  - TEMPORARY
                  - MULTI_LEVEL_DISTRIBUTOR
                  - INSURANCE_AGENT
                  - MERCHANT_GOODS
                  - EXPERT_CONTINUOUS
                  - EXPERT_NON_CONTINUOUS
                  - CONTINUOUS
                  - NON_CONTINUOUS
                  - COMMISSIONER
                  - FORMER_EMPLOYEE
                  - EVENT_PARTICIPANT
                  - EXPATRIATE
                  - EXPERT
                  - MEETING_PARTICIPANT
                  - COMMITTEE_PARTICIPANT
                  - EDUCATION_PARTICIPANT
                  - OTHER_PARTICIPANT
                  - ADVISOR_LECTURER
                  - AUTHOR_RESEARCHER
                  - SERVICE_PROVIDER
                  - ADVERTISING_AGENT
                  - PROJECT_MANAGER
                  - INTERMEDIARY
                  - ARTIST
                  - ATHLETE
                  - TEMPORARY_MONTHLY
                  - COMPETITION_PARTICIPANT
                startMonth:
                  type: integer
                  format: int32
                  minimum: 1
                  maximum: 12
                components:
                  type: array
                  minItems: 1
                  maxItems: 12
                  description: List of monthly income components. The last component is the tax end month. For example, if startMonth is 1 and there are 6 components, then endMonth is 6.
                  items:
                    type: object
                    properties:
                      firstComponent:
                        type: object
                        properties:
                          basicSalary:
                            type: number
                            format: double
                            default: 0
                          taxAllowance:
                            type: number
                            format: double
                            default: 0
                          otherAllowance:
                            type: number
                            format: double
                            default: 0
                          honorarium:
                            type: number
                            format: double
                            default: 0
                          insurancePremium:
                            type: number
                            format: double
                            default: 0
                          enjoymentRevenue:
                            type: number
                            format: double
                            default: 0
                          bonus:
                            type: number
                            format: double
                            default: 0
                          monthlyRetirementContribution:
                            type: number
                            format: double
                            default: 0
                          monthlyReligionAllowance:
                            type: number
                            format: double
                            default: 0
                      secondComponent:
                        type: object
                        properties:
                          basicSalary:
                            type: number
                            format: double
                            default: 0
                          taxAllowance:
                            type: number
                            format: double
                            default: 0
                          otherAllowance:
                            type: number
                            format: double
                            default: 0
                          honorarium:
                            type: number
                            format: double
                            default: 0
                          insurancePremium:
                            type: number
                            format: double
                            default: 0
                          enjoymentRevenue:
                            type: number
                            format: double
                            default: 0
                          bonus:
                            type: number
                            format: double
                            default: 0
                          monthlyRetirementContribution:
                            type: number
                            format: double
                            default: 0
                          monthlyReligionAllowance:
                            type: number
                            format: double
                            default: 0
                previousJobComponent:
                  type: object
                  properties:
                    netIncome:
                      type: number
                      format: double
                      default: 0
                    tax:
                      type: number
                      format: double
                      default: 0
            example:
              taxObject: PERMANENT
              taxMethod: GROSS
              ptkpCategory: K0
              startMonth: 1
              components:
              - firstComponent:
                  basicSalary: 10000000
                secondComponent:
                  basicSalary: 0
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  monthlyTaxReports:
                    type: array
                    items:
                      type: object
                      properties:
                        monthlyGrossIncome:
                          type: number
                          format: double
                        percentage:
                          type: number
                          format: double
                        monthlyTax:
                          type: number
                          format: double
                        nettoTax:
                          type: number
                          format: double
                        type:
                          type: string
                        basicSalary:
                          type: number
                          format: double
                          default: 0
                        taxAllowance:
                          type: number
                          format: double
                          default: 0
                        otherAllowance:
                          type: number
                          format: double
                          default: 0
                        honorarium:
                          type: number
                          format: double
                          default: 0
                        insurancePremium:
                          type: number
                          format: double
                          default: 0
                        enjoymentRevenue:
                          type: number
                          format: double
                          default: 0
                        bonus:
                          type: number
                          format: double
                          default: 0
                        monthlyRetirementContribution:
                          type: number
                          format: double
                          default: 0
                        monthlyReligionAllowance:
                          type: number
                          format: double
                          default: 0
                  annualTaxReport:
                    type: object
                    properties:
                      basicSalary:
                        type: number
                        format: double
                      taxAllowance:
                        type: number
                        format: double
                      otherAllowance:
                        type: number
                        format: double
                      honorarium:
                        type: number
                        format: double
                      insurancePremium:
                        type: number
                        format: double
                      enjoymentRevenue:
                        type: number
                        format: double
                      bonus:
                        type: number
                        format: double
                      totalGrossIncome:
                        type: number
                        format: double
                      positionalAllowance:
                        type: number
                        format: double
                      retirementContribution:
                        type: number
                        format: double
                      totalDeduction:
                        type: number
                        format: double
                      netIncome:
                        type: number
                        format: double
                      previousNetIncome:
                        type: number
                        format: double
                      totalNetIncome:
                        type: number
                        format: double
                      baseIncomeTaxDeduction:
                        type: number
                        format: double
                      baseIncomeTax:
                        type: number
                        format: double
                      yearlyOriginalTax:
                        type: number
                        format: double
                      yearlyPenaltyTax:
                        type: number
                        format: double
                      yearlyTax:
                        type: number
                        format: double
                      previousOriginalTax:
                        type: number
                        format: double
                      previousPenaltyTax:
                        type: number
                        format: double
                      previousTax:
                        type: number
                        format: double
                      outstandingOriginalTax:
                        type: number
                        format: double
                      outstandingPenaltyTax:
                        type: number
                        format: double
                      outstandingTax:
                        type: number
                        format: double
              example:
                monthlyTaxReports:
                - type: PERMANENT
                  monthlyGrossIncome: 10000000
                  percentage: 1
                  monthlyTax: 100000
                  nettoTax: 100000
                  basicSalary: 10000000
                  taxAllowance: 0
                  otherAllowance: 0
                  honorarium: 0
                  insurancePremium: 0
                  enjoymentRevenue: 0
                  bonus: 0
                  monthlyRetirementContribution: 0
                  monthlyReligionAllowance: 0
                - type: PERMANENT
                  monthlyGrossIncome: 10000000
                  percentage: 1
                  monthlyTax: 100000
                  nettoTax: 100000
                  basicSalary: 10000000
                  taxAllowance: 0
                  otherAllowance: 0
                  honorarium: 0
                  insurancePremium: 0
                  enjoymentRevenue: 0
                  bonus: 0
                  monthlyRetirementContribution: 0
                  monthlyReligionAllowance: 0
                annualTaxReport:
                  basicSalary: 120000000
                  taxAllowance: 0
                  otherAllowance: 0
                  honorarium: 0
                  insurancePremium: 0
                  enjoymentRevenue: 0
                  bonus: 0
                  totalGrossIncome: 120000000
                  positionalAllowance: 0
                  retirementContribution: 0
                  totalDeduction: 0
                  netIncome: 120000000
                  previousNetIncome: 0
                  totalNetIncome: 120000000
                  baseIncomeTaxDeduction: 0
                  baseIncomeTax: 12000000
                  yearlyOriginalTax: 12000000
                  yearlyPenaltyTax: 0
                  yearlyTax: 12000000
                  previousOriginalTax: 0
                  previousPenaltyTax: 0
                  previousTax: 0
                  outstandingOriginalTax: 12000000
                  outstandingPenaltyTax: 0
                  outstandingTax: 12000000
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/tax-calculators\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '...'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_calculators.create(...)"
  /core/v1/tax-calculators/monthly:
    post:
      tags:
      - tax
      summary: Simulate monthly tax calculation
      description: |
        Simulate monthly tax calculation based on the provided scenario.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - taxObject
              - taxMethod
              - ptkpCategory
              - component
              properties:
                taxObject:
                  type: string
                  enum:
                  - PERMANENT
                  - TEMPORARY
                  - EXPERT_CONTINUOUS
                  - EXPERT_NON_CONTINUOUS
                  - CONTINUOUS
                  - NON_CONTINUOUS
                  - COMMISSIONER
                  - EVENT_PARTICIPANT
                  - EXPATRIATE
                taxMethod:
                  type: string
                  enum:
                  - GROSS
                  - GROSS_UP
                  - NETTO
                  - MIX
                ptkpCategory:
                  type: string
                component:
                  type: object
                  properties:
                    firstComponent:
                      type: object
                      properties:
                        basicSalary:
                          type: number
                          format: double
                          default: 0
                        taxAllowance:
                          type: number
                          format: double
                          default: 0
                        otherAllowance:
                          type: number
                          format: double
                          default: 0
                        honorarium:
                          type: number
                          format: double
                          default: 0
                        insurancePremium:
                          type: number
                          format: double
                          default: 0
                        enjoymentRevenue:
                          type: number
                          format: double
                          default: 0
                        bonus:
                          type: number
                          format: double
                          default: 0
                        monthlyRetirementContribution:
                          type: number
                          format: double
                          default: 0
                        monthlyReligionAllowance:
                          type: number
                          format: double
                          default: 0
                    secondComponent:
                      type: object
                      properties:
                        basicSalary:
                          type: number
                          format: double
                          default: 0
                        taxAllowance:
                          type: number
                          format: double
                          default: 0
                        otherAllowance:
                          type: number
                          format: double
                          default: 0
                        honorarium:
                          type: number
                          format: double
                          default: 0
                        insurancePremium:
                          type: number
                          format: double
                          default: 0
                        enjoymentRevenue:
                          type: number
                          format: double
                          default: 0
                        bonus:
                          type: number
                          format: double
                          default: 0
                        monthlyRetirementContribution:
                          type: number
                          format: double
                          default: 0
                        monthlyReligionAllowance:
                          type: number
                          format: double
                          default: 0
            example:
              taxObject: PERMANENT
              taxMethod: GROSS
              ptkpCategory: K0
              component:
                firstComponent:
                  basicSalary: 10000000
                secondComponent:
                  basicSalary: 0
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                - allOf:
                  - type: object
                    properties:
                      monthlyGrossIncome:
                        type: number
                        format: double
                      percentage:
                        type: number
                        format: double
                      monthlyTax:
                        type: number
                        format: double
                      nettoTax:
                        type: number
                        format: double
                      type:
                        type: string
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - PERMANENT
                      basicSalary:
                        type: number
                        format: double
                        default: 0
                      taxAllowance:
                        type: number
                        format: double
                        default: 0
                      otherAllowance:
                        type: number
                        format: double
                        default: 0
                      honorarium:
                        type: number
                        format: double
                        default: 0
                      insurancePremium:
                        type: number
                        format: double
                        default: 0
                      enjoymentRevenue:
                        type: number
                        format: double
                        default: 0
                      bonus:
                        type: number
                        format: double
                        default: 0
                      monthlyRetirementContribution:
                        type: number
                        format: double
                        default: 0
                      monthlyReligionAllowance:
                        type: number
                        format: double
                        default: 0
                - allOf:
                  - type: object
                    properties:
                      monthlyGrossIncome:
                        type: number
                        format: double
                      percentage:
                        type: number
                        format: double
                      monthlyTax:
                        type: number
                        format: double
                      nettoTax:
                        type: number
                        format: double
                      type:
                        type: string
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - TEMPORARY
                      basicSalary:
                        type: number
                        format: double
                      taxAllowance:
                        type: number
                        format: double
                      bonus:
                        type: number
                        format: double
                - allOf:
                  - type: object
                    properties:
                      monthlyGrossIncome:
                        type: number
                        format: double
                      percentage:
                        type: number
                        format: double
                      monthlyTax:
                        type: number
                        format: double
                      nettoTax:
                        type: number
                        format: double
                      type:
                        type: string
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - NON_EMPLOYEE
                      basicSalary:
                        type: number
                        format: double
                      taxAllowance:
                        type: number
                        format: double
                      baseIncome:
                        type: number
                        format: double
                      baseIncomeTaxDeduction:
                        type: number
                        format: double
                      baseIncomeTax:
                        type: number
                        format: double
                discriminator:
                  propertyName: type
                  mapping:
                    PERMANENT: '#/components/schemas/PermanentMonthlyTaxCalculationSimulatorResponse'
                    TEMPORARY: '#/components/schemas/TemporaryMonthlyTaxCalculationSimulatorResponse'
                    NON_EMPLOYEE: '#/components/schemas/NonEmployeeMonthlyTaxCalculationSimulatorResponse'
              example:
                type: PERMANENT
                monthlyGrossIncome: 10000000
                percentage: 1
                monthlyTax: 100000
                nettoTax: 100000
                basicSalary: 10000000
                taxAllowance: 0
                otherAllowance: 0
                honorarium: 0
                insurancePremium: 0
                enjoymentRevenue: 0
                bonus: 0
                monthlyRetirementContribution: 0
                monthlyReligionAllowance: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/tax-calculators/monthly\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '...'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.tax_calculators.monthly.create(...)"
  /core/v1/custom-tables:
    get:
      tags:
      - custom-table
      summary: Get Custom Tables
      description: Return the custom tables.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys      | Supported Operators | Notes                                                                                     |
          |---------------------|---------------------|-------------------------------------------------------------------------------------------|
          | id                  | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | tableName           | `:`                 | Like operator                                                                             |
          | displayName         | `:`                 | Like operator                                                                             |
          | menuLocation        | `:`                 | Like operator                                                                             |
          | historicalType      | `:`                 | Like operator                                                                             |
          | parentEntity        | `:`                 | Like operator                                                                             |
          | parentEntityIsNull  | `:`                 | Equal operator<br/>Boolean                                                                |
          | parentReferenceField| `:`                 | Like operator                                                                             |
        schema:
          type: string
        examples:
          one:
            summary: Search a custom table by ID
            value: id:a31aa166-70be-4303-81e4-5ada93b5213a
          two:
            summary: Search custom table by table name
            value: tableName:Production
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Unique identifier of the custom table
                          tableName:
                            type: string
                            description: Technical name of the custom table
                          displayName:
                            type: string
                            description: Display name of the custom table
                          menuLocation:
                            type: string
                            description: Location of the table in menu hierarchy
                          historicalType:
                            type: string
                            description: Type of historical tracking for the table
                          parentEntity:
                            type: string
                            description: Parent entity reference
                          parentReferenceField:
                            type: string
                            description: Field used for parent entity reference
                          columns:
                            type: array
                            description: List of columns in the table
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  description: Unique identifier of the column
                                columnName:
                                  type: string
                                  description: Technical name of the column
                                fieldName:
                                  type: string
                                  description: CamelCase version of columnName
                                displayName:
                                  type: string
                                  description: Display name of the column
                                fieldOrder:
                                  type: integer
                                  description: Order of the field in the table
                                dataType:
                                  type: string
                                  description: Data type of the column
                                isRequired:
                                  type: boolean
                                  description: Whether the column is required
                                isReference:
                                  type: boolean
                                  description: Whether the column is a reference to another entity
                                columnMetadata:
                                  type: object
                                  description: Additional metadata for the column
                                  additionalProperties: true
                                tooltip:
                                  type: string
                                  description: Optional custom tooltip to be shown to the user
              example:
                content:
                - id: a31aa166-70be-4303-81e4-5ada93b5213a
                  tableName: employee_certifications
                  displayName: Employee Certifications
                  menuLocation: EMPLOYEE.CERTIFICATIONS
                  historicalType: NONE
                  parentEntity: Employee
                  parentReferenceField: employeeId
                  columns:
                  - id: b42bb37-fed4-4d76-9838-221ec23647d1
                    columnName: certification_name
                    fieldName: certificationName
                    displayName: Certification Name
                    fieldOrder: 1
                    dataType: STRING
                    isRequired: true
                    isReference: false
                    tooltip: ''
                  - id: c53cc38-fed4-4d76-9838-221ec23647d2
                    columnName: issue_date
                    fieldName: issueDate
                    displayName: Issue Date
                    fieldOrder: 2
                    dataType: DATE
                    isRequired: true
                    isReference: false
                    columnMetadata:
                      dateFormat: yyyy-MM-dd
                    tooltip: Please enter the issue date of the certification
                - id: f4eaf74f-3e63-414f-b7be-54c46902407f
                  tableName: training_records
                  displayName: Training Records
                  menuLocation: EMPLOYEE.TRAININGS
                  historicalType: NONE
                  parentEntity: employee
                  parentReferenceField: employeeId
                  columns:
                  - id: d64dd39-fed4-4d76-9838-221ec23647d3
                    columnName: training_name
                    fieldName: trainingName
                    displayName: Training Name
                    fieldOrder: 1
                    dataType: STRING
                    isRequired: true
                    isReference: false
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/custom-tables?page=0&size=10&query=id%3Aa31aa166-70be-4303-81e4-5ada93b5213a\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.custom_tables.list(\n    page=0, size=10, query=\"id:a31aa166-70be-4303-81e4-5ada93b5213a\"\n)"
  /core/v1/custom-tables/{tableId}:
    get:
      tags:
      - custom-table
      summary: Get Custom Table by Id
      description: Return the custom table by Id.
      parameters:
      - name: tableId
        in: path
        required: true
        schema:
          type: string
        example: d45ee37-92c4-4d76-9838-221ec2364701
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier of the custom table
                  tableName:
                    type: string
                    description: Technical name of the custom table
                  displayName:
                    type: string
                    description: Display name of the custom table
                  menuLocation:
                    type: string
                    description: Location of the table in menu hierarchy
                  historicalType:
                    type: string
                    description: Type of historical tracking for the table
                  parentEntity:
                    type: string
                    description: Parent entity reference
                  parentReferenceField:
                    type: string
                    description: Field used for parent entity reference
                  columns:
                    type: array
                    description: List of columns in the table
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Unique identifier of the column
                        columnName:
                          type: string
                          description: Technical name of the column
                        fieldName:
                          type: string
                          description: CamelCase version of columnName
                        displayName:
                          type: string
                          description: Display name of the column
                        fieldOrder:
                          type: integer
                          description: Order of the field in the table
                        dataType:
                          type: string
                          description: Data type of the column
                        isRequired:
                          type: boolean
                          description: Whether the column is required
                        isReference:
                          type: boolean
                          description: Whether the column is a reference to another entity
                        columnMetadata:
                          type: object
                          description: Additional metadata for the column
                          additionalProperties: true
                        tooltip:
                          type: string
                          description: Optional custom tooltip to be shown to the user
              example:
                id: a31aa166-70be-4303-81e4-5ada93b5213a
                tableName: employee_certifications
                displayName: Employee Certifications
                menuLocation: EMPLOYEE.CERTIFICATIONS
                historicalType: NONE
                parentEntity: Employee
                parentReferenceField: employeeId
                columns:
                - id: b42bb37-fed4-4d76-9838-221ec23647d1
                  columnName: certification_name
                  fieldName: certificationName
                  displayName: Certification Name
                  fieldOrder: 1
                  dataType: STRING
                  isRequired: true
                  isReference: false
                  tooltip: ''
                - id: c53cc38-fed4-4d76-9838-221ec23647d2
                  columnName: issue_date
                  fieldName: issueDate
                  displayName: Issue Date
                  fieldOrder: 2
                  dataType: DATE
                  isRequired: true
                  isReference: false
                  columnMetadata:
                    dateFormat: yyyy-MM-dd
                  tooltip: Please enter the issue date of the certification
        '400':
          description: Bad Request
        '404':
          description: Custom table not found
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/custom-tables/d45ee37-92c4-4d76-9838-221ec2364701\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.custom_tables.retrieve(\n    table_id=\"d45ee37-92c4-4d76-9838-221ec2364701\"\n)"
  /core/v1/custom-tables/{tableId}/entries:
    get:
      tags:
      - custom-table-entry
      summary: Get Custom Table Entries
      description: Return the custom table entries.
      parameters:
      - name: tableId
        in: path
        required: true
        schema:
          type: string
        example: d45ee37-92c4-4d76-9838-221ec2364701
      - in: query
        name: query
        description: Filter entries based on specific criteria, depending on the custom table's schema.
        schema:
          type: string
        example: employeeId:emp-001
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        additionalProperties: true
              example:
                content:
                - id: d45ee37-92c4-4d76-9838-221ec2364701
                  certificationName: AWS Solutions Architect
                  issueDate: '2025-01-15'
                  employeeId: emp-001
                - id: e56ff38-92c4-4d76-9838-221ec2364702
                  certificationName: Professional Scrum Master
                  issueDate: '2025-02-20'
                  employeeId: emp-001
                totalPages: 1
                last: true
                totalElements: 2
                numberOfElements: 2
                sort:
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/custom-tables/d45ee37-92c4-4d76-9838-221ec2364701/entries?query=employeeId%3Aemp-001&page=0&size=10\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.custom_tables.entries.list(\n    table_id=\"d45ee37-92c4-4d76-9838-221ec2364701\",\n    query=\"employeeId:emp-001\",\n    page=0,\n    size=10,\n)"
    post:
      tags:
      - custom-table-entry
      summary: Create a new entry in a custom table
      description: Creates a new entry in a custom table with the provided details
      parameters:
      - name: tableId
        in: path
        required: true
        schema:
          type: string
        example: d45ee37-92c4-4d76-9838-221ec2364701
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
            example:
              certificationName: AWS Certified Developer
              issueDate: '2025-03-01'
              employeeId: emp-002
      responses:
        '201':
          description: Entry created successfully
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
              example:
                id: f67gg49-92c4-4d76-9838-221ec2364703
                certificationName: AWS Certified Developer
                issueDate: '2025-03-01'
                employeeId: emp-002
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/custom-tables/d45ee37-92c4-4d76-9838-221ec2364701/entries\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import CustomTableEntryRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.custom_tables.entries.create(\n    table_id=\"d45ee37-92c4-4d76-9838-221ec2364701\",\n    custom_table_entry_request=CustomTableEntryRequest(),\n)"
  /core/v1/custom-tables/{tableId}/entries/{entryId}:
    put:
      tags:
      - custom-table-entry
      summary: Update an entry in a custom table
      description: Updates an existing entry in a custom table with the provided details
      parameters:
      - name: tableId
        in: path
        required: true
        schema:
          type: string
        example: d45ee37-92c4-4d76-9838-221ec2364701
      - name: entryId
        in: path
        required: true
        schema:
          type: string
        example: d45ee37-92c4-4d76-9838-221ec2364701
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
            example:
              certificationName: AWS Certified Solutions Architect - Updated
              issueDate: '2025-01-15'
              employeeId: emp-001
      responses:
        '200':
          description: Entry updated successfully
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
              example:
                id: d45ee37-92c4-4d76-9838-221ec2364701
                certificationName: AWS Certified Solutions Architect - Updated
                issueDate: '2025-01-15'
                employeeId: emp-001
        '400':
          description: Bad Request
        '404':
          description: Entry not found
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/custom-tables/d45ee37-92c4-4d76-9838-221ec2364701/entries/d45ee37-92c4-4d76-9838-221ec2364701\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import CustomTableEntryRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.custom_tables.entries.update(\n    table_id=\"d45ee37-92c4-4d76-9838-221ec2364701\",\n    entry_id=\"d45ee37-92c4-4d76-9838-221ec2364701\",\n    custom_table_entry_request=CustomTableEntryRequest(),\n)"
  /core/v1/workflow-activities:
    get:
      tags:
      - workflow
      summary: Get Workflow Activities
      description: |
        ### Search Query
        | Supported Keys          | Supported Operators | Notes                                            |
        |-------------------------|---------------------|--------------------------------------------------|
        | id                      | `:`                 | Equal operator                                   |
        | effectiveDate           | ><br><              |Greater than or equal to<br>Less than or equal to |
        | employee.id             | `:`                 | Equal operator                                   |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          createdDate:
                            type: number
                          updatedDate:
                            type: number
                          workflowTemplate:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              type:
                                type: string
                              context:
                                type: string
                          effectiveDate:
                            type: string
                          workflowReason:
                            type: object
                            properties:
                              id:
                                type: string
                              createdDate:
                                type: number
                              updatedDate:
                                type: number
                              code:
                                type: string
                              name:
                                type: string
                              category:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  restrictDuplicateEffectiveDate:
                                    type: boolean
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
              example:
                content:
                - id: 61dfe777-f9ea-4a50-b075-734cb62ed20e
                  createdDate: 1750272376000
                  updatedDate: 1750272376000
                  workflowTemplate:
                    id: 338c1570-a57e-4153-aec7-b7c7446c964c
                    name: Organizational Change
                    type: PERSONNEL
                    context: employee
                  effectiveDate: '2020-01-01'
                  workflowReason:
                    id: fe0b217f-dd55-426a-b987-9a618ca794fe
                    createdDate: 1609459200000
                    updatedDate: 1609459200000
                    code: HIRING-SDE
                    name: New Hire Software Development Engineer
                    category:
                      id: f8c6557f-d265-46d7-b496-ae3d666a93ed
                      code: HIRING
                      name: Hiring
                      restrictDuplicateEffectiveDate: false
                  employee:
                    id: b2eb7e97-b0a3-405a-951e-7b0acf099f27
                    identificationNumber: ID-00010001
                    name: Hendra Jaya
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/workflow-activities\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.workflow_activities.list()"
  /core/v1/workflow-reasons:
    get:
      tags:
      - workflow
      summary: Get Workflow Reasons
      description: |
        ### Search Query
        | Supported Keys          | Supported Operators | Notes                      |
        |-------------------------|---------------------|----------------------------|
        | code                    | `:`                 | Like operator              |
        | name                    | `:`                 | Like operator              |
        | category.id                    | `:`                 | Equal operator              |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          createdDate:
                            type: number
                          updatedDate:
                            type: number
                          code:
                            type: string
                          name:
                            type: string
                          category:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              restrictDuplicateEffectiveDate:
                                type: boolean
              example:
                content:
                - id: 79f537af-83b2-4a8b-851c-5d14ec046554
                  createdDate: 1609459200000
                  updatedDate: 1609459200000
                  code: PROM-01
                  name: Promotion to Senior
                  category:
                    id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb1
                    code: PROMOTION
                    name: Promotion
                - id: fe0b217f-dd55-426a-b987-9a618ca794fe
                  code: HIRING-SDE
                  name: New Hire Software Development Engineer
                  category:
                    id: f8c6557f-d265-46d7-b496-ae3d666a93ed
                    code: HIRING
                    name: Hiring
                    restrictDuplicateEffectiveDate: false
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 2
                totalElements: 2
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/workflow-reasons\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.workflow_reasons.list()"
    post:
      tags:
      - workflow
      summary: Create Workflow Reason
      description: Create a workflow reason.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  createdDate:
                    type: number
                  updatedDate:
                    type: number
                  code:
                    type: string
                  name:
                    type: string
                  category:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      restrictDuplicateEffectiveDate:
                        type: boolean
              example:
                id: 02bcd3f5-a07b-4f6c-88aa-5474a604ba56
                createdDate: 1609459200000
                updatedDate: 1609459200000
                code: PROM-02
                name: Promotion to Principal
                category:
                  id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb1
                  code: PROMOTION
                  name: Promotion
                  restrictDuplicateEffectiveDate: false
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                category:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
              required:
              - code
              - name
              - category
            example:
              code: PROM-02
              name: Promotion to Principal
              category:
                id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb1
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/workflow-reasons\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"PROM-02\",\n  \"name\": \"Promotion to Principal\",\n  \"category\": {\n    \"id\": \"60a2d8c2-b5ff-11e6-80f5-76304dec7eb1\"\n  }\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest, WorkflowReasonRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.workflow_reasons.create(\n    workflow_reason_request=WorkflowReasonRequest(\n        code=\"PROM-02\",\n        name=\"Promotion to Principal\",\n        category=IdRequest(id=\"60a2d8c2-b5ff-11e6-80f5-76304dec7eb1\"),\n    )\n)"
  /core/v1/workflow-reasons/{id}:
    put:
      tags:
      - workflow
      summary: Update Workflow Reason
      description: Update the workflow reason.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  createdDate:
                    type: number
                  updatedDate:
                    type: number
                  code:
                    type: string
                  name:
                    type: string
                  category:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      restrictDuplicateEffectiveDate:
                        type: boolean
              example:
                id: 02bcd3f5-a07b-4f6c-88aa-5474a604ba56
                createdDate: 1609459200000
                updatedDate: 1609459200000
                code: PROM-02
                name: Promotion to Principal
                category:
                  id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb1
                  code: PROMOTION
                  name: Promotion
                  restrictDuplicateEffectiveDate: false
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                category:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
              required:
              - code
              - name
              - category
            example:
              code: PROM-02
              name: Promotion to Principal
              category:
                id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb1
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/workflow-reasons/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"PROM-02\",\n  \"name\": \"Promotion to Principal\",\n  \"category\": {\n    \"id\": \"60a2d8c2-b5ff-11e6-80f5-76304dec7eb1\"\n  }\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest, WorkflowReasonRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.workflow_reasons.update(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    workflow_reason_request=WorkflowReasonRequest(\n        code=\"PROM-02\",\n        name=\"Promotion to Principal\",\n        category=IdRequest(id=\"60a2d8c2-b5ff-11e6-80f5-76304dec7eb1\"),\n    ),\n)"
  /core/v1/workflow-reason-categories:
    get:
      tags:
      - workflow
      summary: Get Workflow Reason Categories
      description: |
        ### Search Query
        | Supported Keys          | Supported Operators | Notes                      |
        |-------------------------|---------------------|----------------------------|
        | code                    | `:`                 | Like operator              |
        | name                    | `:`                 | Like operator              |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          restrictDuplicateEffectiveDate:
                            type: boolean
              example:
                content:
                - id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb1
                  code: PROMOTION
                  name: Promotion
                  restrictDuplicateEffectiveDate: true
                - id: f8c6557f-d265-46d7-b496-ae3d666a93ed
                  code: HIRING
                  name: Hiring
                  restrictDuplicateEffectiveDate: false
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 2
                totalElements: 2
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/workflow-reason-categories\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.workflow_reason_categories.list()"
    post:
      tags:
      - workflow
      summary: Create Workflow Reason Category
      description: Create a workflow reason category.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  restrictDuplicateEffectiveDate:
                    type: boolean
              example:
                id: 02bcd3f5-a07b-4f6c-88aa-5474a604ba56
                code: TERMINATION
                name: Termination
                restrictDuplicateEffectiveDate: false
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
              required:
              - code
              - name
            example:
              code: TERMINATION
              name: Termination
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/core/v1/workflow-reason-categories\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"TERMINATION\",\n  \"name\": \"Termination\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import WorkflowReasonCategoryRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.workflow_reason_categories.create(\n    workflow_reason_category_request=WorkflowReasonCategoryRequest(\n        code=\"TERMINATION\", name=\"Termination\"\n    )\n)"
  /core/v1/workflow-reason-categories/{id}:
    put:
      tags:
      - workflow
      summary: Update Workflow Reason Category
      description: Update the workflow reason category.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  restrictDuplicateEffectiveDate:
                    type: boolean
              example:
                id: 60a2d8c2-b5ff-11e6-80f5-76304dec7eb1
                code: PROMOTION
                name: Promotion / Mutation
                restrictDuplicateEffectiveDate: false
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
              required:
              - code
              - name
            example:
              code: PROMOTION
              name: Promotion / Mutation
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/core/v1/workflow-reason-categories/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"code\": \"PROMOTION\",\n  \"name\": \"Promotion / Mutation\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import WorkflowReasonCategoryRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.workflow_reason_categories.update(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    workflow_reason_category_request=WorkflowReasonCategoryRequest(\n        code=\"PROMOTION\", name=\"Promotion / Mutation\"\n    ),\n)"
  /core/v1/vendors:
    get:
      tags:
      - vendor
      summary: Get Vendors
      description: Return a paginated list of vendors.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search Query
          | Supported Keys     | Supported Operators | Notes                                                                                |
          |--------------------|---------------------|--------------------------------------------------------------------------------------|
          | id                 | `:`                 | Equal operator with multiple values. Each value should separated with delimiters `;` |
          | name               | `:`                 | Equal operator                                                                       |
        schema:
          type: string
        examples:
          one:
            summary: Search Vendors by Multiple IDs
            value: id:f18f5618-ac6c-11e6-80f5-76304dec7eb7;f18f5618-ac6c-11e6-80f5-76304dec7eb8
          two:
            summary: Search Vendors by Name
            value: name:freelancer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
              example:
                content:
                - id: f18f5618-ac6c-11e6-80f5-76304dec7eb7
                  name: freelancer
                  createdBy: system
                  createdDate: 1478586884810
                  updatedBy: system
                  updatedDate: 1478586884810
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: ASC
                  property: name
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: true
                  descending: false
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/vendors?page=0&size=10&query=id%3Af18f5618-ac6c-11e6-80f5-76304dec7eb7%3Bf18f5618-ac6c-11e6-80f5-76304dec7eb8\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.vendors.list(\n    page=0,\n    size=10,\n    query=\"id:f18f5618-ac6c-11e6-80f5-76304dec7eb7;f18f5618-ac6c-11e6-80f5-76304dec7eb8\",\n)"
  /core/v1/vendors/{id}:
    get:
      tags:
      - vendor
      summary: Get Vendor By Id
      description: Return a single vendor by its ID.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f18f5618-ac6c-11e6-80f5-76304dec7eb7
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
              example:
                id: f18f5618-ac6c-11e6-80f5-76304dec7eb7
                name: Freelancer.id
                createdBy: system
                createdDate: 1478586884810
                updatedBy: system
                updatedDate: 1478586884810
        '400':
          description: Bad Request
        '404':
          description: Not Found
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/core/v1/vendors/f18f5618-ac6c-11e6-80f5-76304dec7eb7\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.core.vendors.retrieve(id=\"f18f5618-ac6c-11e6-80f5-76304dec7eb7\")"
  /timemanagement/v1/attendance-recapitulations/details:
    get:
      tags:
      - time-management
      summary: Get Attendance Recapitulation Detail
      description: |
        ### Search Query
        | Supported Keys   | Supported Operators | Notes                                                                           |
        | ---------------- | ------------------- | ------------------------------------------------------------------------------- |
        | employee.id      | :                   | Equal to                                                                        |
        | date             | \><br><             | Greater than or equal to<br>Less than or equal to                               |
        | attendances.type | :                   | Equal to, supported values: ABSENT, ANNUAL\_LEAVE, COMPENSATORY\_LEAVE, PRESENT |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          date:
                            type: string
                          shift:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              timeIn:
                                type: string
                              timeOut:
                                type: string
                              timeInUtc:
                                type: number
                              timeOutUtc:
                                type: number
                              breakStartUtc:
                                type: number
                              breakEndUtc:
                                type: number
                              color:
                                type: string
                          overtime:
                            type: object
                            properties:
                              requested:
                                type: number
                              paid:
                                type: number
                              description:
                                type: string
                          attendances:
                            type: array
                            items:
                              type: object
                              properties:
                                type:
                                  type: string
                                code:
                                  type: string
                                timeIn:
                                  type: string
                                timeOut:
                                  type: string
                                description:
                                  type: string
              example:
                content:
                - employee:
                    id: c8dec69f-8452-4832-bb6a-d73eb4b20b4d
                    identificationNumber: '1'
                    name: Employee 1
                  date: '2017-01-01'
                  shift:
                    id: 9a1bedac-e984-41ab-97db-988bf2468b7a
                    code: '1'
                    name: Shift 1
                    timeIn: 08:00:00
                    timeInUtc: 28800000
                    timeOut: 17:00:00
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#010101'
                  overtime:
                    requested: 3600000
                    paid: 3600000
                    description: Extra hours for project deadline
                  attendances:
                  - type: ANNUAL_LEAVE
                    code: ''
                    timeIn: ''
                    timeOut: ''
                    description: DESCRIPTION
                - employee:
                    id: c8dec69f-8452-4832-bb6a-d73eb4b20b4d
                    identificationNumber: '1'
                    name: Employee 1
                  date: '2017-01-02'
                  shift:
                    id: 9a1bedac-e984-41ab-97db-988bf2468b7a
                    code: '1'
                    name: Shift 1
                    timeIn: 08:00:00
                    timeInUtc: 28800000
                    timeOut: 17:00:00
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#010101'
                  overtime:
                    requested: 3600000
                    paid: 3600000
                    description: Extra hours for project deadline
                  attendances:
                  - type: PRESENT
                    code: HDR
                    timeIn: '2017-01-02T08:00:00+07:00'
                    timeOut: '2017-01-02T12:00:00+07:00'
                    description: DESCRIPTION
                  - type: ANNUAL_LEAVE
                    code: ''
                    timeIn: '2017-01-02T13:00:00+07:00'
                    timeOut: '2017-01-02T17:00:00+07:00'
                    description: DESCRIPTION
                - employee:
                    id: c8dec69f-8452-4832-bb6a-d73eb4b20b4d
                    identificationNumber: '1'
                    name: Employee 1
                  date: '2017-01-03'
                  shift:
                    id: 9a1bedac-e984-41ab-97db-988bf2468b7a
                    code: '1'
                    name: Shift 1
                    timeIn: 08:00:00
                    timeInUtc: 28800000
                    timeOut: 17:00:00
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#010101'
                  overtime:
                    requested: 7200000
                    paid: 7200000
                    description: DESCRIPTION
                  attendances:
                  - type: PRESENT
                    code: HDR
                    timeIn: '2017-01-03T07:00:00+07:00'
                    timeOut: '2017-01-03T18:00:00+07:00'
                    description: DESCRIPTION
                number: 0
                size: 10
                totalElements: 3
                totalPages: 1
                first: true
                last: true
                numberOfElements: 3
                pageable:
                  sort:
                  - direction: ASC
                    property: id
                  offset: 0
                  pageNumber: 0
                  pageSize: 10
                  paged: true
                  unpaged: false
                empty: false
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/attendance-recapitulations/details\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.attendance_recapitulations.details.list()"
  /timemanagement/v1/attendances:
    get:
      tags:
      - time-management
      summary: Get Attendances
      description: |
        ### Search Query
        | Supported Keys                | Supported Operators | Notes                                             |
        | ----------------------------- | ------------------- | ------------------------------------------------- |
        | employee.identificationNumber | :                   | Like                                              |
        | date                          | \><br><             | Greater than or equal to<br>Less than or equal to |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          date:
                            type: string
                          timeIn:
                            type: string
                          timeOut:
                            type: string
                          attendanceStatusIn:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              attendanceType:
                                type: string
              example:
                content:
                - id: 38c3edb6-6f12-4c27-8299-04aeaf125216
                  employee:
                    id: 0c4b9627-10ad-4886-8299-d838b47097b0
                    identificationNumber: '1'
                    name: Employee 1
                  date: '2021-02-05'
                  timeIn: '2021-02-05T08:00:00+07:00'
                  timeOut: ''
                  attendanceStatusIn:
                    id: c5b989ea-39df-4fd5-9161-d86480908684
                    code: HDR
                    name: Hadir
                    attendanceType: PRESENT
                - id: 21e4aac6-00c7-41ed-909d-14adda2d752c
                  employee:
                    id: 0c4b9627-10ad-4886-8299-d838b47097b0
                    identificationNumber: '1'
                    name: Employee 1
                  date: '2021-02-02'
                  timeIn: '2021-02-02T08:00:00Z'
                  timeOut: ''
                  attendanceStatusIn:
                    id: c5b989ea-39df-4fd5-9161-d86480908684
                    code: HDR
                    name: Hadir
                    attendanceType: PRESENT
                - id: 10e817cb-fed5-431e-9338-25c0aba10d22
                  employee:
                    id: 0c4b9627-10ad-4886-8299-d838b47097b0
                    identificationNumber: '1'
                    name: Employee 1
                  date: '2021-02-04'
                  timeIn: '2021-02-04T08:00:00+07:00'
                  timeOut: '2021-02-04T17:00:00+07:00'
                  attendanceStatusIn:
                    id: c5b989ea-39df-4fd5-9161-d86480908684
                    code: HDR
                    name: Hadir
                    attendanceType: PRESENT
                - id: 08550f93-f580-43a9-8277-cce29c245fe2
                  employee:
                    id: 0c4b9627-10ad-4886-8299-d838b47097b0
                    identificationNumber: '1'
                    name: Employee 1
                  date: '2021-02-01'
                  timeIn: '2021-02-01T08:00:00Z'
                  timeOut: '2021-02-01T17:00:00Z'
                  attendanceStatusIn:
                    id: c5b989ea-39df-4fd5-9161-d86480908684
                    code: HDR
                    name: Hadir
                    attendanceType: PRESENT
                number: 0
                size: 10
                totalElements: 4
                totalPages: 1
                first: true
                last: true
                numberOfElements: 4
                pageable:
                  sort:
                  - direction: ASC
                    property: id
                  offset: 0
                  pageNumber: 0
                  pageSize: 10
                  paged: true
                  unpaged: false
                empty: false
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/attendances\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.attendances.list()"
  /timemanagement/v1/absence-entries:
    get:
      tags:
      - time-management
      summary: Get Absence Entries
      description: |
        ### Search Query
        | Supported Keys                | Supported Operators | Notes                                             |
        | ----------------------------- | ------------------- | ------------------------------------------------- |
        | employee.identificationNumber | :                   | Like                                              |
        | approvalStatus                | :                   | Equal                                              |
        | startDate                     | \><br><             | Greater than or equal to<br>Less than or equal to |
        | endDate                       | \><br><             | Greater than or equal to<br>Less than or equal to |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          startDate:
                            type: string
                          endDate:
                            type: string
                          description:
                            type: string
                          approvalStatus:
                            type: string
                          rejectionReason:
                            type: string
                          attendanceStatus:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              attendanceType:
                                type: string
              example:
                content:
                - id: 38c3edb6-6f12-4c27-8299-04aeaf125216
                  employee:
                    id: 0c4b9627-10ad-4886-8299-d838b47097b0
                    identificationNumber: '1'
                    name: Employee 1
                  startDate: '2021-02-05'
                  endDate: '2021-02-05'
                  description: description
                  approvalStatus: WAITING_FOR_APPROVAL
                  rejectionReason: ''
                  attendanceStatus:
                    id: c5b989ea-39df-4fd5-9161-d86480908684
                    code: SL
                    name: Sick Leave
                    attendanceType: ABSENT
                - id: 21e4aac6-00c7-41ed-909d-14adda2d752c
                  employee:
                    id: 0c4b9627-10ad-4886-8299-d838b47097b0
                    identificationNumber: '1'
                    name: Employee 1
                  startDate: '2021-03-01'
                  endDate: '2021-03-05'
                  description: description
                  approvalStatus: APPROVED
                  rejectionReason: ''
                  attendanceStatus:
                    id: a5b989ea-39df-4fd5-9161-d86480908684
                    code: UL
                    name: Unpaid Leave
                    attendanceType: ABSENT
                - id: 10e817cb-fed5-431e-9338-25c0aba10d22
                  employee:
                    id: 0c4b9627-10ad-4886-8299-d838b47097b0
                    identificationNumber: '1'
                    name: Employee 1
                  startDate: '2021-01-05'
                  endDate: '2021-01-05'
                  description: description
                  approvalStatus: WAITING_FOR_APPROVAL
                  rejectionReason: ''
                  attendanceStatus:
                    id: b5b989ea-39df-4fd5-9161-d86480908684
                    code: WFH
                    name: Work From Home
                    attendanceType: ABSENT
                number: 0
                size: 10
                totalElements: 4
                totalPages: 1
                first: true
                last: true
                numberOfElements: 4
                pageable:
                  sort:
                  - direction: ASC
                    property: id
                  offset: 0
                  pageNumber: 0
                  pageSize: 10
                  paged: true
                  unpaged: false
                empty: false
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/absence-entries\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.absence_entries.list()"
  /timemanagement/v1/attendance-cancellations:
    get:
      tags:
      - time-management
      summary: Get Attendance Cancellations
      description: |
        ### Search Query
        | Supported Keys                | Supported Operators | Notes                                             |
        | ----------------------------- | ------------------- | ------------------------------------------------- |
        | employee.identificationNumber | :                   | Like                                              |
        | approvalStatus                | :                   | Equal                                              |
        | startDate                     | \><br><             | Greater than or equal to<br>Less than or equal to |
        | endDate                       | \><br><             | Greater than or equal to<br>Less than or equal to |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          createdDate:
                            type: string
                          startDate:
                            type: string
                          endDate:
                            type: string
                          description:
                            type: string
                          approvalStatus:
                            type: string
                          rejectionReason:
                            type: string
                          attendanceStatus:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              attendanceType:
                                type: string
              example:
                content:
                - id: 38c3edb6-6f12-4c27-8299-04aeaf125216
                  employee:
                    id: 0c4b9627-10ad-4886-8299-d838b47097b0
                    identificationNumber: '1'
                    name: Employee 1
                  createdDate: '2021-02-05'
                  startDate: '2021-02-05'
                  endDate: '2021-02-05'
                  description: description
                  approvalStatus: WAITING_FOR_APPROVAL
                  rejectionReason: ''
                  attendanceStatus:
                    id: c5b989ea-39df-4fd5-9161-d86480908684
                    code: SL
                    name: Sick Leave
                    attendanceType: ABSENT
                - id: 21e4aac6-00c7-41ed-909d-14adda2d752c
                  employee:
                    id: 0c4b9627-10ad-4886-8299-d838b47097b0
                    identificationNumber: '1'
                    name: Employee 1
                  createdDate: '2021-03-01'
                  startDate: '2021-03-01'
                  endDate: '2021-03-05'
                  description: description
                  approvalStatus: APPROVED
                  rejectionReason: ''
                  attendanceStatus:
                    id: a5b989ea-39df-4fd5-9161-d86480908684
                    code: AL
                    name: Annual Leave
                    attendanceType: ABSENT
                - id: 10e817cb-fed5-431e-9338-25c0aba10d22
                  employee:
                    id: 0c4b9627-10ad-4886-8299-d838b47097b0
                    identificationNumber: '1'
                    name: Employee 1
                  createdDate: '2021-01-05'
                  startDate: '2021-01-05'
                  endDate: '2021-01-05'
                  description: description
                  approvalStatus: WAITING_FOR_APPROVAL
                  rejectionReason: ''
                  attendanceStatus:
                    id: b5b989ea-39df-4fd5-9161-d86480908684
                    code: HDR
                    name: Hadir
                    attendanceType: PRESENT
                number: 0
                size: 10
                totalElements: 4
                totalPages: 1
                first: true
                last: true
                numberOfElements: 4
                pageable:
                  sort:
                  - direction: ASC
                    property: id
                  offset: 0
                  pageNumber: 0
                  pageSize: 10
                  paged: true
                  unpaged: false
                empty: false
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/attendance-cancellations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.attendance_cancellations.list()"
  /timemanagement/v1/employee-workday-configurations:
    get:
      tags:
      - time-management
      summary: Get Employee Workday Configurations
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes                                             |
        | -------------- | ------------------- | ------------------------------------------------- |
        | startDate      | \><br><             | Greater than or equal to<br>Less than or equal to |
        | endDate        | \><br><             | Greater than or equal to<br>Less than or equal to |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          startDate:
                            type: string
                          endDate:
                            type: string
                          shiftPatternTemplate:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                          workdayConfigurationDetails:
                            type: array
                            items:
                              type: object
                              properties:
                                shift:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    timeIn:
                                      type: string
                                    timeOut:
                                      type: string
                                    timeInUtc:
                                      type: number
                                    timeOutUtc:
                                      type: number
                                    breakStartUtc:
                                      type: number
                                    breakEndUtc:
                                      type: number
                                    color:
                                      type: string
                                sequence:
                                  type: number
                          startSequence:
                            type: number
                          startShift:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              timeIn:
                                type: string
                              timeOut:
                                type: string
                              timeInUtc:
                                type: number
                              timeOutUtc:
                                type: number
                              breakStartUtc:
                                type: number
                              breakEndUtc:
                                type: number
                              color:
                                type: string
                          includeHoliday:
                            type: boolean
                          includeMissingShift:
                            type: boolean
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
              example:
                content:
                - id: ''
                  startDate: '2021-04-05'
                  endDate: '2021-04-05'
                  shiftPatternTemplate:
                    id: ''
                    name: Template 1
                  workdayConfigurationDetails: []
                  startSequence: 1
                  startShift:
                    id: ''
                    code: '1'
                    name: Shift 1
                    timeInUtc: 28800000
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#00c983'
                  includeHoliday: false
                  includeMissingShift: false
                  employee:
                    id: ''
                    identificationNumber: '1'
                    name: Employee 1
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/employee-workday-configurations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.employee_workday_configurations.list()"
    post:
      tags:
      - time-management
      summary: Create Employee Roster Configuration
      description: Create an employee roster configuration.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  shiftPatternTemplate:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  workdayConfigurationDetails:
                    type: array
                    items:
                      type: object
                      properties:
                        shift:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            timeIn:
                              type: string
                            timeOut:
                              type: string
                            timeInUtc:
                              type: number
                            timeOutUtc:
                              type: number
                            breakStartUtc:
                              type: number
                            breakEndUtc:
                              type: number
                            color:
                              type: string
                        sequence:
                          type: number
                  startSequence:
                    type: number
                  startShift:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      timeIn:
                        type: string
                      timeOut:
                        type: string
                      timeInUtc:
                        type: number
                      timeOutUtc:
                        type: number
                      breakStartUtc:
                        type: number
                      breakEndUtc:
                        type: number
                      color:
                        type: string
                  includeHoliday:
                    type: boolean
                  includeMissingShift:
                    type: boolean
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
              example:
                id: 1c4f157c-903a-427b-8399-1efd4e5dfa84
                shiftPatternTemplate:
                  id: 34b1cd5e-366a-43d0-8bbe-443cc531b220
                  name: Pattern Template 1
                workdayConfigurationDetails:
                - shift:
                    id: ced2860c-7457-4d07-be16-2e1642173dc0
                    code: Shift 1
                    name: Shift 1
                    timeIn: 08:00:00
                    timeInUtc: 28800000
                    timeOut: 17:00:00
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#010101'
                  sequence: 0
                - shift:
                    id: 12345678-1234-1234-1234-123456789012
                    code: SHIFT-001
                    name: Morning Shift
                    timeIn: 08:00
                    timeOut: 17:00
                  sequence: 1
                startDate: '2017-01-01'
                endDate: '2017-01-06'
                includeHoliday: false
                startSequence: 1
                employee:
                  id: 09cf7051-4ac9-4a21-912d-bbeeb05ff97b
                  identificationNumber: EMP001
                  name: John Doe
                includeMissingShift: false
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                startDate:
                  type: string
                endDate:
                  type: string
                shiftPatternTemplate:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                startSequence:
                  type: number
                includeHoliday:
                  type: boolean
                includeMissingShift:
                  type: boolean
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
              required:
              - startDate
              - endDate
              - shiftPatternTemplate
              - startSequence
              - includeHoliday
              - includeMissingShift
              - employee
            example:
              shiftPatternTemplate:
                id: 34b1cd5e-366a-43d0-8bbe-443cc531b220
              startDate: '2017-01-01'
              endDate: '2017-01-06'
              includeHoliday: false
              startSequence: 1
              employee:
                id: 09cf7051-4ac9-4a21-912d-bbeeb05ff97b
              includeMissingShift: false
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/timemanagement/v1/employee-workday-configurations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"startDate\": \"2017-01-01\",\n  \"endDate\": \"2017-01-06\",\n  \"shiftPatternTemplate\": {\n    \"id\": \"34b1cd5e-366a-43d0-8bbe-443cc531b220\"\n  },\n  \"startSequence\": 1,\n  \"includeHoliday\": false,\n  \"includeMissingShift\": false,\n  \"employee\": {\n    \"id\": \"09cf7051-4ac9-4a21-912d-bbeeb05ff97b\"\n  }\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeWorkdayConfigurationRequest, IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.employee_workday_configurations.create(\n    employee_workday_configuration_request=EmployeeWorkdayConfigurationRequest(\n        start_date=\"2017-01-01\",\n        end_date=\"2017-01-06\",\n        shift_pattern_template=IdRequest(id=\"34b1cd5e-366a-43d0-8bbe-443cc531b220\"),\n        start_sequence=1,\n        include_holiday=False,\n        include_missing_shift=False,\n        employee=IdRequest(id=\"09cf7051-4ac9-4a21-912d-bbeeb05ff97b\"),\n    )\n)"
  /timemanagement/v1/employee-workday-configurations/{id}:
    get:
      tags:
      - time-management
      summary: Get Employee Roster Configuration by Id
      description: Return the employee roster configuration by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  shiftPatternTemplate:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  workdayConfigurationDetails:
                    type: array
                    items:
                      type: object
                      properties:
                        shift:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            timeIn:
                              type: string
                            timeOut:
                              type: string
                            timeInUtc:
                              type: number
                            timeOutUtc:
                              type: number
                            breakStartUtc:
                              type: number
                            breakEndUtc:
                              type: number
                            color:
                              type: string
                        sequence:
                          type: number
                  startSequence:
                    type: number
                  startShift:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      timeIn:
                        type: string
                      timeOut:
                        type: string
                      timeInUtc:
                        type: number
                      timeOutUtc:
                        type: number
                      breakStartUtc:
                        type: number
                      breakEndUtc:
                        type: number
                      color:
                        type: string
                  includeHoliday:
                    type: boolean
                  includeMissingShift:
                    type: boolean
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
              example:
                id: ''
                startDate: '2021-04-05'
                endDate: '2021-04-05'
                shiftPatternTemplate:
                  id: ''
                  name: Template 1
                workdayConfigurationDetails:
                - shift:
                    id: 12345678-1234-1234-1234-123456789012
                    code: SHIFT-001
                    name: Morning Shift
                  sequence: 0
                - shift:
                    id: ''
                    code: '1'
                    name: Shift 1
                    timeInUtc: 28800000
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#00c983'
                  sequence: 1
                startSequence: 0
                startShift:
                  id: ''
                  code: '1'
                  name: Shift 1
                  timeInUtc: 28800000
                  timeOutUtc: 61200000
                  breakStartUtc: 43200000
                  breakEndUtc: 46800000
                  color: '#00c983'
                includeHoliday: false
                includeMissingShift: false
                employee:
                  id: ''
                  identificationNumber: '1'
                  name: Employee 1
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/employee-workday-configurations/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.employee_workday_configurations.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
    put:
      tags:
      - time-management
      summary: Update Employee Roster Configuration
      description: Update the employee roster configuration.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  shiftPatternTemplate:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  workdayConfigurationDetails:
                    type: array
                    items:
                      type: object
                      properties:
                        shift:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            timeIn:
                              type: string
                            timeOut:
                              type: string
                            timeInUtc:
                              type: number
                            timeOutUtc:
                              type: number
                            breakStartUtc:
                              type: number
                            breakEndUtc:
                              type: number
                            color:
                              type: string
                        sequence:
                          type: number
                  startSequence:
                    type: number
                  startShift:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      timeIn:
                        type: string
                      timeOut:
                        type: string
                      timeInUtc:
                        type: number
                      timeOutUtc:
                        type: number
                      breakStartUtc:
                        type: number
                      breakEndUtc:
                        type: number
                      color:
                        type: string
                  includeHoliday:
                    type: boolean
                  includeMissingShift:
                    type: boolean
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
              example:
                id: ''
                startDate: '2021-04-05'
                endDate: '2021-04-05'
                shiftPatternTemplate:
                  id: ''
                  name: Template 1
                workdayConfigurationDetails:
                - shift:
                    id: 12345678-1234-1234-1234-123456789012
                    code: SHIFT-001
                    name: Morning Shift
                  sequence: 0
                - shift:
                    id: ''
                    code: '1'
                    name: Shift 1
                    timeInUtc: 28800000
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#00c983'
                  sequence: 1
                startSequence: 0
                startShift:
                  id: ''
                  code: '1'
                  name: Shift 1
                  timeInUtc: 28800000
                  timeOutUtc: 61200000
                  breakStartUtc: 43200000
                  breakEndUtc: 46800000
                  color: '#00c983'
                includeHoliday: false
                includeMissingShift: false
                employee:
                  id: ''
                  identificationNumber: '1'
                  name: Employee 1
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                startDate:
                  type: string
                endDate:
                  type: string
                shiftPatternTemplate:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                startSequence:
                  type: number
                includeHoliday:
                  type: boolean
                includeMissingShift:
                  type: boolean
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
              required:
              - startDate
              - endDate
              - shiftPatternTemplate
              - startSequence
              - includeHoliday
              - includeMissingShift
              - employee
            example:
              startDate: '2021-04-05'
              endDate: '2021-04-05'
              shiftPatternTemplate:
                id: ''
              startSequence: 0
              includeHoliday: false
              includeMissingShift: false
              employee:
                id: ''
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/timemanagement/v1/employee-workday-configurations/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"startDate\": \"2021-04-05\",\n  \"endDate\": \"2021-04-05\",\n  \"shiftPatternTemplate\": {\n    \"id\": \"\"\n  },\n  \"startSequence\": 0,\n  \"includeHoliday\": false,\n  \"includeMissingShift\": false,\n  \"employee\": {\n    \"id\": \"\"\n  }\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import EmployeeWorkdayConfigurationRequest, IdRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.employee_workday_configurations.update(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    employee_workday_configuration_request=EmployeeWorkdayConfigurationRequest(\n        start_date=\"2021-04-05\",\n        end_date=\"2021-04-05\",\n        shift_pattern_template=IdRequest(id=\"\"),\n        start_sequence=0,\n        include_holiday=False,\n        include_missing_shift=False,\n        employee=IdRequest(id=\"\"),\n    ),\n)"
    delete:
      tags:
      - time-management
      summary: Delete Employee Roster Configuration
      description: Delete the employee roster configuration.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/timemanagement/v1/employee-workday-configurations/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.employee_workday_configurations.delete(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /timemanagement/v1/fingerprints:
    post:
      tags:
      - time-management
      summary: Create Attendance Machine Data
      description: Create attendance machine data.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  successes:
                    type: array
                    items:
                      type: object
                      properties:
                        identificationNumber:
                          type: string
                        time:
                          type: string
                        date:
                          type: string
                  failures:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        message:
                          type: string
                        params:
                          type: object
                          properties:
                            identificationNumber:
                              type: string
              example:
                successes:
                - identificationNumber: '1'
                  time: '2021-04-05T07:50:00+07:00'
                  date: '2021-04-05'
                failures:
                - code: COM-EMPLOYEE_NOT_FOUND_WITH_EMPLOYEE_ID
                  message: Employee with employee ID 2 is not found
                  params:
                    identificationNumber: '2'
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  identificationNumber:
                    type: string
                  time:
                    type: string
                required:
                - identificationNumber
                - time
            example:
            - identificationNumber: '1'
              time: '2021-04-05T07:50:00+07:00'
            - identificationNumber: '2'
              time: '2021-04-05T07:55:00+07:00'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/timemanagement/v1/fingerprints\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '[\n  {\n    \"identificationNumber\": \"1\",\n    \"time\": \"2021-04-05T07:50:00+07:00\"\n  },\n  {\n    \"identificationNumber\": \"2\",\n    \"time\": \"2021-04-05T07:55:00+07:00\"\n  }\n]'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import FingerprintItemRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.fingerprints.create(\n    fingerprint_list_request=[\n        FingerprintItemRequest(\n            identification_number=\"1\", time=\"2021-04-05T07:50:00+07:00\"\n        ),\n        FingerprintItemRequest(\n            identification_number=\"2\", time=\"2021-04-05T07:55:00+07:00\"\n        ),\n    ]\n)"
  /timemanagement/v1/holidays:
    get:
      tags:
      - time-management
      summary: Get Holidays
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes                                             |
        | -------------- | ------------------- | ------------------------------------------------- |
        | holidayDate    | \><br><             | Greater than or equal to<br>Less than or equal to |
        | name           | :                   | Equal Operator                                    |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          holidayDate:
                            type: string
                            format: date
                            description: Date of the holiday
                          name:
                            type: string
                            description: Name of the holiday
              example:
                content:
                - holidayDate: '2019-05-01'
                  name: Hari Buruh
                - holidayDate: '2019-04-19'
                  name: Tahun Baru Masehi
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 2
                totalElements: 2
                last: true
                sort: []
                first: true
                empty: false
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/holidays\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.holidays.list()"
  /timemanagement/v1/leave-balances:
    get:
      tags:
      - time-management
      summary: Get Leave Balances
      description: |
        ### Search Query
        | Supported Keys                | Supported Operators | Notes                                                      |
        | ----------------------------- | ------------------- | ---------------------------------------------------------- |
        | employee.identificationNumber | :                   | Like                                                       |
        | year                          | :<br>><br><          |Equal<br>Greater than or equal to<br>Less than or equal to |
        | active                        | :                   | Equal                                                      |
        | extended                      | :                   | Equal                                                      |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          year:
                            type: number
                          accrualFrequencyType:
                            type: string
                          monthlyAccrualIncludeBonus:
                            type: boolean
                          givenDate:
                            type: string
                          startDate:
                            type: string
                          endDate:
                            type: string
                          expectedBalance:
                            type: number
                          balance:
                            type: number
                          bonus:
                            type: number
                          debt:
                            type: number
                          extended:
                            type: boolean
                          maximumExtendedDuration:
                            type: number
                          maximumExtendedBalance:
                            type: number
                          extendedBalanceIncludeBonus:
                            type: boolean
                          totalBalance:
                            type: number
                          usedLeave:
                            type: number
                          active:
                            type: boolean
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          approvedLeave:
                            type: number
                          pendingLeave:
                            type: number
                          collectiveLeave:
                            type: number
                          remaining:
                            type: number
                          extendedDate:
                            type: string
                          extendedBalance:
                            type: number
                          extendedUsedLeave:
                            type: number
                          extendedCollectiveLeave:
                            type: number
                          extendedAvailable:
                            type: number
                          extendedRemaining:
                            type: number
                          extendedApprovedLeave:
                            type: number
                          extendedPendingLeave:
                            type: number
              example:
                content:
                - id: 6cad89ed-4d93-43de-a2a7-89cf01673248
                  year: 2017
                  accrualFrequencyType: YEARLY
                  monthlyAccrualIncludeBonus: false
                  givenDate: '2017-01-01'
                  startDate: '2017-01-01'
                  endDate: '2017-12-31'
                  expectedBalance: 12
                  balance: 12
                  bonus: 0
                  debt: 0
                  extended: false
                  maximumExtendedDuration: 0
                  maximumExtendedBalance: 0
                  extendedBalanceIncludeBonus: false
                  totalBalance: 12
                  usedLeave: 0
                  active: false
                  employee:
                    id: 709a3d31-f7e8-4a8d-a7bf-bb4ad23fba9d
                    identificationNumber: LBA-01
                    name: Leave Balance Api 1
                  approvedLeave: 0
                  pendingLeave: 0
                  collectiveLeave: 0
                  remaining: 12
                  extendedDate: '2017-12-31'
                  extendedBalance: 0
                  extendedUsedLeave: 0
                  extendedCollectiveLeave: 0
                  extendedAvailable: 0
                  extendedRemaining: 0
                  extendedApprovedLeave: 0
                  extendedPendingLeave: 0
                - id: 4973ba60-0e33-43ab-8810-e533491cbbbc
                  year: 2021
                  accrualFrequencyType: YEARLY
                  monthlyAccrualIncludeBonus: false
                  givenDate: '2021-01-01'
                  startDate: '2021-01-01'
                  endDate: '2021-12-31'
                  expectedBalance: 12
                  balance: 12
                  bonus: 0
                  debt: 0
                  extended: false
                  maximumExtendedDuration: 0
                  maximumExtendedBalance: 0
                  extendedBalanceIncludeBonus: false
                  totalBalance: 12
                  usedLeave: 0.75
                  active: false
                  employee:
                    id: 709a3d31-f7e8-4a8d-a7bf-bb4ad23fba9d
                    identificationNumber: LBA-01
                    name: Leave Balance Api 1
                  approvedLeave: 0.5
                  pendingLeave: 0.25
                  collectiveLeave: 0
                  remaining: 11.25
                  extendedDate: '2021-12-31'
                  extendedBalance: 0
                  extendedUsedLeave: 0
                  extendedCollectiveLeave: 0
                  extendedAvailable: 0
                  extendedRemaining: 0
                  extendedApprovedLeave: 0
                  extendedPendingLeave: 0
                number: 0
                size: 10
                totalElements: 2
                totalPages: 1
                first: true
                last: true
                numberOfElements: 2
                pageable:
                  sort:
                  - direction: ASC
                    property: id
                  offset: 0
                  pageNumber: 0
                  pageSize: 10
                  paged: true
                  unpaged: false
                empty: false
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/leave-balances\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.leave_balances.list()"
    post:
      tags:
      - time-management
      summary: Create Leave Balance
      description: Create a leave balance.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  year:
                    type: number
                  accrualFrequencyType:
                    type: string
                  monthlyAccrualIncludeBonus:
                    type: boolean
                  givenDate:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  expectedBalance:
                    type: number
                  balance:
                    type: number
                  bonus:
                    type: number
                  debt:
                    type: number
                  extended:
                    type: boolean
                  maximumExtendedDuration:
                    type: number
                  maximumExtendedBalance:
                    type: number
                  extendedBalanceIncludeBonus:
                    type: boolean
                  totalBalance:
                    type: number
                  usedLeave:
                    type: number
                  active:
                    type: boolean
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  approvedLeave:
                    type: number
                  pendingLeave:
                    type: number
                  collectiveLeave:
                    type: number
                  remaining:
                    type: number
                  extendedDate:
                    type: string
                  extendedBalance:
                    type: number
                  extendedUsedLeave:
                    type: number
                  extendedCollectiveLeave:
                    type: number
                  extendedAvailable:
                    type: number
                  extendedRemaining:
                    type: number
                  extendedApprovedLeave:
                    type: number
                  extendedPendingLeave:
                    type: number
              example:
                id: 9f434479-136f-4303-ab20-bd389598c0a2
                employee:
                  id: 185906ae-108f-456d-a7e2-4782be11fac3
                  identificationNumber: NIK
                  name: NIK
                year: 2021
                accrualFrequencyType: YEARLY
                monthlyAccrualIncludeBonus: false
                givenDate: '2021-01-01'
                startDate: '2021-01-01'
                endDate: '2021-12-31'
                expectedBalance: 12
                balance: 12
                bonus: 0
                debt: 0
                extended: false
                maximumExtendedDuration: 0
                maximumExtendedBalance: 0
                extendedBalanceIncludeBonus: false
                totalBalance: 12
                usedLeave: 0
                approvedLeave: 0
                pendingLeave: 0
                collectiveLeave: 0
                remaining: 0
                extendedDate: '2021-12-31'
                extendedBalance: 0
                extendedUsedLeave: 0
                extendedCollectiveLeave: 0
                extendedAvailable: 0
                extendedRemaining: 0
                extendedApprovedLeave: 0
                extendedPendingLeave: 0
                active: true
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                identificationNumber:
                  type: string
                year:
                  type: number
                accrualFrequencyType:
                  type: string
                monthlyAccrualIncludeBonus:
                  type: boolean
                givenDate:
                  type: string
                startDate:
                  type: string
                endDate:
                  type: string
                balance:
                  type: number
                bonus:
                  type: number
                debt:
                  type: number
                extended:
                  type: boolean
                maximumExtendedDuration:
                  type: number
                maximumExtendedBalance:
                  type: number
                extendedBalanceIncludeBonus:
                  type: boolean
              required:
              - identificationNumber
              - year
              - accrualFrequencyType
              - monthlyAccrualIncludeBonus
              - givenDate
              - startDate
              - endDate
              - balance
              - bonus
              - debt
              - extended
              - maximumExtendedDuration
              - maximumExtendedBalance
              - extendedBalanceIncludeBonus
            example:
              identificationNumber: NIK
              year: 2021
              accrualFrequencyType: YEARLY
              monthlyAccrualIncludeBonus: false
              givenDate: '2021-01-01'
              startDate: '2021-01-01'
              endDate: '2021-12-31'
              balance: 12
              bonus: 0
              debt: 0
              extended: false
              maximumExtendedDuration: 0
              maximumExtendedBalance: 0
              extendedBalanceIncludeBonus: false
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/timemanagement/v1/leave-balances\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"identificationNumber\": \"NIK\",\n  \"year\": 2021,\n  \"accrualFrequencyType\": \"YEARLY\",\n  \"monthlyAccrualIncludeBonus\": false,\n  \"givenDate\": \"2021-01-01\",\n  \"startDate\": \"2021-01-01\",\n  \"endDate\": \"2021-12-31\",\n  \"balance\": 12,\n  \"bonus\": 0,\n  \"debt\": 0,\n  \"extended\": false,\n  \"maximumExtendedDuration\": 0,\n  \"maximumExtendedBalance\": 0,\n  \"extendedBalanceIncludeBonus\": false\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import LeaveBalanceRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.leave_balances.create(\n    leave_balance_request=LeaveBalanceRequest(\n        identification_number=\"NIK\",\n        year=2021,\n        accrual_frequency_type=\"YEARLY\",\n        monthly_accrual_include_bonus=False,\n        given_date=\"2021-01-01\",\n        start_date=\"2021-01-01\",\n        end_date=\"2021-12-31\",\n        balance=12,\n        bonus=0,\n        debt=0,\n        extended=False,\n        maximum_extended_duration=0,\n        maximum_extended_balance=0,\n        extended_balance_include_bonus=False,\n    )\n)"
  /timemanagement/v1/other-leave-balances:
    get:
      tags:
      - time-management
      summary: Get Other Leave Balances
      description: |
        ### Search Query
        | Supported Keys                | Supported Operators | Notes |
        | ----------------------------- | ------------------- | ----- |
        | employee.id                   | :                   | Equal |
        | employee.identificationNumber | :                   | Equal |
        | year                          | :                   | Equal |
        | otherLeaveStatus.code         | :                   | Equal |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          employee:
                            type: object
                            properties:
                              id:
                                type: string
                              identificationNumber:
                                type: string
                              name:
                                type: string
                          otherLeaveStatus:
                            type: object
                            properties:
                              code:
                                type: string
                              name:
                                type: string
                              description:
                                type: string
                          year:
                            type: number
                          givenDate:
                            type: string
                          startDate:
                            type: string
                          endDate:
                            type: string
                          balance:
                            type: number
                          usedBalance:
                            type: number
                          pendingBalance:
                            type: number
                          approvedBalance:
                            type: number
                          remaining:
                            type: number
                          minLeaveDate:
                            type: string
                          maxLeaveDate:
                            type: string
                          active:
                            type: boolean
              example:
                content:
                - id: 77901633-2ba8-497b-a0f6-370399c6e123
                  employee:
                    id: e2537fca-2f8b-4631-a60f-cc05aa4fbbbe
                    identificationNumber: '2322222222'
                    name: ah-sub02
                  otherLeaveStatus:
                    code: CBSR
                    name: Cuti Besar
                    description: Cuti Besar yang diberikan selama 5 tahun sekali
                  year: 2022
                  givenDate: '2022-01-01'
                  startDate: '2022-01-01'
                  endDate: '2022-12-31'
                  balance: 12
                  usedBalance: 2
                  pendingBalance: 2
                  approvedBalance: 0
                  remaining: 8
                  minLeaveDate: '2022-04-01'
                  maxLeaveDate: '2022-04-04'
                  active: true
                totalPages: 1
                totalElements: 1
                numberOfElements: 1
                size: 10
                number: 0
                first: true
                last: true
                sort:
                - direction: ASC
                  property: id
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/other-leave-balances\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.other_leave_balances.list()"
    post:
      tags:
      - time-management
      summary: Create Other Leave Balance
      description: Create an other leave balance.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                  otherLeaveStatus:
                    type: object
                    properties:
                      code:
                        type: string
                      name:
                        type: string
                      description:
                        type: string
                  year:
                    type: number
                  givenDate:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  balance:
                    type: number
              example:
                id: 592309f9-89ff-4fb3-8435-aeb54e0847d2
                employee:
                  id: 9647a60d-55db-44fb-8b23-55f610675eb8
                  identificationNumber: otherleave1
                  name: otherleave1
                otherLeaveStatus:
                  code: CBSR
                  name: Cuti Besar
                  description: Cuti Besar yang diberikan selama 5 tahun sekali
                year: 2011
                givenDate: '2017-01-01'
                startDate: '2017-01-01'
                endDate: '2025-12-01'
                balance: 15
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                identificationNumber:
                  type: string
                otherLeaveStatusCode:
                  type: string
                year:
                  type: number
                balance:
                  type: number
                givenDate:
                  type: string
                startDate:
                  type: string
                endDate:
                  type: string
              required:
              - identificationNumber
              - otherLeaveStatusCode
              - year
              - balance
              - givenDate
              - startDate
              - endDate
            example:
              identificationNumber: otherleave1
              otherLeaveStatusCode: CBSR
              year: 2011
              balance: 15
              givenDate: '2017-01-01'
              startDate: '2017-01-01'
              endDate: '2025-12-01'
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/timemanagement/v1/other-leave-balances\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"identificationNumber\": \"otherleave1\",\n  \"otherLeaveStatusCode\": \"CBSR\",\n  \"year\": 2011,\n  \"balance\": 15,\n  \"givenDate\": \"2017-01-01\",\n  \"startDate\": \"2017-01-01\",\n  \"endDate\": \"2025-12-01\"\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import OtherLeaveBalanceRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.other_leave_balances.create(\n    other_leave_balance_request=OtherLeaveBalanceRequest(\n        identification_number=\"otherleave1\",\n        other_leave_status_code=\"CBSR\",\n        year=2011,\n        balance=15,\n        given_date=\"2017-01-01\",\n        start_date=\"2017-01-01\",\n        end_date=\"2025-12-01\",\n    )\n)"
  /timemanagement/v1/shift-pattern-templates:
    get:
      tags:
      - time-management
      summary: Get Shift Pattern Templates
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes         |
        | -------------- | ------------------- | ------------- |
        | name           | :                   | Like operator |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          shiftPatternTemplateDetails:
                            type: array
                            items:
                              type: object
                              properties:
                                shift:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    timeIn:
                                      type: string
                                    timeOut:
                                      type: string
                                    timeInUtc:
                                      type: number
                                    timeOutUtc:
                                      type: number
                                    breakStartUtc:
                                      type: number
                                    breakEndUtc:
                                      type: number
                                    color:
                                      type: string
                                sequence:
                                  type: number
              example:
                content:
                - id: 34b1cd5e-366a-43d0-8bbe-443cc531b220
                  name: Pattern test 1
                  shiftPatternTemplateDetails: []
                pageable: INSTANCE
                number: 0
                size: 10
                totalPages: 1
                numberOfElements: 1
                totalElements: 1
                last: true
                sort: []
                first: true
                empty: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/shift-pattern-templates\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.shift_pattern_templates.list()"
    post:
      tags:
      - time-management
      summary: Create Shift Pattern Template
      description: Create a shift pattern template.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  shiftPatternTemplateDetails:
                    type: array
                    items:
                      type: object
                      properties:
                        shift:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            timeIn:
                              type: string
                            timeOut:
                              type: string
                            timeInUtc:
                              type: number
                            timeOutUtc:
                              type: number
                            breakStartUtc:
                              type: number
                            breakEndUtc:
                              type: number
                            color:
                              type: string
                        sequence:
                          type: number
              example:
                id: b09a38f9-ae86-4e1b-a52a-5f1b3ec6b919
                name: Pattern test 3
                shiftPatternTemplateDetails:
                - shift:
                    id: ced2860c-7457-4d07-be16-2e1642173dc0
                    code: '1'
                    name: Shift 1
                    timeIn: 08:00:00
                    timeInUtc: 28800000
                    timeOut: 17:00:00
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#00c983'
                  sequence: 0
                - shift:
                    id: 12345678-1234-1234-1234-123456789012
                    code: SHIFT-001
                    name: Morning Shift
                  sequence: 1
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                shiftPatternTemplateDetails:
                  type: array
                  items:
                    type: object
                    properties:
                      shift:
                        anyOf:
                        - type: object
                          nullable: true
                        - type: object
                          properties:
                            id:
                              type: string
                              description: Unique identifier
                          required:
                          - id
                      sequence:
                        type: number
                    required:
                    - shift
                    - sequence
              required:
              - name
              - shiftPatternTemplateDetails
            example:
              name: Pattern test 3
              shiftPatternTemplateDetails:
              - shift:
                  id: ced2860c-7457-4d07-be16-2e1642173dc0
                sequence: 0
              - shift:
                  id: 12345678-1234-1234-1234-123456789012
                  code: SHIFT-002
                  name: Evening Shift
                sequence: 1
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/timemanagement/v1/shift-pattern-templates\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"name\": \"Pattern test 3\",\n  \"shiftPatternTemplateDetails\": [\n    {\n      \"shift\": {\n        \"id\": \"ced2860c-7457-4d07-be16-2e1642173dc0\"\n      },\n      \"sequence\": 0\n    },\n    {\n      \"shift\": {\n        \"id\": \"12345678-1234-1234-1234-123456789012\",\n        \"code\": \"SHIFT-002\",\n        \"name\": \"Evening Shift\"\n      },\n      \"sequence\": 1\n    }\n  ]\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import ShiftPatternTemplateRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.shift_pattern_templates.create(\n    shift_pattern_template_request=ShiftPatternTemplateRequest(\n        name=\"Pattern test 3\",\n        shift_pattern_template_details=[\n            {\"shift\": {\"id\": \"ced2860c-7457-4d07-be16-2e1642173dc0\"}, \"sequence\": 0},\n            {\n                \"shift\": {\n                    \"id\": \"12345678-1234-1234-1234-123456789012\",\n                    \"code\": \"SHIFT-002\",\n                    \"name\": \"Evening Shift\",\n                },\n                \"sequence\": 1,\n            },\n        ],\n    )\n)"
  /timemanagement/v1/shift-pattern-templates/{id}:
    get:
      tags:
      - time-management
      summary: Get Shift Pattern Template by Id
      description: Return the shift pattern template by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  shiftPatternTemplateDetails:
                    type: array
                    items:
                      type: object
                      properties:
                        shift:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            timeIn:
                              type: string
                            timeOut:
                              type: string
                            timeInUtc:
                              type: number
                            timeOutUtc:
                              type: number
                            breakStartUtc:
                              type: number
                            breakEndUtc:
                              type: number
                            color:
                              type: string
                        sequence:
                          type: number
              example:
                content:
                - id: ''
                  name: Template 1
                  shiftPatternTemplateDetails:
                  - shift:
                      id: 12345678-1234-1234-1234-123456789012
                      code: SHIFT-001
                      name: Morning Shift
                    sequence: 0
                  - shift:
                      id: ''
                      code: '1'
                      name: Shift 1
                      timeInUtc: 28800000
                      timeOutUtc: 61200000
                      breakStartUtc: 43200000
                      breakEndUtc: 46800000
                      color: '#00c983'
                    sequence: 1
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/shift-pattern-templates/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.shift_pattern_templates.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
    put:
      tags:
      - time-management
      summary: Update Shift Pattern Template
      description: Update the shift pattern template.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  shiftPatternTemplateDetails:
                    type: array
                    items:
                      type: object
                      properties:
                        shift:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            timeIn:
                              type: string
                            timeOut:
                              type: string
                            timeInUtc:
                              type: number
                            timeOutUtc:
                              type: number
                            breakStartUtc:
                              type: number
                            breakEndUtc:
                              type: number
                            color:
                              type: string
                        sequence:
                          type: number
              example:
                id: ''
                name: Template 1
                shiftPatternTemplateDetails:
                - shift:
                    id: 12345678-1234-1234-1234-123456789012
                    code: SHIFT-001
                    name: Morning Shift
                  sequence: 0
                - shift:
                    id: ''
                    code: '1'
                    name: Shift 1
                    timeInUtc: 28800000
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#00c983'
                  sequence: 1
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                shiftPatternTemplateDetails:
                  type: array
                  items:
                    type: object
                    properties:
                      shift:
                        anyOf:
                        - type: object
                          nullable: true
                        - type: object
                          properties:
                            id:
                              type: string
                              description: Unique identifier
                          required:
                          - id
                      sequence:
                        type: number
                    required:
                    - shift
                    - sequence
              required:
              - name
              - shiftPatternTemplateDetails
            example:
              name: Template 1
              shiftPatternTemplateDetails:
              - shift:
                  id: 12345678-1234-1234-1234-123456789012
                  code: SHIFT-001
                  name: Morning Shift
                sequence: 0
              - shift:
                  id: ''
                sequence: 1
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/timemanagement/v1/shift-pattern-templates/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"name\": \"Template 1\",\n  \"shiftPatternTemplateDetails\": [\n    {\n      \"shift\": {\n        \"id\": \"12345678-1234-1234-1234-123456789012\",\n        \"code\": \"SHIFT-001\",\n        \"name\": \"Morning Shift\"\n      },\n      \"sequence\": 0\n    },\n    {\n      \"shift\": {\n        \"id\": \"\"\n      },\n      \"sequence\": 1\n    }\n  ]\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import ShiftPatternTemplateRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.shift_pattern_templates.update(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    shift_pattern_template_request=ShiftPatternTemplateRequest(\n        name=\"Template 1\",\n        shift_pattern_template_details=[\n            {\n                \"shift\": {\n                    \"id\": \"12345678-1234-1234-1234-123456789012\",\n                    \"code\": \"SHIFT-001\",\n                    \"name\": \"Morning Shift\",\n                },\n                \"sequence\": 0,\n            },\n            {\"shift\": {\"id\": \"\"}, \"sequence\": 1},\n        ],\n    ),\n)"
    delete:
      tags:
      - time-management
      summary: Delete Shift Pattern Template
      description: Delete the shift pattern template.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/timemanagement/v1/shift-pattern-templates/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.shift_pattern_templates.delete(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /timemanagement/v1/workgroup-workday-configurations:
    get:
      tags:
      - time-management
      summary: Get Workgroup Workday Configurations
      description: |
        ### Search Query
        | Supported Keys | Supported Operators | Notes                                             |
        | -------------- | ------------------- | ------------------------------------------------- |
        | startDate      | \><br><             | Greater than or equal to<br>Less than or equal to |
        | endDate        | \><br><             | Greater than or equal to<br>Less than or equal to |
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          startDate:
                            type: string
                          endDate:
                            type: string
                          shiftPatternTemplate:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                          workdayConfigurationDetails:
                            type: array
                            items:
                              type: object
                              properties:
                                shift:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    timeIn:
                                      type: string
                                    timeOut:
                                      type: string
                                    timeInUtc:
                                      type: number
                                    timeOutUtc:
                                      type: number
                                    breakStartUtc:
                                      type: number
                                    breakEndUtc:
                                      type: number
                                    color:
                                      type: string
                                sequence:
                                  type: number
                          startSequence:
                            type: number
                          startShift:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              timeIn:
                                type: string
                              timeOut:
                                type: string
                              timeInUtc:
                                type: number
                              timeOutUtc:
                                type: number
                              breakStartUtc:
                                type: number
                              breakEndUtc:
                                type: number
                              color:
                                type: string
                          includeHoliday:
                            type: boolean
                          workgroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
              example:
                content:
                - id: ''
                  startDate: '2021-04-05'
                  endDate: '2021-04-05'
                  shiftPatternTemplate:
                    id: ''
                    name: Template 1
                  workdayConfigurationDetails: []
                  startSequence: 1
                  startShift:
                    id: ''
                    code: '1'
                    name: Shift 1
                    timeInUtc: 28800000
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#00c983'
                  includeHoliday: false
                  workgroup:
                    id: ''
                    code: '1'
                    name: Workgroup 1
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: updatedDate
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                - direction: DESC
                  property: id
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/workgroup-workday-configurations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.workgroup_workday_configurations.list()"
    post:
      tags:
      - time-management
      summary: Create Workgroup Roster Configuration
      description: Create a workgroup roster configuration.
      parameters: []
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  shiftPatternTemplate:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  workdayConfigurationDetails:
                    type: array
                    items:
                      type: object
                      properties:
                        shift:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            timeIn:
                              type: string
                            timeOut:
                              type: string
                            timeInUtc:
                              type: number
                            timeOutUtc:
                              type: number
                            breakStartUtc:
                              type: number
                            breakEndUtc:
                              type: number
                            color:
                              type: string
                        sequence:
                          type: number
                  startSequence:
                    type: number
                  startShift:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      timeIn:
                        type: string
                      timeOut:
                        type: string
                      timeInUtc:
                        type: number
                      timeOutUtc:
                        type: number
                      breakStartUtc:
                        type: number
                      breakEndUtc:
                        type: number
                      color:
                        type: string
                  includeHoliday:
                    type: boolean
                  workgroup:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
              example:
                id: a0e1b4fb-b973-4347-ac54-b37aebbd1195
                shiftPatternTemplate:
                  id: 34b1cd5e-366a-43d0-8bbe-443cc531b220
                  name: Pattern Template 1
                workdayConfigurationDetails:
                - shift:
                    id: ced2860c-7457-4d07-be16-2e1642173dc0
                    code: Shift 1
                    name: Shift 1
                    timeIn: 08:00:00
                    timeInUtc: 28800000
                    timeOut: 17:00:00
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#010101'
                  sequence: 0
                - shift:
                    id: 12345678-1234-1234-1234-123456789012
                    code: SHIFT-001
                    name: Morning Shift
                  sequence: 1
                startDate: '2017-01-01'
                endDate: '2017-01-06'
                includeHoliday: false
                startSequence: 1
                startShift:
                  id: 12345678-1234-1234-1234-123456789012
                  code: SHIFT-001
                  name: Morning Shift
                workgroup:
                  id: 09cf7051-4ac9-4a21-912d-bbeeb05ff97b
                  code: WG001
                  name: Workgroup Alpha
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                shiftPatternTemplate:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                startDate:
                  type: string
                endDate:
                  type: string
                includeHoliday:
                  type: boolean
                startSequence:
                  type: number
                workgroup:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
              required:
              - shiftPatternTemplate
              - startDate
              - endDate
              - includeHoliday
              - startSequence
              - workgroup
            example:
              shiftPatternTemplate:
                id: 34b1cd5e-366a-43d0-8bbe-443cc531b220
              startDate: '2017-01-01'
              endDate: '2017-01-06'
              includeHoliday: false
              startSequence: 1
              workgroup:
                id: 09cf7051-4ac9-4a21-912d-bbeeb05ff97b
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X POST \\\n  \"https://api.catapa.com/timemanagement/v1/workgroup-workday-configurations\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"shiftPatternTemplate\": {\n    \"id\": \"34b1cd5e-366a-43d0-8bbe-443cc531b220\"\n  },\n  \"startDate\": \"2017-01-01\",\n  \"endDate\": \"2017-01-06\",\n  \"includeHoliday\": false,\n  \"startSequence\": 1,\n  \"workgroup\": {\n    \"id\": \"09cf7051-4ac9-4a21-912d-bbeeb05ff97b\"\n  }\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest, WorkgroupWorkdayConfigurationRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.workgroup_workday_configurations.create(\n    workgroup_workday_configuration_request=WorkgroupWorkdayConfigurationRequest(\n        shift_pattern_template=IdRequest(id=\"34b1cd5e-366a-43d0-8bbe-443cc531b220\"),\n        start_date=\"2017-01-01\",\n        end_date=\"2017-01-06\",\n        include_holiday=False,\n        start_sequence=1,\n        workgroup=IdRequest(id=\"09cf7051-4ac9-4a21-912d-bbeeb05ff97b\"),\n    )\n)"
  /timemanagement/v1/workgroup-workday-configurations/{id}:
    get:
      tags:
      - time-management
      summary: Get Workgroup Roster Configuration by Id
      description: Get Workgroup Roster Configuration by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  shiftPatternTemplate:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  workdayConfigurationDetails:
                    type: array
                    items:
                      type: object
                      properties:
                        shift:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            timeIn:
                              type: string
                            timeOut:
                              type: string
                            timeInUtc:
                              type: number
                            timeOutUtc:
                              type: number
                            breakStartUtc:
                              type: number
                            breakEndUtc:
                              type: number
                            color:
                              type: string
                        sequence:
                          type: number
                  startSequence:
                    type: number
                  startShift:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      timeIn:
                        type: string
                      timeOut:
                        type: string
                      timeInUtc:
                        type: number
                      timeOutUtc:
                        type: number
                      breakStartUtc:
                        type: number
                      breakEndUtc:
                        type: number
                      color:
                        type: string
                  includeHoliday:
                    type: boolean
                  workgroup:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
              example:
                id: ''
                startDate: '2021-04-05'
                endDate: '2021-04-05'
                shiftPatternTemplate:
                  id: 12345678-1234-1234-1234-123456789012
                  name: Template 1
                workdayConfigurationDetails:
                - shift:
                    id: 12345678-1234-1234-1234-123456789012
                    code: SHIFT-001
                    name: Morning Shift
                  sequence: 0
                - shift:
                    id: 12345678-1234-1234-1234-123456789012
                    code: '1'
                    name: Shift 1
                    timeInUtc: 28800000
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#00c983'
                  sequence: 1
                startSequence: 0
                startShift:
                  id: 12345678-1234-1234-1234-123456789012
                  code: SHIFT-001
                  name: Morning Shift
                includeHoliday: false
                workgroup:
                  id: 12345678-1234-1234-1234-123456789012
                  code: '1'
                  name: Workgroup 1
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/timemanagement/v1/workgroup-workday-configurations/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.workgroup_workday_configurations.retrieve(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
    put:
      tags:
      - time-management
      summary: Update Workgroup Roster Configuration
      description: Update Workgroup Roster Configuration.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  startDate:
                    type: string
                  endDate:
                    type: string
                  shiftPatternTemplate:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  workdayConfigurationDetails:
                    type: array
                    items:
                      type: object
                      properties:
                        shift:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            timeIn:
                              type: string
                            timeOut:
                              type: string
                            timeInUtc:
                              type: number
                            timeOutUtc:
                              type: number
                            breakStartUtc:
                              type: number
                            breakEndUtc:
                              type: number
                            color:
                              type: string
                        sequence:
                          type: number
                  startSequence:
                    type: number
                  startShift:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      timeIn:
                        type: string
                      timeOut:
                        type: string
                      timeInUtc:
                        type: number
                      timeOutUtc:
                        type: number
                      breakStartUtc:
                        type: number
                      breakEndUtc:
                        type: number
                      color:
                        type: string
                  includeHoliday:
                    type: boolean
                  workgroup:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
              example:
                id: ''
                startDate: '2021-04-05'
                endDate: '2021-04-05'
                shiftPatternTemplate:
                  id: ''
                  name: Template 1
                workdayConfigurationDetails:
                - shift:
                    id: 12345678-1234-1234-1234-123456789012
                    code: SHIFT-001
                    name: Morning Shift
                  sequence: 0
                - shift:
                    id: ''
                    code: '1'
                    name: Shift 1
                    timeInUtc: 28800000
                    timeOutUtc: 61200000
                    breakStartUtc: 43200000
                    breakEndUtc: 46800000
                    color: '#00c983'
                  sequence: 1
                startSequence: 0
                startShift:
                  id: 12345678-1234-1234-1234-123456789012
                  code: SHIFT-001
                  name: Morning Shift
                includeHoliday: false
                workgroup:
                  id: ''
                  code: '1'
                  name: Workgroup 1
        '400':
          description: Bad Request
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                shiftPatternTemplate:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
                startDate:
                  type: string
                endDate:
                  type: string
                includeHoliday:
                  type: boolean
                startSequence:
                  type: number
                workgroup:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
              required:
              - shiftPatternTemplate
              - startDate
              - endDate
              - includeHoliday
              - startSequence
              - workgroup
            example:
              startDate: '2021-04-05'
              endDate: '2021-04-05'
              shiftPatternTemplate:
                id: ''
              startSequence: 0
              includeHoliday: false
              workgroup:
                id: ''
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X PUT \\\n  \"https://api.catapa.com/timemanagement/v1/workgroup-workday-configurations/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"shiftPatternTemplate\": {\n    \"id\": \"\"\n  },\n  \"startDate\": \"2021-04-05\",\n  \"endDate\": \"2021-04-05\",\n  \"includeHoliday\": false,\n  \"startSequence\": 0,\n  \"workgroup\": {\n    \"id\": \"\"\n  }\n}'"
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\nfrom openapi_client import IdRequest, WorkgroupWorkdayConfigurationRequest\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.workgroup_workday_configurations.update(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n    workgroup_workday_configuration_request=WorkgroupWorkdayConfigurationRequest(\n        shift_pattern_template=IdRequest(id=\"\"),\n        start_date=\"2021-04-05\",\n        end_date=\"2021-04-05\",\n        include_holiday=False,\n        start_sequence=0,\n        workgroup=IdRequest(id=\"\"),\n    ),\n)"
    delete:
      tags:
      - time-management
      summary: Delete Workgroup Roster Configuration
      description: Delete Workgroup Roster Configuration.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
              example: {}
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X DELETE \\\n  \"https://api.catapa.com/timemanagement/v1/workgroup-workday-configurations/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.timemanagement.workgroup_workday_configurations.delete(\n    id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /anomalydetection/v1/anomaly-detection-types/{type}/anomaly-suspects:
    get:
      tags:
      - anomaly-detection
      summary: Get Anomaly Suspects
      description: |
        ### Search Query
        | Supported Keys                | Supported Operators | Notes                                             |
        | ----------------------------- | ------------------- | ------------------------------------------------- |
        | identifier                    | :                   | Like                                              |
      parameters:
      - in: path
        name: type
        schema:
          type: string
          enum:
          - MEDICAL_CLAIM
        required: true
        example: MEDICAL_CLAIM
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      description: List of anomaly suspects
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Unique identifier for the anomaly suspect
                          identifier:
                            type: string
                            description: Anomaly suspect identifier
                          file:
                            type: object
                            properties:
                              filename:
                                type: string
                                description: Name of the file
                              path:
                                type: string
                                description: File path
                              url:
                                type: string
                                description: URL to access the file
                          anomalySuspectAttributeValues:
                            type: array
                            description: List of anomaly suspect attribute values
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  description: Unique identifier for the attribute value
                                attributeValue:
                                  type: string
                                  description: Value of the attribute
                                score:
                                  type: number
                                  description: Score associated with the attribute value
                                inputSource:
                                  type: string
                                  description: Source of the input data
                                  enum:
                                  - USER
                                  - OCR
                                anomalySuspectAttribute:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      description: Unique identifier for the attribute
                                    attributeKey:
                                      type: string
                                      description: Key/name of the attribute
                                child:
                                  type: array
                                  description: Child attribute values
                                  items:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                        description: Unique identifier for the child attribute value
                                      attributeValue:
                                        type: string
                                        description: Value of the child attribute
                                      anomalySuspectAttribute:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                            description: Unique identifier for the attribute
                                          attributeKey:
                                            type: string
                                            description: Key/name of the attribute
              example:
                content:
                - id: d1ea18d8-a691-11e6-80f5-76304dec7066
                  identifier: SUSPECT001
                  file:
                    filename: suspect_document.pdf
                    path: /uploads/documents/suspect_document.pdf
                    url: https://example.com/files/suspect_document.pdf
                  anomalySuspectAttributeValues:
                  - id: 019a12bd-20e0-7de1-9fb1-ffc9b575bd1e
                    anomalySuspectAttribute:
                      id: 019a12bd-467e-75f8-9b89-ab44588fa83b
                      attributeKey: Risk Score
                    attributeValue: '85.5'
                    score: 0.85
                    inputSource: OCR
                    child: []
                - id: d1ea18d8-a691-11e6-80f5-76304dec7067
                  identifier: SUSPECT002
                  file:
                    filename: suspect_document.pdf
                    path: /uploads/documents/suspect_document.pdf
                    url: https://example.com/files/suspect_document.pdf
                  anomalySuspectAttributeValues:
                  - id: 019a12bd-20e0-7de1-9fb1-ffc9b575bd1f
                    anomalySuspectAttribute:
                      id: 019a12bd-467e-75f8-9b89-ab44588fa83c
                      attributeKey: Risk Score
                    attributeValue: '98'
                    score: 0.98
                    inputSource: OCR
                    child: []
                number: 0
                size: 10
                totalElements: 2
                totalPages: 1
                first: true
                last: true
                numberOfElements: 2
                pageable:
                  sort:
                  - direction: ASC
                    property: id
                  offset: 0
                  pageNumber: 0
                  pageSize: 10
                  paged: true
                  unpaged: false
                empty: false
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/anomalydetection/v1/anomaly-detection-types/MEDICAL_CLAIM/anomaly-suspects\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.anomalydetection.anomaly_detection_types.anomaly_suspects.list(\n    type=\"MEDICAL_CLAIM\"\n)"
  /anomalydetection/v1/anomaly-detection-types/{type}/anomaly-suspects/{id}:
    get:
      tags:
      - anomaly-detection
      summary: Get Anomaly Suspect by Id
      description: Return the anomaly suspect by Id.
      parameters:
      - in: path
        name: type
        schema:
          type: string
          enum:
          - MEDICAL_CLAIM
        required: true
        example: MEDICAL_CLAIM
      - in: path
        name: id
        schema:
          type: string
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier for the anomaly suspect
                  identifier:
                    type: string
                    description: Anomaly suspect identifier
                  file:
                    type: object
                    properties:
                      filename:
                        type: string
                        description: Name of the file
                      path:
                        type: string
                        description: File path
                      url:
                        type: string
                        description: URL to access the file
                  anomalySuspectAttributeValues:
                    type: array
                    description: List of anomaly suspect attribute values
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Unique identifier for the attribute value
                        attributeValue:
                          type: string
                          description: Value of the attribute
                        score:
                          type: number
                          description: Score associated with the attribute value
                        inputSource:
                          type: string
                          description: Source of the input data
                          enum:
                          - USER
                          - OCR
                        anomalySuspectAttribute:
                          type: object
                          properties:
                            id:
                              type: string
                              description: Unique identifier for the attribute
                            attributeKey:
                              type: string
                              description: Key/name of the attribute
                        child:
                          type: array
                          description: Child attribute values
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                description: Unique identifier for the child attribute value
                              attributeValue:
                                type: string
                                description: Value of the child attribute
                              anomalySuspectAttribute:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    description: Unique identifier for the attribute
                                  attributeKey:
                                    type: string
                                    description: Key/name of the attribute
              example:
                content:
                - id: d1ea18d8-a691-11e6-80f5-76304dec7066
                  identifier: SUSPECT001
                  file:
                    filename: suspect_document.pdf
                    path: /uploads/documents/suspect_document.pdf
                    url: https://example.com/files/suspect_document.pdf
                  anomalySuspectAttributeValues:
                  - id: 019a12bd-20e0-7de1-9fb1-ffc9b575bd1e
                    anomalySuspectAttribute:
                      id: 019a12bd-467e-75f8-9b89-ab44588fa83b
                      attributeKey: Risk Score
                    attributeValue: '85.5'
                    score: 0.85
                    inputSource: OCR
                    child: []
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/anomalydetection/v1/anomaly-detection-types/MEDICAL_CLAIM/anomaly-suspects/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.anomalydetection.anomaly_detection_types.anomaly_suspects.retrieve(\n    type=\"MEDICAL_CLAIM\", id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"\n)"
  /v1/oauth-clients:
    get:
      tags:
      - oauth-client
      summary: Get OAuth Clients
      description: Return the OAuth clients.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            description: OAuth client unique identifier
                          clientId:
                            type: string
                            description: OAuth client ID used for authentication
                          scope:
                            type: string
                            description: OAuth scopes granted to this client
                          authorizedGrantTypes:
                            type: string
                            description: Comma-separated list of authorized grant types (e.g., client_credentials, authorization_code, refresh_token)
                          authorities:
                            type: string
                            description: Authorities granted to this client
                          webServerRedirectUri:
                            type: string
                            description: Redirect URI for web server flow
                          authorizeAllEndpoints:
                            type: boolean
                            description: Whether this client is authorized to access all endpoints
                      description: List of OAuth clients
              example:
                content:
                - id: 26972039-d1bc-11ef-ab12-0242ac120003
                  clientId: authorization_code_grant_type
                  scope: ''
                  authorizedGrantTypes: client_credentials,authorization_code,refresh_token
                  authorities: client
                  webServerRedirectUri: https://catapa.com
                  authorizeAllEndpoints: false
                number: 0
                size: 10
                totalElements: 1
                first: true
                last: true
                numberOfElements: 1
                totalPages: 1
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/v1/oauth-clients?page=0&size=10\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.oauth_clients.list(page=0, size=10)"
  /v1/oauth-clients/validate-access-token:
    get:
      tags:
      - oauth
      summary: Validate Access Token
      description: |
        Verify the status of a token

        Response Codes:
        - 200 OK: Token is valid.
        - 401 Unauthorized: Token is invalid or expired.

        If the token has expired, you need to regenerate the bearer token again.
      parameters: []
      responses:
        '200':
          description: Token is valid.
        '401':
          description: Token is invalid or expired.
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/v1/oauth-clients/validate-access-token\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.oauth_clients.validate_access_token.list()"
  /v1/oauth-clients/{id}:
    get:
      tags:
      - oauth-client
      summary: Get OAuth Client by Id
      description: Return the OAuth client by Id.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        description: OAuth Client ID
        required: true
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: OAuth client unique identifier
                  clientId:
                    type: string
                    description: OAuth client ID used for authentication
                  scope:
                    type: string
                    description: OAuth scopes granted to this client
                  authorizedGrantTypes:
                    type: string
                    description: Comma-separated list of authorized grant types (e.g., client_credentials, authorization_code, refresh_token)
                  authorities:
                    type: string
                    description: Authorities granted to this client
                  webServerRedirectUri:
                    type: string
                    description: Redirect URI for web server flow
                  authorizeAllEndpoints:
                    type: boolean
                    description: Whether this client is authorized to access all endpoints
              example:
                id: 26972039-d1bc-11ef-ab12-0242ac120003
                clientId: authorization_code_grant_type
                scope: ''
                authorizedGrantTypes: client_credentials,authorization_code,refresh_token
                authorities: client
                webServerRedirectUri: https://catapa.com
                authorizeAllEndpoints: false
        '400':
          description: Bad Request
        '404':
          description: Not Found
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/v1/oauth-clients/f47ac10b-58cc-4372-a567-0e02b2c3d479\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.oauth_clients.retrieve(id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\")"
  /v1/roles:
    get:
      tags:
      - role
      summary: Get Roles
      description: Return the roles.
      parameters:
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      - in: query
        name: query
        description: |
          ### Search query  
          | Supported Keys | Supported Operators | Notes                                                                                     |
          |----------------|---------------------|-------------------------------------------------------------------------------------------|
          | id             | `:`                 | Equal operator<br/>Support multiple values with each value separated by the `;` delimiter |
          | name           | `:`                 | Like operator                                                                             |
        schema:
          type: string
        examples:
          one:
            summary: Search a role by name
            value: name:admin
          two:
            summary: Search a role by Id
            value: id:8742a724-0a64-4b1f-92c9-cbcce0c15a92
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Role ID
                          name:
                            type: string
                            description: Role Name
                      description: List of roles
              example:
                content:
                - id: 8742a724-0a64-4b1f-92c9-cbcce0c15a92
                  name: System Admin
                totalPages: 1
                last: true
                totalElements: 1
                numberOfElements: 1
                sort:
                - direction: DESC
                  property: name
                  ignoreCase: false
                  nullHandling: NATIVE
                  ascending: false
                  descending: true
                first: true
                size: 10
                number: 0
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/v1/roles?page=0&size=10&query=name%3Aadmin\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.roles.list(page=0, size=10, query=\"name:admin\")"
  /v1/roles/{id}:
    get:
      tags:
      - role
      summary: Get Role by Id
      description: Return the role by Id.
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
        description: Role ID
        example: 8742a724-0a64-4b1f-92c9-cbcce0c15a92
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Role identifier
                  name:
                    type: string
                    description: Role name
                  description:
                    type: string
                    description: Role description
                  roleType:
                    type: string
                    enum:
                    - ADMIN
                    - DEFAULT
                    - OTHERS
                    description: Type of role
                  cascadeOrganizationPermission:
                    type: boolean
                    description: Whether organization permissions cascade to child organizations
                  authorities:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Authority identifier
                        code:
                          type: string
                          description: Authority code
                        name:
                          type: string
                          description: Authority name
                        description:
                          type: string
                          description: Authority description
                        moduleName:
                          type: string
                          description: Module name this authority belongs to
                    description: List of authorities assigned to this role
              example:
                id: 8742a724-0a64-4b1f-92c9-cbcce0c15a92
                name: System Admin
                description: Full access to system
                roleType: ADMIN
                cascadeOrganizationPermission: true
                authorities:
                - id: 575edda4-dc6d-4d66-9f5d-24a34dbe9d41
                  code: AUTH_USER_MANAGEMENT
                  name: User Management
                  description: Manage Users
                  moduleName: System
                - id: 1ed85f62-9c57-44f2-a78e-8ae41e5c6416
                  code: AUTH_ROLE_MANAGEMENT
                  name: Role Management
                  description: Manage Roles
                  moduleName: System
        '400':
          description: Bad Request
        '404':
          description: Role not found
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/v1/roles/8742a724-0a64-4b1f-92c9-cbcce0c15a92\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.roles.retrieve(id=\"8742a724-0a64-4b1f-92c9-cbcce0c15a92\")"
  /v1/roles/{id}/authorities:
    get:
      tags:
      - role
      summary: Get Role Authorities
      description: Return the role authorities.
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
        description: Role ID
        example: 8742a724-0a64-4b1f-92c9-cbcce0c15a92
      - in: query
        name: page
        description: Page number
        schema:
          type: integer
          minimum: 0
          default: 0
        example: 0
      - in: query
        name: size
        description: Page size
        schema:
          type: integer
          minimum: 1
          default: 10
          maximum: 50
        example: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - type: object
                  required:
                  - totalPages
                  - last
                  - totalElements
                  - numberOfElements
                  - first
                  - size
                  - number
                  properties:
                    totalPages:
                      type: integer
                      description: Total number of pages available
                    last:
                      type: boolean
                      description: Indicates whether this is the last page
                    totalElements:
                      type: integer
                      description: Total number of elements across all pages
                    numberOfElements:
                      type: integer
                      description: Number of elements in the current page
                    sort:
                      allOf:
                      - type: array
                        items:
                          type: object
                          required:
                          - direction
                          - property
                          properties:
                            direction:
                              type: string
                            property:
                              type: string
                            ignoreCase:
                              type: boolean
                            nullHandling:
                              type: string
                            ascending:
                              type: boolean
                            descending:
                              type: boolean
                      description: Sorting information for the page. Will be present when the request includes a sort parameter.
                    first:
                      type: boolean
                      description: Indicates whether this is the first page
                    size:
                      type: integer
                      description: Size of the page (number of elements per page)
                    number:
                      type: integer
                      description: Current page number (zero-indexed)
                - type: object
                  properties:
                    content:
                      type: array
                      items:
                        type: object
                        properties:
                          code:
                            type: string
                            description: Authority code
                      description: List of role authorities
              example:
                content:
                - code: AUTH_USER_MANAGEMENT
                - code: AUTH_ROLE_MANAGEMENT
                pageable:
                  sort:
                  - direction: ASC
                    property: code
                  offset: 0
                  pageNumber: 0
                  pageSize: 10
                  paged: true
                  unpaged: false
                totalElements: 2
                totalPages: 1
                last: true
                size: 10
                number: 0
                sort:
                - direction: ASC
                  property: code
                numberOfElements: 2
                first: true
        '400':
          description: Bad Request
        '404':
          description: Role not found
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/v1/roles/8742a724-0a64-4b1f-92c9-cbcce0c15a92/authorities?page=0&size=10\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.roles.authorities.list(\n    id=\"8742a724-0a64-4b1f-92c9-cbcce0c15a92\", page=0, size=10\n)"
  /v1/roles/{id}/permissions:
    get:
      tags:
      - role
      summary: Get Role Permissions
      description: Return the role permissions.
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
        description: Role ID
        example: 8742a724-0a64-4b1f-92c9-cbcce0c15a92
      - in: query
        name: expanded
        required: false
        schema:
          type: boolean
          default: false
        example: false
        description: |
          Controls how permissions are returned:
          - `false` (default): Returns raw permissions as stored in the database without any transformation.
            Permissions with dataId="ALL" will be returned as-is.
          - `true`: Returns expanded permissions where:
            1. Roles with ADMIN type will get all available dataId permissions
            2. Any permission with dataId="ALL" will be expanded to show all available dataId
               permissions for the same dataType

          Raw permissions show the exact database records, while expanded permissions show the effective
          access granted to the role after applying permission inheritance rules.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  content:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Permission identifier
                        dataId:
                          type: string
                          description: Data identifier (e.g., organization ID, location ID, or "ALL")
                        dataType:
                          type: string
                          enum:
                          - JOB_LEVEL
                          - ORGANIZATION
                          - LOCATION
                          - OPERATIONAL_GROUP
                          description: Type of data this permission applies to
                        role:
                          allOf:
                          - type: object
                            properties:
                              id:
                                type: string
                                description: Role ID
                              name:
                                type: string
                                description: Role Name
                          description: Role associated with this permission
              example:
                content:
                - id: 575edda4-dc6d-4d66-9f5d-24a34dbe9d41
                  dataId: 2f9b85af-4465-433b-bb30-c3702ba8f748
                  dataType: ORGANIZATION
                  role:
                    id: 8742a724-0a64-4b1f-92c9-cbcce0c15a92
                    name: System Admin
                - id: 1ed85f62-9c57-44f2-a78e-8ae41e5c6416
                  dataId: e3d5c440-cb02-4f47-a4ce-9c8e3d7e682b
                  dataType: LOCATION
                  role:
                    id: 8742a724-0a64-4b1f-92c9-cbcce0c15a92
                    name: System Admin
        '400':
          description: Bad Request
        '404':
          description: Role not found
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/v1/roles/8742a724-0a64-4b1f-92c9-cbcce0c15a92/permissions?expanded=False\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.roles.permissions.list(\n    id=\"8742a724-0a64-4b1f-92c9-cbcce0c15a92\", expanded=False\n)"
  /v1/users/me:
    get:
      tags:
      - user
      summary: Get Current User
      description: Return the current user.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  username:
                    type: string
                  email:
                    type: string
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  roles:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        active:
                          type: boolean
              example:
                id: b8c68ee3-1b65-45e5-ab23-d90fd6795d9a
                username: username
                email: username@domain.com
                employee:
                  id: 9365df57-b0ac-461c-9ae2-24f561807682
                  name: Employee Name
                roles:
                - id: ad940279-539e-44fb-ab07-474e76a7a04f
                  name: Role Name
                  active: true
        '400':
          description: Bad Request
      x-codeSamples:
      - lang: shell
        label: cURL
        source: "curl -X GET \\\n  \"https://api.catapa.com/v1/users/me\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Tenant: your-tenant-id\""
      - lang: Python
        label: Python SDK
        source: "from catapa import Catapa\n\nclient = Catapa(tenant=\"zfrl\", client_id=\"demo\", client_secret=\"demo-secret\")\n\nresponse = client.users.me.list()"
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Bearer authentication header of the form `Bearer <token>`.
  parameters:
    tenant-header:
      in: header
      name: Tenant
      schema:
        type: string
      required: true
      description: The tenant identifier.
      example: default-tenant
    page:
      in: query
      name: page
      description: Page number
      schema:
        type: integer
        minimum: 0
        default: 0
      example: 0
    size:
      in: query
      name: size
      description: Page size
      schema:
        type: integer
        minimum: 1
        default: 10
        maximum: 50
      example: 10
  schemas:
    SortProperty:
      type: object
      required:
      - direction
      - property
      properties:
        direction:
          type: string
        property:
          type: string
        ignoreCase:
          type: boolean
        nullHandling:
          type: string
        ascending:
          type: boolean
        descending:
          type: boolean
    Sort:
      type: array
      items:
        type: object
        required:
        - direction
        - property
        properties:
          direction:
            type: string
          property:
            type: string
          ignoreCase:
            type: boolean
          nullHandling:
            type: string
          ascending:
            type: boolean
          descending:
            type: boolean
    Page:
      type: object
      required:
      - totalPages
      - last
      - totalElements
      - numberOfElements
      - first
      - size
      - number
      properties:
        totalPages:
          type: integer
          description: Total number of pages available
        last:
          type: boolean
          description: Indicates whether this is the last page
        totalElements:
          type: integer
          description: Total number of elements across all pages
        numberOfElements:
          type: integer
          description: Number of elements in the current page
        sort:
          allOf:
          - type: array
            items:
              type: object
              required:
              - direction
              - property
              properties:
                direction:
                  type: string
                property:
                  type: string
                ignoreCase:
                  type: boolean
                nullHandling:
                  type: string
                ascending:
                  type: boolean
                descending:
                  type: boolean
          description: Sorting information for the page. Will be present when the request includes a sort parameter.
        first:
          type: boolean
          description: Indicates whether this is the first page
        size:
          type: integer
          description: Size of the page (number of elements per page)
        number:
          type: integer
          description: Current page number (zero-indexed)
    EmploymentStatusTypeResponse:
      type: object
      properties:
        id:
          type: string
        defaultData:
          type: boolean
        employmentStatusNumberType:
          type: string
          enum:
          - PKWT_NUMBER
          - EMPLOYMENT_STATUS_CHANGE_NUMBER
        name:
          type: string
    EmploymentTypeResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        employmentGroupCode:
          type: string
        monthDuration:
          type: integer
        permanent:
          type: boolean
        effectiveDate:
          type: string
          format: date
        endDate:
          type: string
          format: date
    OrganizationHierarchyResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        color:
          type: string
        level:
          type: integer
    IdCodeNameResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
    OrganizationParentResponse:
      type: object
      deprecated: true
      description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        type:
          type: string
          enum:
          - STRUCTURAL
          - FUNCTIONAL
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        endDate:
          type: string
          format: date
          description: YYYY-MM-DD
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
        organizationHierarchy:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            color:
              type: string
            level:
              type: integer
        organizationGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        organizationParent:
          type: object
          description: Deprecated. Always null.
          deprecated: true
        company:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    OrganizationResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        type:
          type: string
          enum:
          - STRUCTURAL
          - FUNCTIONAL
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        endDate:
          type: string
          format: date
          description: YYYY-MM-DD
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
        organizationHierarchy:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            color:
              type: string
            level:
              type: integer
        organizationGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        organizationParent:
          type: object
          deprecated: true
          description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            type:
              type: string
              enum:
              - STRUCTURAL
              - FUNCTIONAL
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD
            createdBy:
              type: string
            createdDate:
              type: number
            updatedBy:
              type: string
            updatedDate:
              type: number
            organizationHierarchy:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                color:
                  type: string
                level:
                  type: integer
            organizationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            organizationParent:
              type: object
              description: Deprecated. Always null.
              deprecated: true
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        company:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    PositionResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            type:
              type: string
              enum:
              - STRUCTURAL
              - FUNCTIONAL
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD
            createdBy:
              type: string
            createdDate:
              type: number
            updatedBy:
              type: string
            updatedDate:
              type: number
            organizationHierarchy:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                color:
                  type: string
                level:
                  type: integer
            organizationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            organizationParent:
              type: object
              deprecated: true
              description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    color:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organizationParent:
                  type: object
                  description: Deprecated. Always null.
                  deprecated: true
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        assigned:
          type: boolean
        effectiveDate:
          type: string
        endDate:
          type: string
        maxEmployee:
          type: integer
    JobLevelResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        jobPosition:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        level:
          type: number
        effectiveDate:
          type: string
          format: date
        endDate:
          type: string
          format: date
    JobTitleResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        code:
          type: string
        effectiveDate:
          type: string
          format: date
        endDate:
          type: string
          format: date
        minJobLevel:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            jobPosition:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            level:
              type: number
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        maxJobLevel:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            jobPosition:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            level:
              type: number
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
    CountryResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        callingCode:
          type: string
        taxTreaty:
          type: boolean
    StateResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        country:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            callingCode:
              type: string
            taxTreaty:
              type: boolean
    CityResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        state:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            country:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                callingCode:
                  type: string
                taxTreaty:
                  type: boolean
    CompanyLiteResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        code:
          type: string
        name:
          type: string
    LocationResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        locationGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        city:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            state:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                country:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    callingCode:
                      type: string
                    taxTreaty:
                      type: boolean
        latitude:
          type: number
          format: float
        longitude:
          type: number
          format: float
        headquarter:
          type: boolean
        address:
          type: string
        phone:
          type: string
        zipCode:
          type: string
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD, effective date of the location
        endDate:
          type: string
          format: date
          description: YYYY-MM-DD, end date of the location
        company:
          type: object
          properties:
            id:
              type: string
              format: uuid
            code:
              type: string
            name:
              type: string
    CostCenterCompanyResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        code:
          type: string
        name:
          type: string
    CostCenterResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        code:
          type: string
        name:
          type: string
        description:
          type: string
        company:
          type: object
          properties:
            id:
              type: string
              format: uuid
            code:
              type: string
            name:
              type: string
    EmployeeSimpleResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
        name:
          type: string
    SubLocationLocationResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        company:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        endDate:
          type: string
          format: date
          description: YYYY-MM-DD or null when ongoing
    SubLocationResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD or null when ongoing
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        endDate:
          type: string
          format: date
          description: YYYY-MM-DD or null when ongoing
    AdditionalAssignmentResponse:
      type: object
      properties:
        id:
          type: string
        employmentStatusType:
          type: object
          properties:
            id:
              type: string
            defaultData:
              type: boolean
            employmentStatusNumberType:
              type: string
              enum:
              - PKWT_NUMBER
              - EMPLOYMENT_STATUS_CHANGE_NUMBER
            name:
              type: string
        employmentType:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            employmentGroupCode:
              type: string
            monthDuration:
              type: integer
            permanent:
              type: boolean
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        effectiveDate:
          type: string
        endDate:
          type: string
        signDate:
          type: string
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            type:
              type: string
              enum:
              - STRUCTURAL
              - FUNCTIONAL
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD
            createdBy:
              type: string
            createdDate:
              type: number
            updatedBy:
              type: string
            updatedDate:
              type: number
            organizationHierarchy:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                color:
                  type: string
                level:
                  type: integer
            organizationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            organizationParent:
              type: object
              deprecated: true
              description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    color:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organizationParent:
                  type: object
                  description: Deprecated. Always null.
                  deprecated: true
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        position:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            organization:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    color:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organizationParent:
                  type: object
                  deprecated: true
                  description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    type:
                      type: string
                      enum:
                      - STRUCTURAL
                      - FUNCTIONAL
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    createdBy:
                      type: string
                    createdDate:
                      type: number
                    updatedBy:
                      type: string
                    updatedDate:
                      type: number
                    organizationHierarchy:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        color:
                          type: string
                        level:
                          type: integer
                    organizationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    organizationParent:
                      type: object
                      description: Deprecated. Always null.
                      deprecated: true
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            assigned:
              type: boolean
            effectiveDate:
              type: string
            endDate:
              type: string
            maxEmployee:
              type: integer
        jobLevel:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            jobPosition:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            level:
              type: number
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        jobTitle:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
            minJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
            maxJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
              format: float
            longitude:
              type: number
              format: float
            headquarter:
              type: boolean
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD, effective date of the location
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD, end date of the location
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        costCenter:
          type: object
          properties:
            id:
              type: string
              format: uuid
            code:
              type: string
            name:
              type: string
            description:
              type: string
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        subLocation:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            location:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD or null when ongoing
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD or null when ongoing
        operationalGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    AdditionalAssignmentApprovalResponse:
      type: object
      properties:
        id:
          type: string
        action:
          type: string
          enum:
          - NONE
          - ADD
          - EDIT
          - DELETE
          - DELETE_ALL
        approvalStatus:
          type: string
          enum:
          - APPROVED
          - REJECTED
          - OPEN
          - WAITING_FOR_APPROVAL
        rejectionReason:
          type: string
        employmentStatusType:
          type: object
          properties:
            id:
              type: string
            defaultData:
              type: boolean
            employmentStatusNumberType:
              type: string
              enum:
              - PKWT_NUMBER
              - EMPLOYMENT_STATUS_CHANGE_NUMBER
            name:
              type: string
        employmentType:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            employmentGroupCode:
              type: string
            monthDuration:
              type: integer
            permanent:
              type: boolean
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        effectiveDate:
          type: string
        endDate:
          type: string
        signDate:
          type: string
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            type:
              type: string
              enum:
              - STRUCTURAL
              - FUNCTIONAL
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD
            createdBy:
              type: string
            createdDate:
              type: number
            updatedBy:
              type: string
            updatedDate:
              type: number
            organizationHierarchy:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                color:
                  type: string
                level:
                  type: integer
            organizationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            organizationParent:
              type: object
              deprecated: true
              description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    color:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organizationParent:
                  type: object
                  description: Deprecated. Always null.
                  deprecated: true
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        position:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            organization:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    color:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organizationParent:
                  type: object
                  deprecated: true
                  description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    type:
                      type: string
                      enum:
                      - STRUCTURAL
                      - FUNCTIONAL
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    createdBy:
                      type: string
                    createdDate:
                      type: number
                    updatedBy:
                      type: string
                    updatedDate:
                      type: number
                    organizationHierarchy:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        color:
                          type: string
                        level:
                          type: integer
                    organizationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    organizationParent:
                      type: object
                      description: Deprecated. Always null.
                      deprecated: true
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            assigned:
              type: boolean
            effectiveDate:
              type: string
            endDate:
              type: string
            maxEmployee:
              type: integer
        jobLevel:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            jobPosition:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            level:
              type: number
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        jobTitle:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
            minJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
            maxJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
              format: float
            longitude:
              type: number
              format: float
            headquarter:
              type: boolean
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD, effective date of the location
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD, end date of the location
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        costCenter:
          type: object
          properties:
            id:
              type: string
              format: uuid
            code:
              type: string
            name:
              type: string
            description:
              type: string
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        subLocation:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            location:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD or null when ongoing
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD or null when ongoing
        operationalGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        additionalAssignment:
          type: object
          properties:
            id:
              type: string
            employmentStatusType:
              type: object
              properties:
                id:
                  type: string
                defaultData:
                  type: boolean
                employmentStatusNumberType:
                  type: string
                  enum:
                  - PKWT_NUMBER
                  - EMPLOYMENT_STATUS_CHANGE_NUMBER
                name:
                  type: string
            employmentType:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                employmentGroupCode:
                  type: string
                monthDuration:
                  type: integer
                permanent:
                  type: boolean
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
            effectiveDate:
              type: string
            endDate:
              type: string
            signDate:
              type: string
            createdBy:
              type: string
            createdDate:
              type: number
            updatedBy:
              type: string
            updatedDate:
              type: number
            organization:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    color:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organizationParent:
                  type: object
                  deprecated: true
                  description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    type:
                      type: string
                      enum:
                      - STRUCTURAL
                      - FUNCTIONAL
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    createdBy:
                      type: string
                    createdDate:
                      type: number
                    updatedBy:
                      type: string
                    updatedDate:
                      type: number
                    organizationHierarchy:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        color:
                          type: string
                        level:
                          type: integer
                    organizationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    organizationParent:
                      type: object
                      description: Deprecated. Always null.
                      deprecated: true
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            position:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                organization:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    type:
                      type: string
                      enum:
                      - STRUCTURAL
                      - FUNCTIONAL
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    createdBy:
                      type: string
                    createdDate:
                      type: number
                    updatedBy:
                      type: string
                    updatedDate:
                      type: number
                    organizationHierarchy:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        color:
                          type: string
                        level:
                          type: integer
                    organizationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    organizationParent:
                      type: object
                      deprecated: true
                      description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        type:
                          type: string
                          enum:
                          - STRUCTURAL
                          - FUNCTIONAL
                        effectiveDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        endDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        createdBy:
                          type: string
                        createdDate:
                          type: number
                        updatedBy:
                          type: string
                        updatedDate:
                          type: number
                        organizationHierarchy:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            color:
                              type: string
                            level:
                              type: integer
                        organizationGroup:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        organizationParent:
                          type: object
                          description: Deprecated. Always null.
                          deprecated: true
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                assigned:
                  type: boolean
                effectiveDate:
                  type: string
                endDate:
                  type: string
                maxEmployee:
                  type: integer
            jobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
            jobTitle:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
                minJobLevel:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    jobPosition:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    level:
                      type: number
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                maxJobLevel:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    jobPosition:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    level:
                      type: number
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
            location:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                locationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                city:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    state:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        country:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            callingCode:
                              type: string
                            taxTreaty:
                              type: boolean
                latitude:
                  type: number
                  format: float
                longitude:
                  type: number
                  format: float
                headquarter:
                  type: boolean
                address:
                  type: string
                phone:
                  type: string
                zipCode:
                  type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD, effective date of the location
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD, end date of the location
                company:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    code:
                      type: string
                    name:
                      type: string
            costCenter:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
                description:
                  type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    code:
                      type: string
                    name:
                      type: string
            employee:
              type: object
              properties:
                id:
                  type: string
                identificationNumber:
                  type: string
                name:
                  type: string
            subLocation:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                location:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD or null when ongoing
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD or null when ongoing
            operationalGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
    AdditionalAssignmentApprovalPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                action:
                  type: string
                  enum:
                  - NONE
                  - ADD
                  - EDIT
                  - DELETE
                  - DELETE_ALL
                approvalStatus:
                  type: string
                  enum:
                  - APPROVED
                  - REJECTED
                  - OPEN
                  - WAITING_FOR_APPROVAL
                rejectionReason:
                  type: string
                employmentStatusType:
                  type: object
                  properties:
                    id:
                      type: string
                    defaultData:
                      type: boolean
                    employmentStatusNumberType:
                      type: string
                      enum:
                      - PKWT_NUMBER
                      - EMPLOYMENT_STATUS_CHANGE_NUMBER
                    name:
                      type: string
                employmentType:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    employmentGroupCode:
                      type: string
                    monthDuration:
                      type: integer
                    permanent:
                      type: boolean
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                effectiveDate:
                  type: string
                endDate:
                  type: string
                signDate:
                  type: string
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organization:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    type:
                      type: string
                      enum:
                      - STRUCTURAL
                      - FUNCTIONAL
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    createdBy:
                      type: string
                    createdDate:
                      type: number
                    updatedBy:
                      type: string
                    updatedDate:
                      type: number
                    organizationHierarchy:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        color:
                          type: string
                        level:
                          type: integer
                    organizationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    organizationParent:
                      type: object
                      deprecated: true
                      description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        type:
                          type: string
                          enum:
                          - STRUCTURAL
                          - FUNCTIONAL
                        effectiveDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        endDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        createdBy:
                          type: string
                        createdDate:
                          type: number
                        updatedBy:
                          type: string
                        updatedDate:
                          type: number
                        organizationHierarchy:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            color:
                              type: string
                            level:
                              type: integer
                        organizationGroup:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        organizationParent:
                          type: object
                          description: Deprecated. Always null.
                          deprecated: true
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                position:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    organization:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        type:
                          type: string
                          enum:
                          - STRUCTURAL
                          - FUNCTIONAL
                        effectiveDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        endDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        createdBy:
                          type: string
                        createdDate:
                          type: number
                        updatedBy:
                          type: string
                        updatedDate:
                          type: number
                        organizationHierarchy:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            color:
                              type: string
                            level:
                              type: integer
                        organizationGroup:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        organizationParent:
                          type: object
                          deprecated: true
                          description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            type:
                              type: string
                              enum:
                              - STRUCTURAL
                              - FUNCTIONAL
                            effectiveDate:
                              type: string
                              format: date
                              description: YYYY-MM-DD
                            endDate:
                              type: string
                              format: date
                              description: YYYY-MM-DD
                            createdBy:
                              type: string
                            createdDate:
                              type: number
                            updatedBy:
                              type: string
                            updatedDate:
                              type: number
                            organizationHierarchy:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                color:
                                  type: string
                                level:
                                  type: integer
                            organizationGroup:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            organizationParent:
                              type: object
                              description: Deprecated. Always null.
                              deprecated: true
                            company:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                    assigned:
                      type: boolean
                    effectiveDate:
                      type: string
                    endDate:
                      type: string
                    maxEmployee:
                      type: integer
                jobLevel:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    jobPosition:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    level:
                      type: number
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                jobTitle:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                    minJobLevel:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        jobPosition:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        level:
                          type: number
                        effectiveDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                    maxJobLevel:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        jobPosition:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        level:
                          type: number
                        effectiveDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                location:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    locationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    city:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        state:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            country:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                callingCode:
                                  type: string
                                taxTreaty:
                                  type: boolean
                    latitude:
                      type: number
                      format: float
                    longitude:
                      type: number
                      format: float
                    headquarter:
                      type: boolean
                    address:
                      type: string
                    phone:
                      type: string
                    zipCode:
                      type: string
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD, effective date of the location
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD, end date of the location
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        code:
                          type: string
                        name:
                          type: string
                costCenter:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    code:
                      type: string
                    name:
                      type: string
                    description:
                      type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        code:
                          type: string
                        name:
                          type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                subLocation:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    location:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        effectiveDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        endDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD or null when ongoing
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD or null when ongoing
                operationalGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                additionalAssignment:
                  type: object
                  properties:
                    id:
                      type: string
                    employmentStatusType:
                      type: object
                      properties:
                        id:
                          type: string
                        defaultData:
                          type: boolean
                        employmentStatusNumberType:
                          type: string
                          enum:
                          - PKWT_NUMBER
                          - EMPLOYMENT_STATUS_CHANGE_NUMBER
                        name:
                          type: string
                    employmentType:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        employmentGroupCode:
                          type: string
                        monthDuration:
                          type: integer
                        permanent:
                          type: boolean
                        effectiveDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                    effectiveDate:
                      type: string
                    endDate:
                      type: string
                    signDate:
                      type: string
                    createdBy:
                      type: string
                    createdDate:
                      type: number
                    updatedBy:
                      type: string
                    updatedDate:
                      type: number
                    organization:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        type:
                          type: string
                          enum:
                          - STRUCTURAL
                          - FUNCTIONAL
                        effectiveDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        endDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        createdBy:
                          type: string
                        createdDate:
                          type: number
                        updatedBy:
                          type: string
                        updatedDate:
                          type: number
                        organizationHierarchy:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            color:
                              type: string
                            level:
                              type: integer
                        organizationGroup:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        organizationParent:
                          type: object
                          deprecated: true
                          description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            type:
                              type: string
                              enum:
                              - STRUCTURAL
                              - FUNCTIONAL
                            effectiveDate:
                              type: string
                              format: date
                              description: YYYY-MM-DD
                            endDate:
                              type: string
                              format: date
                              description: YYYY-MM-DD
                            createdBy:
                              type: string
                            createdDate:
                              type: number
                            updatedBy:
                              type: string
                            updatedDate:
                              type: number
                            organizationHierarchy:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                color:
                                  type: string
                                level:
                                  type: integer
                            organizationGroup:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            organizationParent:
                              type: object
                              description: Deprecated. Always null.
                              deprecated: true
                            company:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                    position:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        organization:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            type:
                              type: string
                              enum:
                              - STRUCTURAL
                              - FUNCTIONAL
                            effectiveDate:
                              type: string
                              format: date
                              description: YYYY-MM-DD
                            endDate:
                              type: string
                              format: date
                              description: YYYY-MM-DD
                            createdBy:
                              type: string
                            createdDate:
                              type: number
                            updatedBy:
                              type: string
                            updatedDate:
                              type: number
                            organizationHierarchy:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                color:
                                  type: string
                                level:
                                  type: integer
                            organizationGroup:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            organizationParent:
                              type: object
                              deprecated: true
                              description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                type:
                                  type: string
                                  enum:
                                  - STRUCTURAL
                                  - FUNCTIONAL
                                effectiveDate:
                                  type: string
                                  format: date
                                  description: YYYY-MM-DD
                                endDate:
                                  type: string
                                  format: date
                                  description: YYYY-MM-DD
                                createdBy:
                                  type: string
                                createdDate:
                                  type: number
                                updatedBy:
                                  type: string
                                updatedDate:
                                  type: number
                                organizationHierarchy:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    color:
                                      type: string
                                    level:
                                      type: integer
                                organizationGroup:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                organizationParent:
                                  type: object
                                  description: Deprecated. Always null.
                                  deprecated: true
                                company:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                            company:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                        assigned:
                          type: boolean
                        effectiveDate:
                          type: string
                        endDate:
                          type: string
                        maxEmployee:
                          type: integer
                    jobLevel:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        jobPosition:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        level:
                          type: number
                        effectiveDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                    jobTitle:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        code:
                          type: string
                        effectiveDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                        minJobLevel:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            jobPosition:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            level:
                              type: number
                            effectiveDate:
                              type: string
                              format: date
                            endDate:
                              type: string
                              format: date
                        maxJobLevel:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            jobPosition:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            level:
                              type: number
                            effectiveDate:
                              type: string
                              format: date
                            endDate:
                              type: string
                              format: date
                    location:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        locationGroup:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        city:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            state:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                country:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    callingCode:
                                      type: string
                                    taxTreaty:
                                      type: boolean
                        latitude:
                          type: number
                          format: float
                        longitude:
                          type: number
                          format: float
                        headquarter:
                          type: boolean
                        address:
                          type: string
                        phone:
                          type: string
                        zipCode:
                          type: string
                        effectiveDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD, effective date of the location
                        endDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD, end date of the location
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                            code:
                              type: string
                            name:
                              type: string
                    costCenter:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        code:
                          type: string
                        name:
                          type: string
                        description:
                          type: string
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                            code:
                              type: string
                            name:
                              type: string
                    employee:
                      type: object
                      properties:
                        id:
                          type: string
                        identificationNumber:
                          type: string
                        name:
                          type: string
                    subLocation:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        location:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            company:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            effectiveDate:
                              type: string
                              format: date
                              description: YYYY-MM-DD
                            endDate:
                              type: string
                              format: date
                              description: YYYY-MM-DD or null when ongoing
                        effectiveDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        endDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD or null when ongoing
                    operationalGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
    AdditionalIncomePaymentListItemResponse:
      type: object
      properties:
        employeeId:
          type: string
        paymentDate:
          type: string
    AdditionalIncomePaymentPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                employeeId:
                  type: string
                paymentDate:
                  type: string
    ChartTableRelationResponse:
      type: object
      properties:
        chartTableRelationId:
          type: string
        sequence:
          type: number
    AnalyticsColorSchemeDetailResponse:
      type: object
      properties:
        id:
          type: string
        hexColor:
          type: string
        sequence:
          type: number
    AnalyticsColorSchemeResponse:
      type: object
      properties:
        id:
          type: string
        colorSchemeDetails:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              hexColor:
                type: string
              sequence:
                type: number
    AnalyticsColumnResponse:
      type: object
      properties:
        id:
          type: string
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
        name:
          type: string
        type:
          type: string
    ChartFilterResponse:
      type: object
      properties:
        id:
          type: string
        chartFilterType:
          type: string
        column:
          type: object
          properties:
            id:
              type: string
            createdBy:
              type: string
            createdDate:
              type: number
            updatedBy:
              type: string
            updatedDate:
              type: number
            name:
              type: string
            type:
              type: string
        values:
          type: array
          items:
            type: string
        startDate:
          type: string
        endDate:
          type: string
        timeFrame:
          type: string
        timeUnit:
          type: string
        duration:
          type: number
    AnalyticsChartResponse:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        size:
          type: number
        options:
          type: string
        chartType:
          type: string
        aggregationType:
          type: string
        tableId:
          type: string
        yaxisTitle:
          type: string
        ycolumnId:
          type: string
        ychartTableRelations:
          type: array
          items:
            type: object
            properties:
              chartTableRelationId:
                type: string
              sequence:
                type: number
        xaxisTitle:
          type: string
        xcolumnId:
          type: string
        xchartTableRelations:
          type: array
          items:
            type: object
            properties:
              chartTableRelationId:
                type: string
              sequence:
                type: number
        seriesAxisTitle:
          type: string
        seriesColumnId:
          type: string
        seriesChartTableRelations:
          type: array
          items:
            type: object
            properties:
              chartTableRelationId:
                type: string
              sequence:
                type: number
        colorScheme:
          type: object
          properties:
            id:
              type: string
            colorSchemeDetails:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  hexColor:
                    type: string
                  sequence:
                    type: number
        dataTrusteeEnabled:
          type: boolean
        chartFilters:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              chartFilterType:
                type: string
              column:
                type: object
                properties:
                  id:
                    type: string
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
                  name:
                    type: string
                  type:
                    type: string
              values:
                type: array
                items:
                  type: string
              startDate:
                type: string
              endDate:
                type: string
              timeFrame:
                type: string
              timeUnit:
                type: string
              duration:
                type: number
        maxItems:
          type: number
        sortType:
          type: string
    AnalyticsChartPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                title:
                  type: string
                size:
                  type: number
                options:
                  type: string
                chartType:
                  type: string
                aggregationType:
                  type: string
                tableId:
                  type: string
                yaxisTitle:
                  type: string
                ycolumnId:
                  type: string
                ychartTableRelations:
                  type: array
                  items:
                    type: object
                    properties:
                      chartTableRelationId:
                        type: string
                      sequence:
                        type: number
                xaxisTitle:
                  type: string
                xcolumnId:
                  type: string
                xchartTableRelations:
                  type: array
                  items:
                    type: object
                    properties:
                      chartTableRelationId:
                        type: string
                      sequence:
                        type: number
                seriesAxisTitle:
                  type: string
                seriesColumnId:
                  type: string
                seriesChartTableRelations:
                  type: array
                  items:
                    type: object
                    properties:
                      chartTableRelationId:
                        type: string
                      sequence:
                        type: number
                colorScheme:
                  type: object
                  properties:
                    id:
                      type: string
                    colorSchemeDetails:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          hexColor:
                            type: string
                          sequence:
                            type: number
                dataTrusteeEnabled:
                  type: boolean
                chartFilters:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      chartFilterType:
                        type: string
                      column:
                        type: object
                        properties:
                          id:
                            type: string
                          createdBy:
                            type: string
                          createdDate:
                            type: number
                          updatedBy:
                            type: string
                          updatedDate:
                            type: number
                          name:
                            type: string
                          type:
                            type: string
                      values:
                        type: array
                        items:
                          type: string
                      startDate:
                        type: string
                      endDate:
                        type: string
                      timeFrame:
                        type: string
                      timeUnit:
                        type: string
                      duration:
                        type: number
                maxItems:
                  type: number
                sortType:
                  type: string
    ChartTableRelationRequest:
      type: object
      properties:
        chartTableRelationId:
          type: string
        sequence:
          type: number
    IdRequest:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier
      required:
      - id
    ChartValueCollectionFilterRequest:
      type: object
      properties:
        value:
          type: string
    ChartFilterRequest:
      type: object
      properties:
        columnId:
          type: string
        chartFilterType:
          type: string
        chartValueCollectionFilters:
          type: array
          items:
            type: object
            properties:
              value:
                type: string
        startDate:
          type: string
        endDate:
          type: string
        timeFrame:
          type: string
        timeUnit:
          type: string
        duration:
          type: number
    AnalyticsChartRequest:
      type: object
      properties:
        title:
          type: string
        size:
          type: number
        options:
          type: string
        chartType:
          type: string
        aggregationType:
          type: string
        tableId:
          type: string
        yaxisTitle:
          type: string
        ycolumnId:
          type: string
        ychartTableRelations:
          type: array
          items:
            type: object
            properties:
              chartTableRelationId:
                type: string
              sequence:
                type: number
        xaxisTitle:
          type: string
        xcolumnId:
          type: string
        xchartTableRelations:
          type: array
          items:
            type: object
            properties:
              chartTableRelationId:
                type: string
              sequence:
                type: number
        seriesAxisTitle:
          type: string
        seriesColumnId:
          type: string
        seriesChartTableRelations:
          type: array
          items:
            type: object
            properties:
              chartTableRelationId:
                type: string
              sequence:
                type: number
        colorScheme:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        dataTrusteeEnabled:
          type: boolean
        chartFilters:
          type: array
          items:
            type: object
            properties:
              columnId:
                type: string
              chartFilterType:
                type: string
              chartValueCollectionFilters:
                type: array
                items:
                  type: object
                  properties:
                    value:
                      type: string
              startDate:
                type: string
              endDate:
                type: string
              timeFrame:
                type: string
              timeUnit:
                type: string
              duration:
                type: number
        maxItems:
          type: number
        sortType:
          type: string
      required:
      - title
      - size
      - chartType
      - aggregationType
      - tableId
      - yaxisTitle
      - ycolumnId
      - ychartTableRelations
      - xaxisTitle
      - xcolumnId
      - xchartTableRelations
      - colorScheme
      - maxItems
      - sortType
    PointOfHireResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        locationGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        city:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            state:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                country:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    callingCode:
                      type: string
                    taxTreaty:
                      type: boolean
        latitude:
          type: number
        longitude:
          type: number
        address:
          type: string
        phone:
          type: string
        zipCode:
          type: string
        headquarter:
          type: boolean
        company:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    PhotoResponse:
      type: object
      properties:
        url:
          type: string
    EmployeeManagerResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
        name:
          type: string
        joinDate:
          type: string
          format: date
          description: YYYY-MM-DD
        startDate:
          type: string
          format: date
          description: YYYY-MM-DD
        active:
          type: boolean
        pointOfHire:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
            longitude:
              type: number
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            headquarter:
              type: boolean
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        photo:
          type: object
          properties:
            url:
              type: string
    EmployeeFullResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
        name:
          type: string
        joinDate:
          type: string
          format: date
          description: YYYY-MM-DD
        startDate:
          type: string
          format: date
          description: YYYY-MM-DD
        active:
          type: boolean
        pointOfHire:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
            longitude:
              type: number
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            headquarter:
              type: boolean
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        photo:
          type: object
          properties:
            url:
              type: string
        manager:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
            joinDate:
              type: string
              format: date
              description: YYYY-MM-DD
            startDate:
              type: string
              format: date
              description: YYYY-MM-DD
            active:
              type: boolean
            pointOfHire:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                locationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                city:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    state:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        country:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            callingCode:
                              type: string
                            taxTreaty:
                              type: boolean
                latitude:
                  type: number
                longitude:
                  type: number
                address:
                  type: string
                phone:
                  type: string
                zipCode:
                  type: string
                headquarter:
                  type: boolean
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            photo:
              type: object
              properties:
                url:
                  type: string
    UserResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the user
        username:
          type: string
          description: Username of the user
        email:
          type: string
          description: Email address of the user
        employee:
          allOf:
          - type: object
            properties:
              id:
                type: string
              identificationNumber:
                type: string
              name:
                type: string
              joinDate:
                type: string
                format: date
                description: YYYY-MM-DD
              startDate:
                type: string
                format: date
                description: YYYY-MM-DD
              active:
                type: boolean
              pointOfHire:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  locationGroup:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  city:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      state:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          country:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              callingCode:
                                type: string
                              taxTreaty:
                                type: boolean
                  latitude:
                    type: number
                  longitude:
                    type: number
                  address:
                    type: string
                  phone:
                    type: string
                  zipCode:
                    type: string
                  headquarter:
                    type: boolean
                  company:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
              photo:
                type: object
                properties:
                  url:
                    type: string
              manager:
                type: object
                properties:
                  id:
                    type: string
                  identificationNumber:
                    type: string
                  name:
                    type: string
                  joinDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  startDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  active:
                    type: boolean
                  pointOfHire:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                      locationGroup:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      city:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          state:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              country:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  callingCode:
                                    type: string
                                  taxTreaty:
                                    type: boolean
                      latitude:
                        type: number
                      longitude:
                        type: number
                      address:
                        type: string
                      phone:
                        type: string
                      zipCode:
                        type: string
                      headquarter:
                        type: boolean
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                  photo:
                    type: object
                    properties:
                      url:
                        type: string
          description: Employee information associated with the user
    UserPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier of the user
                username:
                  type: string
                  description: Username of the user
                email:
                  type: string
                  description: Email address of the user
                employee:
                  allOf:
                  - type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      joinDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      startDate:
                        type: string
                        format: date
                        description: YYYY-MM-DD
                      active:
                        type: boolean
                      pointOfHire:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          locationGroup:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          city:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              state:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  country:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      callingCode:
                                        type: string
                                      taxTreaty:
                                        type: boolean
                          latitude:
                            type: number
                          longitude:
                            type: number
                          address:
                            type: string
                          phone:
                            type: string
                          zipCode:
                            type: string
                          headquarter:
                            type: boolean
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                      photo:
                        type: object
                        properties:
                          url:
                            type: string
                      manager:
                        type: object
                        properties:
                          id:
                            type: string
                          identificationNumber:
                            type: string
                          name:
                            type: string
                          joinDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          startDate:
                            type: string
                            format: date
                            description: YYYY-MM-DD
                          active:
                            type: boolean
                          pointOfHire:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                              locationGroup:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              city:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                                  state:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                      country:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                          callingCode:
                                            type: string
                                          taxTreaty:
                                            type: boolean
                              latitude:
                                type: number
                              longitude:
                                type: number
                              address:
                                type: string
                              phone:
                                type: string
                              zipCode:
                                type: string
                              headquarter:
                                type: boolean
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                          photo:
                            type: object
                            properties:
                              url:
                                type: string
                  description: Employee information associated with the user
            description: List of users
    AnalyticsChartDataSeriesResponse:
      type: object
      properties:
        name:
          type: string
          description: Series name
        data:
          type: array
          items:
            type: number
          description: Series data points
    AnalyticsChartDataResponse:
      type: object
      properties:
        title:
          type: string
          description: Title of the analytics chart
        size:
          type: number
          description: Size of the chart
        options:
          type: string
          description: Additional chart options
        chartType:
          type: string
          description: Type of the chart (e.g., BAR_VERTICAL_GROUPED_CHART)
        yaxisTitle:
          type: string
          description: Title for Y-axis
        ycolumnType:
          type: string
          description: Data type of Y-axis column
        xaxisTitle:
          type: string
          description: Title for X-axis
        xcolumnType:
          type: string
          description: Data type of X-axis column
        seriesAxisTitle:
          type: string
          description: Title for series axis
        seriesColumnType:
          type: string
          description: Data type of series column
        categories:
          type: array
          items:
            type: string
          description: Chart categories
        series:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: Series name
              data:
                type: array
                items:
                  type: number
                description: Series data points
          description: Chart series data
        colorScheme:
          type: object
          properties:
            id:
              type: string
            colorSchemeDetails:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  hexColor:
                    type: string
                  sequence:
                    type: number
        chartFilters:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              chartFilterType:
                type: string
              column:
                type: object
                properties:
                  id:
                    type: string
                  createdBy:
                    type: string
                  createdDate:
                    type: number
                  updatedBy:
                    type: string
                  updatedDate:
                    type: number
                  name:
                    type: string
                  type:
                    type: string
              values:
                type: array
                items:
                  type: string
              startDate:
                type: string
              endDate:
                type: string
              timeFrame:
                type: string
              timeUnit:
                type: string
              duration:
                type: number
          description: Chart filter configurations
    WidgetContentResponse:
      type: object
      properties:
        id:
          type: string
          description: Content identifier
        title:
          type: string
          description: Content title
        size:
          type: number
          description: Content size
    WidgetResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the widget
        position:
          type: number
          description: Position of the widget in the layout
        widgetType:
          type: string
          description: Type of the widget
        content:
          allOf:
          - type: object
            properties:
              id:
                type: string
                description: Content identifier
              title:
                type: string
                description: Content title
              size:
                type: number
                description: Content size
          description: Widget content details
    WidgetPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the widget
                position:
                  type: number
                  description: Position of the widget in the layout
                widgetType:
                  type: string
                  description: Type of the widget
                content:
                  allOf:
                  - type: object
                    properties:
                      id:
                        type: string
                        description: Content identifier
                      title:
                        type: string
                        description: Content title
                      size:
                        type: number
                        description: Content size
                  description: Widget content details
            description: List of widgets
    BankResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
        code:
          type: string
          example: '014'
        name:
          type: string
          example: BCA
        llg:
          type: string
          example: '146789'
    BankPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                code:
                  type: string
                  example: '014'
                name:
                  type: string
                  example: BCA
                llg:
                  type: string
                  example: '146789'
    BankBranchResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
        name:
          type: string
          example: BCA Wisma Asia
        code:
          type: string
          example: BCA01
        address:
          type: string
          example: BCA01
        bank:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
            code:
              type: string
              example: '014'
            name:
              type: string
              example: BCA
            llg:
              type: string
              example: '146789'
    BankBranchPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                name:
                  type: string
                  example: BCA Wisma Asia
                code:
                  type: string
                  example: BCA01
                address:
                  type: string
                  example: BCA01
                bank:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code:
                      type: string
                      example: '014'
                    name:
                      type: string
                      example: BCA
                    llg:
                      type: string
                      example: '146789'
    EmployeeResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
        name:
          type: string
        active:
          type: boolean
    CurrencySimpleResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: d1ea18d8-a691-11e6-80f5-76304dec7066
        code:
          type: string
          example: IDR
        name:
          type: string
          example: Indonesian Rupiah
        baseCurrency:
          type: boolean
          example: true
    BankAccountResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
        bankId:
          type: string
        bank:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
            code:
              type: string
              example: '014'
            name:
              type: string
              example: BCA
            llg:
              type: string
              example: '146789'
        bankBranchId:
          type: string
        bankBranch:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
            name:
              type: string
              example: BCA Wisma Asia
            code:
              type: string
              example: BCA01
            address:
              type: string
              example: BCA01
            bank:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                code:
                  type: string
                  example: '014'
                name:
                  type: string
                  example: BCA
                llg:
                  type: string
                  example: '146789'
        accountNumber:
          type: string
        accountName:
          type: string
        beneficiaryId:
          type: string
        priority:
          type: number
        currency:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: d1ea18d8-a691-11e6-80f5-76304dec7066
            code:
              type: string
              example: IDR
            name:
              type: string
              example: Indonesian Rupiah
            baseCurrency:
              type: boolean
              example: true
        percentage:
          type: number
        amount:
          type: number
    IdResponse:
      type: object
      properties:
        id:
          type: string
    BankAccountConfigurationResponse:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
            active:
              type: boolean
        paymentMethod:
          type: string
          enum:
          - CASH
          - TRANSFER
          - NONE
        updatedDate:
          type: integer
          format: timestamp in milliseconds
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        distributionMethod:
          type: string
        defaultBankAccount:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
            bankId:
              type: string
            bank:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                code:
                  type: string
                  example: '014'
                name:
                  type: string
                  example: BCA
                llg:
                  type: string
                  example: '146789'
            bankBranchId:
              type: string
            bankBranch:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                name:
                  type: string
                  example: BCA Wisma Asia
                code:
                  type: string
                  example: BCA01
                address:
                  type: string
                  example: BCA01
                bank:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code:
                      type: string
                      example: '014'
                    name:
                      type: string
                      example: BCA
                    llg:
                      type: string
                      example: '146789'
            accountNumber:
              type: string
            accountName:
              type: string
            beneficiaryId:
              type: string
            priority:
              type: number
            currency:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: d1ea18d8-a691-11e6-80f5-76304dec7066
                code:
                  type: string
                  example: IDR
                name:
                  type: string
                  example: Indonesian Rupiah
                baseCurrency:
                  type: boolean
                  example: true
            percentage:
              type: number
            amount:
              type: number
        bankAccounts:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
              bankId:
                type: string
              bank:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                  code:
                    type: string
                    example: '014'
                  name:
                    type: string
                    example: BCA
                  llg:
                    type: string
                    example: '146789'
              bankBranchId:
                type: string
              bankBranch:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                  name:
                    type: string
                    example: BCA Wisma Asia
                  code:
                    type: string
                    example: BCA01
                  address:
                    type: string
                    example: BCA01
                  bank:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      code:
                        type: string
                        example: '014'
                      name:
                        type: string
                        example: BCA
                      llg:
                        type: string
                        example: '146789'
              accountNumber:
                type: string
              accountName:
                type: string
              beneficiaryId:
                type: string
              priority:
                type: number
              currency:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: d1ea18d8-a691-11e6-80f5-76304dec7066
                  code:
                    type: string
                    example: IDR
                  name:
                    type: string
                    example: Indonesian Rupiah
                  baseCurrency:
                    type: boolean
                    example: true
              percentage:
                type: number
              amount:
                type: number
        source:
          type: object
          properties:
            id:
              type: string
        approvalStatus:
          type: string
          enum:
          - APPROVED
          - REJECTED
          - OPEN
          - WAITING_FOR_APPROVAL
    BankAccountConfigurationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                    active:
                      type: boolean
                paymentMethod:
                  type: string
                  enum:
                  - CASH
                  - TRANSFER
                  - NONE
                updatedDate:
                  type: integer
                  format: timestamp in milliseconds
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                distributionMethod:
                  type: string
                defaultBankAccount:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    bankId:
                      type: string
                    bank:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                        code:
                          type: string
                          example: '014'
                        name:
                          type: string
                          example: BCA
                        llg:
                          type: string
                          example: '146789'
                    bankBranchId:
                      type: string
                    bankBranch:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                        name:
                          type: string
                          example: BCA Wisma Asia
                        code:
                          type: string
                          example: BCA01
                        address:
                          type: string
                          example: BCA01
                        bank:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                            code:
                              type: string
                              example: '014'
                            name:
                              type: string
                              example: BCA
                            llg:
                              type: string
                              example: '146789'
                    accountNumber:
                      type: string
                    accountName:
                      type: string
                    beneficiaryId:
                      type: string
                    priority:
                      type: number
                    currency:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: d1ea18d8-a691-11e6-80f5-76304dec7066
                        code:
                          type: string
                          example: IDR
                        name:
                          type: string
                          example: Indonesian Rupiah
                        baseCurrency:
                          type: boolean
                          example: true
                    percentage:
                      type: number
                    amount:
                      type: number
                bankAccounts:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                      bankId:
                        type: string
                      bank:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                          code:
                            type: string
                            example: '014'
                          name:
                            type: string
                            example: BCA
                          llg:
                            type: string
                            example: '146789'
                      bankBranchId:
                        type: string
                      bankBranch:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                          name:
                            type: string
                            example: BCA Wisma Asia
                          code:
                            type: string
                            example: BCA01
                          address:
                            type: string
                            example: BCA01
                          bank:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                              code:
                                type: string
                                example: '014'
                              name:
                                type: string
                                example: BCA
                              llg:
                                type: string
                                example: '146789'
                      accountNumber:
                        type: string
                      accountName:
                        type: string
                      beneficiaryId:
                        type: string
                      priority:
                        type: number
                      currency:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: d1ea18d8-a691-11e6-80f5-76304dec7066
                          code:
                            type: string
                            example: IDR
                          name:
                            type: string
                            example: Indonesian Rupiah
                          baseCurrency:
                            type: boolean
                            example: true
                      percentage:
                        type: number
                      amount:
                        type: number
                source:
                  type: object
                  properties:
                    id:
                      type: string
                approvalStatus:
                  type: string
                  enum:
                  - APPROVED
                  - REJECTED
                  - OPEN
                  - WAITING_FOR_APPROVAL
    BankAccountConfigurationRequest:
      type: object
      properties:
        id:
          type: string
        companyBankAccount:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        bankId:
          type: string
        bankBranchId:
          type: string
        accountNumber:
          type: string
          description: Numeric
        accountName:
          type: string
          minLength: 3
          maxLength: 255
        beneficiaryId:
          type: string
          maxLength: 255
        priority:
          type: number
          minimum: 1
        currency:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        percentage:
          type: number
          minimum: 0
          maximum: 100
        amount:
          type: number
          minimum: 0
      required:
      - bankId
      - accountNumber
      - accountName
      - priority
      - currency
      - percentage
      - amount
    UpdateBankAccountConfigurationRequest:
      type: object
      properties:
        employee:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        paymentMethod:
          type: string
          enum:
          - CASH
          - TRANSFER
          - NONE
        distributionMethod:
          type: string
          enum:
          - PERCENTAGE
          - FIXED_AMOUNT
        bankAccounts:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              companyBankAccount:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier
                required:
                - id
              bankId:
                type: string
              bankBranchId:
                type: string
              accountNumber:
                type: string
                description: Numeric
              accountName:
                type: string
                minLength: 3
                maxLength: 255
              beneficiaryId:
                type: string
                maxLength: 255
              priority:
                type: number
                minimum: 1
              currency:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier
                required:
                - id
              percentage:
                type: number
                minimum: 0
                maximum: 100
              amount:
                type: number
                minimum: 0
            required:
            - bankId
            - accountNumber
            - accountName
            - priority
            - currency
            - percentage
            - amount
        source:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
      required:
      - paymentMethod
    ApprovalIdsRequest:
      type: array
      items:
        type: object
        properties:
          id:
            type: string
            description: Unique identifier
        required:
        - id
    BulkOperationFailureParamResponse:
      type: object
      properties:
        id:
          type: string
        reason:
          type: string
    BulkOperationFailureResponse:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        params:
          type: object
          properties:
            id:
              type: string
            reason:
              type: string
    BulkOperationResponse:
      type: object
      properties:
        successes:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
        failures:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              message:
                type: string
              params:
                type: object
                properties:
                  id:
                    type: string
                  reason:
                    type: string
    RejectApprovalRequest:
      type: object
      properties:
        id:
          type: string
          description: Approval ID
        reason:
          type: string
          description: Reason of Rejection
      required:
      - id
      - reason
    RejectApprovalListRequest:
      type: array
      items:
        type: object
        properties:
          id:
            type: string
            description: Approval ID
          reason:
            type: string
            description: Reason of Rejection
        required:
        - id
        - reason
    BpjsHealthcarePremiumSummaryListItemResponse:
      type: object
      properties:
        id:
          type: string
        employeeIdentificationNumber:
          type: string
        employeeName:
          type: string
        monthlyWage:
          type: number
        companyAmount:
          type: number
        employeeAmount:
          type: number
    BpjsHealthcarePremiumSummaryPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employeeIdentificationNumber:
                  type: string
                employeeName:
                  type: string
                monthlyWage:
                  type: number
                companyAmount:
                  type: number
                employeeAmount:
                  type: number
    BpjsHealthcareCurrentMonthDetailResponse:
      type: object
      properties:
        startCutoffDate:
          type: string
        endCutoffDate:
          type: string
        companyAmount:
          type: number
        employeeAmount:
          type: number
    BpjsHealthcarePremiumDetailsItemResponse:
      type: object
      properties:
        startCutoffDate:
          type: string
        endCutoffDate:
          type: string
        companyAmount:
          type: number
          description: Value can be null if the date period is not processed yet
        employeeAmount:
          type: number
          description: Value can be null if the date period is not processed yet
    BpjsHealthcarePremiumDetailsResponse:
      type: object
      properties:
        employeeId:
          type: string
        employeeIdentificationNumber:
          type: string
        employeeName:
          type: string
        monthlyWage:
          type: number
        currentMonthDetail:
          type: object
          properties:
            startCutoffDate:
              type: string
            endCutoffDate:
              type: string
            companyAmount:
              type: number
            employeeAmount:
              type: number
        details:
          type: array
          items:
            type: object
            properties:
              startCutoffDate:
                type: string
              endCutoffDate:
                type: string
              companyAmount:
                type: number
                description: Value can be null if the date period is not processed yet
              employeeAmount:
                type: number
                description: Value can be null if the date period is not processed yet
    BpjsHealthcareProviderListItemResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        address:
          type: string
        registrationNumber:
          type: string
        reportSignatoryName:
          type: string
        reportSignatoryJobTitle:
          type: string
    BpjsHealthcareProviderPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                address:
                  type: string
                registrationNumber:
                  type: string
                reportSignatoryName:
                  type: string
                reportSignatoryJobTitle:
                  type: string
    BpjsHealthcareTemplateListItemResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        salaryType:
          type: string
        linkToPayroll:
          type: boolean
    BpjsHealthcareTemplatePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                salaryType:
                  type: string
                linkToPayroll:
                  type: boolean
    BpjsManpowerPremiumSummaryListItemResponse:
      type: object
      properties:
        id:
          type: string
        employeeIdentificationNumber:
          type: string
        employeeName:
          type: string
        monthlyWage:
          type: number
        jkkAmount:
          type: number
        jkmAmount:
          type: number
        jhtpkAmount:
          type: number
        jhtpAmount:
          type: number
        jppkAmount:
          type: number
        jppAmount:
          type: number
        jkpAmount:
          type: number
    BpjsManpowerPremiumSummaryPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employeeIdentificationNumber:
                  type: string
                employeeName:
                  type: string
                monthlyWage:
                  type: number
                jkkAmount:
                  type: number
                jkmAmount:
                  type: number
                jhtpkAmount:
                  type: number
                jhtpAmount:
                  type: number
                jppkAmount:
                  type: number
                jppAmount:
                  type: number
                jkpAmount:
                  type: number
    BpjsManpowerCurrentMonthDetailResponse:
      type: object
      properties:
        startCutoffDate:
          type: string
        endCutoffDate:
          type: string
        jkkAmount:
          type: number
        jkmAmount:
          type: number
        jhtpkAmount:
          type: number
        jhtpAmount:
          type: number
        jppkAmount:
          type: number
        jppAmount:
          type: number
        jkpAmount:
          type: number
    BpjsManpowerPremiumDetailsItemResponse:
      type: object
      properties:
        startCutoffDate:
          type: string
        endCutoffDate:
          type: string
        jkkAmount:
          type: number
          description: Amount can be null because the date period is not processed yet
        jkmAmount:
          type: number
          description: Amount can be null because the date period is not processed yet
        jhtpkAmount:
          type: number
          description: Amount can be null because the date period is not processed yet
        jhtpAmount:
          type: number
          description: Amount can be null because the date period is not processed yet
        jppkAmount:
          type: number
          description: Amount can be null because the date period is not processed yet
        jppAmount:
          type: number
          description: Amount can be null because the date period is not processed yet
        jkpAmount:
          type: number
    BpjsManpowerPremiumDetailsResponse:
      type: object
      properties:
        employeeId:
          type: string
        employeeIdentificationNumber:
          type: string
        employeeName:
          type: string
        monthlyWage:
          type: number
        currentMonthDetail:
          type: object
          properties:
            startCutoffDate:
              type: string
            endCutoffDate:
              type: string
            jkkAmount:
              type: number
            jkmAmount:
              type: number
            jhtpkAmount:
              type: number
            jhtpAmount:
              type: number
            jppkAmount:
              type: number
            jppAmount:
              type: number
            jkpAmount:
              type: number
        details:
          type: array
          description: Possible empty list
          items:
            type: object
            properties:
              startCutoffDate:
                type: string
              endCutoffDate:
                type: string
              jkkAmount:
                type: number
                description: Amount can be null because the date period is not processed yet
              jkmAmount:
                type: number
                description: Amount can be null because the date period is not processed yet
              jhtpkAmount:
                type: number
                description: Amount can be null because the date period is not processed yet
              jhtpAmount:
                type: number
                description: Amount can be null because the date period is not processed yet
              jppkAmount:
                type: number
                description: Amount can be null because the date period is not processed yet
              jppAmount:
                type: number
                description: Amount can be null because the date period is not processed yet
              jkpAmount:
                type: number
    BpjsManpowerProviderResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        address:
          type: string
        registrationNumber:
          type: string
        reportSignatoryName:
          type: string
        reportSignatoryJobTitle:
          type: string
    BpjsManpowerProviderPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                address:
                  type: string
                registrationNumber:
                  type: string
                reportSignatoryName:
                  type: string
                reportSignatoryJobTitle:
                  type: string
    BpjsManpowerTemplateResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        salaryType:
          type: string
        linkToPayroll:
          type: boolean
    BpjsManpowerTemplatePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                salaryType:
                  type: string
                linkToPayroll:
                  type: boolean
    CurrencyResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: d1ea18d8-a691-11e6-80f5-76304dec7066
        createdBy:
          type: string
          example: system
        createdDate:
          type: integer
          format: timestamp in milliseconds
          example: 1478586884810
        updatedBy:
          type: string
          example: system
        updatedDate:
          type: integer
          format: timestamp in milliseconds
          example: 1478586884810
        code:
          type: string
          example: IDR
        name:
          type: string
          example: Indonesian Rupiah
        baseCurrency:
          type: boolean
          example: true
    CompanyBankAccountResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: eb919ed1-c3c1-4334-a626-b9178b8a98ae
        name:
          type: string
          example: Comp Bank Account 1
        companyCode:
          type: string
          example: C001
        accountNumber:
          type: string
          example: '98343411'
        bankBranch:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
            name:
              type: string
              example: BCA Wisma Asia
            code:
              type: string
              example: BCA01
            address:
              type: string
              example: BCA01
            bank:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                code:
                  type: string
                  example: '014'
                name:
                  type: string
                  example: BCA
                llg:
                  type: string
                  example: '146789'
        currency:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: d1ea18d8-a691-11e6-80f5-76304dec7066
            createdBy:
              type: string
              example: system
            createdDate:
              type: integer
              format: timestamp in milliseconds
              example: 1478586884810
            updatedBy:
              type: string
              example: system
            updatedDate:
              type: integer
              format: timestamp in milliseconds
              example: 1478586884810
            code:
              type: string
              example: IDR
            name:
              type: string
              example: Indonesian Rupiah
            baseCurrency:
              type: boolean
              example: true
    CompanyBankAccountPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: eb919ed1-c3c1-4334-a626-b9178b8a98ae
                name:
                  type: string
                  example: Comp Bank Account 1
                companyCode:
                  type: string
                  example: C001
                accountNumber:
                  type: string
                  example: '98343411'
                bankBranch:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                    name:
                      type: string
                      example: BCA Wisma Asia
                    code:
                      type: string
                      example: BCA01
                    address:
                      type: string
                      example: BCA01
                    bank:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                        code:
                          type: string
                          example: '014'
                        name:
                          type: string
                          example: BCA
                        llg:
                          type: string
                          example: '146789'
                currency:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: d1ea18d8-a691-11e6-80f5-76304dec7066
                    createdBy:
                      type: string
                      example: system
                    createdDate:
                      type: integer
                      format: timestamp in milliseconds
                      example: 1478586884810
                    updatedBy:
                      type: string
                      example: system
                    updatedDate:
                      type: integer
                      format: timestamp in milliseconds
                      example: 1478586884810
                    code:
                      type: string
                      example: IDR
                    name:
                      type: string
                      example: Indonesian Rupiah
                    baseCurrency:
                      type: boolean
                      example: true
    CityPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
    CityRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        name:
          type: string
          minLength: 1
          maxLength: 255
        state:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
      required:
      - code
      - name
      - state
    StateListItemResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        country:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            callingCode:
              type: string
            taxTreaty:
              type: boolean
        description:
          type: string
    StatePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                country:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    callingCode:
                      type: string
                    taxTreaty:
                      type: boolean
                description:
                  type: string
    LogoFileMetadataResponse:
      type: object
      properties:
        filename:
          type: string
        path:
          type: string
        url:
          type: string
          format: uri
    TimeZoneResponse:
      type: object
      properties:
        code:
          type: string
        offset:
          type: string
    CompanySuperiorResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        code:
          type: string
        website:
          type: string
        siup:
          type: string
        tdp:
          type: string
        logo:
          type: string
        logoOriginalFilename:
          type: string
        logoFileMetadata:
          type: object
          properties:
            filename:
              type: string
            path:
              type: string
            url:
              type: string
              format: uri
        timeZone:
          type: object
          properties:
            code:
              type: string
            offset:
              type: string
        email:
          type: string
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
              format: float
            longitude:
              type: number
              format: float
            headquarter:
              type: boolean
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD, effective date of the location
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD, end date of the location
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
    CompanyDetailResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        code:
          type: string
        website:
          type: string
        siup:
          type: string
        tdp:
          type: string
        logo:
          type: string
        logoOriginalFilename:
          type: string
        logoFileMetadata:
          type: object
          properties:
            filename:
              type: string
            path:
              type: string
            url:
              type: string
              format: uri
        timeZone:
          type: object
          properties:
            code:
              type: string
            offset:
              type: string
        email:
          type: string
        companySuperior:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            website:
              type: string
            siup:
              type: string
            tdp:
              type: string
            logo:
              type: string
            logoOriginalFilename:
              type: string
            logoFileMetadata:
              type: object
              properties:
                filename:
                  type: string
                path:
                  type: string
                url:
                  type: string
                  format: uri
            timeZone:
              type: object
              properties:
                code:
                  type: string
                offset:
                  type: string
            email:
              type: string
            location:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                locationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                city:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    state:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        country:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            callingCode:
                              type: string
                            taxTreaty:
                              type: boolean
                latitude:
                  type: number
                  format: float
                longitude:
                  type: number
                  format: float
                headquarter:
                  type: boolean
                address:
                  type: string
                phone:
                  type: string
                zipCode:
                  type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD, effective date of the location
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD, end date of the location
                company:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    code:
                      type: string
                    name:
                      type: string
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
              format: float
            longitude:
              type: number
              format: float
            headquarter:
              type: boolean
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD, effective date of the location
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD, end date of the location
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        companyGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    CompanyDetailTimeZoneRequest:
      type: object
      description: Please refer to [Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). The `code` refers to the `TZ identifier` column, and the `offset` corresponds to the `UTC offset` > `SDT` column.
      properties:
        code:
          type: string
        offset:
          type: string
          pattern: ([+-][0-1][0-9]|[+-]2[0-3]):([0-5][0-9])
          description: The `offset` must be between `-18` and `+18` hours, e.g. `+07:00`
      required:
      - code
      - offset
    CompanyDetailRequest:
      type: object
      format: json
      description: The Content-Type must be `application/json`
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
        code:
          type: string
          minLength: 1
          maxLength: 255
        website:
          type: string
          minLength: 3
          maxLength: 80
        siup:
          type: string
          minLength: 1
          maxLength: 255
          pattern: '[a-zA-Z0-9-/. ]+'
          description: Alphanumeric, hyphen (-), slash (/), period (.), and space
        tdp:
          type: string
          minLength: 1
          maxLength: 255
          pattern: '[a-zA-Z0-9-/. ]+'
          description: Alphanumeric, hyphen (-), slash (/), period (.), and space
        timeZone:
          type: object
          description: Please refer to [Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). The `code` refers to the `TZ identifier` column, and the `offset` corresponds to the `UTC offset` > `SDT` column.
          properties:
            code:
              type: string
            offset:
              type: string
              pattern: ([+-][0-1][0-9]|[+-]2[0-3]):([0-5][0-9])
              description: The `offset` must be between `-18` and `+18` hours, e.g. `+07:00`
          required:
          - code
          - offset
        email:
          type: string
          format: email
          maxLength: 255
        companySuperior:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        location:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
      required:
      - name
      - timeZone
      - email
      - location
    CompanyRequest:
      type: object
      properties:
        request:
          type: object
          format: json
          description: The Content-Type must be `application/json`
          properties:
            name:
              type: string
              minLength: 1
              maxLength: 255
            code:
              type: string
              minLength: 1
              maxLength: 255
            website:
              type: string
              minLength: 3
              maxLength: 80
            siup:
              type: string
              minLength: 1
              maxLength: 255
              pattern: '[a-zA-Z0-9-/. ]+'
              description: Alphanumeric, hyphen (-), slash (/), period (.), and space
            tdp:
              type: string
              minLength: 1
              maxLength: 255
              pattern: '[a-zA-Z0-9-/. ]+'
              description: Alphanumeric, hyphen (-), slash (/), period (.), and space
            timeZone:
              type: object
              description: Please refer to [Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). The `code` refers to the `TZ identifier` column, and the `offset` corresponds to the `UTC offset` > `SDT` column.
              properties:
                code:
                  type: string
                offset:
                  type: string
                  pattern: ([+-][0-1][0-9]|[+-]2[0-3]):([0-5][0-9])
                  description: The `offset` must be between `-18` and `+18` hours, e.g. `+07:00`
              required:
              - code
              - offset
            email:
              type: string
              format: email
              maxLength: 255
            companySuperior:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier
              required:
              - id
            location:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier
              required:
              - id
          required:
          - name
          - timeZone
          - email
          - location
        file:
          type: string
          format: binary
          description: 'Upload the company logo. Allowed file types: `jpg`, `jpeg`, `png`, and `svg`. The Content-Type must be `image/jpeg`, `image/png`, or `image/svg+xml`. The maximum file size is `4MB`.'
      required:
      - request
    CompanyListItemResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        code:
          type: string
        companyGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    CompanyPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
                companyGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
    AddressDetailResponse:
      type: object
      properties:
        address:
          type: string
        zipCode:
          type: string
        phone:
          type: string
        district:
          type: string
        city:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            state:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                country:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    callingCode:
                      type: string
                    taxTreaty:
                      type: boolean
    EmergencyContactResponse:
      type: object
      properties:
        name:
          type: string
        relation:
          type: string
        phone:
          type: string
    ContactInformationResponse:
      type: object
      properties:
        id:
          type: string
        mobilePhone:
          type: string
        email:
          type: string
          description: deprecated
        workEmail:
          type: string
        personalEmail:
          type: string
        originalAddress:
          type: string
        originalAddressPhoneNumber:
          type: string
        originalAddressDetail:
          type: object
          properties:
            address:
              type: string
            zipCode:
              type: string
            phone:
              type: string
            district:
              type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
        facebook:
          type: string
        linkedIn:
          type: string
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
        residentialAddress:
          type: object
          properties:
            address:
              type: string
            zipCode:
              type: string
            phone:
              type: string
            district:
              type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
        emergencyContact:
          type: object
          properties:
            name:
              type: string
            relation:
              type: string
            phone:
              type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
            joinDate:
              type: string
              format: date
              description: YYYY-MM-DD
            startDate:
              type: string
              format: date
              description: YYYY-MM-DD
            active:
              type: boolean
            pointOfHire:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                locationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                city:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    state:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        country:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            callingCode:
                              type: string
                            taxTreaty:
                              type: boolean
                latitude:
                  type: number
                longitude:
                  type: number
                address:
                  type: string
                phone:
                  type: string
                zipCode:
                  type: string
                headquarter:
                  type: boolean
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            photo:
              type: object
              properties:
                url:
                  type: string
            manager:
              type: object
              properties:
                id:
                  type: string
                identificationNumber:
                  type: string
                name:
                  type: string
                joinDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                startDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                active:
                  type: boolean
                pointOfHire:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    locationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    city:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        state:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            country:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                callingCode:
                                  type: string
                                taxTreaty:
                                  type: boolean
                    latitude:
                      type: number
                    longitude:
                      type: number
                    address:
                      type: string
                    phone:
                      type: string
                    zipCode:
                      type: string
                    headquarter:
                      type: boolean
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                photo:
                  type: object
                  properties:
                    url:
                      type: string
    ContactInformationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                mobilePhone:
                  type: string
                email:
                  type: string
                  description: deprecated
                workEmail:
                  type: string
                personalEmail:
                  type: string
                originalAddress:
                  type: string
                originalAddressPhoneNumber:
                  type: string
                originalAddressDetail:
                  type: object
                  properties:
                    address:
                      type: string
                    zipCode:
                      type: string
                    phone:
                      type: string
                    district:
                      type: string
                    city:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        state:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            country:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                callingCode:
                                  type: string
                                taxTreaty:
                                  type: boolean
                facebook:
                  type: string
                linkedIn:
                  type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                residentialAddress:
                  type: object
                  properties:
                    address:
                      type: string
                    zipCode:
                      type: string
                    phone:
                      type: string
                    district:
                      type: string
                    city:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        state:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            country:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                callingCode:
                                  type: string
                                taxTreaty:
                                  type: boolean
                emergencyContact:
                  type: object
                  properties:
                    name:
                      type: string
                    relation:
                      type: string
                    phone:
                      type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                    joinDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    startDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    active:
                      type: boolean
                    pointOfHire:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        locationGroup:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        city:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            state:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                country:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    callingCode:
                                      type: string
                                    taxTreaty:
                                      type: boolean
                        latitude:
                          type: number
                        longitude:
                          type: number
                        address:
                          type: string
                        phone:
                          type: string
                        zipCode:
                          type: string
                        headquarter:
                          type: boolean
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                    photo:
                      type: object
                      properties:
                        url:
                          type: string
                    manager:
                      type: object
                      properties:
                        id:
                          type: string
                        identificationNumber:
                          type: string
                        name:
                          type: string
                        joinDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        startDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        active:
                          type: boolean
                        pointOfHire:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            locationGroup:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            city:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                state:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    country:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                        callingCode:
                                          type: string
                                        taxTreaty:
                                          type: boolean
                            latitude:
                              type: number
                            longitude:
                              type: number
                            address:
                              type: string
                            phone:
                              type: string
                            zipCode:
                              type: string
                            headquarter:
                              type: boolean
                            company:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                        photo:
                          type: object
                          properties:
                            url:
                              type: string
    CompanyGroupResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier for the company group
        name:
          type: string
          description: The name of the company group
        code:
          type: string
          description: The code of the company group
    CompanyGroupPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  description: The unique identifier for the company group
                name:
                  type: string
                  description: The name of the company group
                code:
                  type: string
                  description: The code of the company group
    CostCenterPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
                description:
                  type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    code:
                      type: string
                    name:
                      type: string
    CostCenterRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        name:
          type: string
          minLength: 1
          maxLength: 255
        description:
          type: string
          maxLength: 65535
      required:
      - code
      - name
    CountryPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                callingCode:
                  type: string
                taxTreaty:
                  type: boolean
    CountryRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        callingCode:
          type: string
          minLength: 1
          maxLength: 5
          pattern: ^\+\d{1,5}$
          description: e.g. `+62`
        name:
          type: string
          minLength: 1
          maxLength: 255
        taxTreaty:
          type: boolean
          default: false
      required:
      - code
      - callingCode
      - name
    CurrencyPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: d1ea18d8-a691-11e6-80f5-76304dec7066
                createdBy:
                  type: string
                  example: system
                createdDate:
                  type: integer
                  format: timestamp in milliseconds
                  example: 1478586884810
                updatedBy:
                  type: string
                  example: system
                updatedDate:
                  type: integer
                  format: timestamp in milliseconds
                  example: 1478586884810
                code:
                  type: string
                  example: IDR
                name:
                  type: string
                  example: Indonesian Rupiah
                baseCurrency:
                  type: boolean
                  example: true
    EducationLevelResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        code:
          type: string
    FieldOfStudyResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        code:
          type: string
    InstitutionResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        code:
          type: string
    EducationResponse:
      type: object
      properties:
        id:
          type: string
        educationLevel:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
        fieldOfStudy:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
        country:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            callingCode:
              type: string
            taxTreaty:
              type: boolean
        institution:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
        startDate:
          type: string
        graduationDate:
          type: string
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
    EducationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                educationLevel:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                fieldOfStudy:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                country:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    callingCode:
                      type: string
                    taxTreaty:
                      type: boolean
                institution:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                startDate:
                  type: string
                graduationDate:
                  type: string
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
    EducationLevelPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
    EmployeePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                identificationNumber:
                  type: string
                name:
                  type: string
                joinDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                startDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                active:
                  type: boolean
                pointOfHire:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    locationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    city:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        state:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            country:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                callingCode:
                                  type: string
                                taxTreaty:
                                  type: boolean
                    latitude:
                      type: number
                    longitude:
                      type: number
                    address:
                      type: string
                    phone:
                      type: string
                    zipCode:
                      type: string
                    headquarter:
                      type: boolean
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                photo:
                  type: object
                  properties:
                    url:
                      type: string
                manager:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                    joinDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    startDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    active:
                      type: boolean
                    pointOfHire:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        locationGroup:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        city:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            state:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                country:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    callingCode:
                                      type: string
                                    taxTreaty:
                                      type: boolean
                        latitude:
                          type: number
                        longitude:
                          type: number
                        address:
                          type: string
                        phone:
                          type: string
                        zipCode:
                          type: string
                        headquarter:
                          type: boolean
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                    photo:
                      type: object
                      properties:
                        url:
                          type: string
    EmployeeRequest:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
        username:
          type: string
          maxLength: 255
        email:
          type: string
          format: email
          maxLength: 255
        joinDate:
          type: string
          format: date
          description: YYYY-MM-DD
        startDate:
          type: string
          format: date
          description: YYYY-MM-DD
        contractStart:
          type: string
          format: date
          description: YYYY-MM-DD
        contractEnd:
          type: string
          format: date
          description: YYYY-MM-DD
        dateOfBirth:
          type: string
          format: date
          description: YYYY-MM-DD
        employmentStatusNumber:
          type: string
          maxLength: 255
        employmentTypeId:
          type: string
        foreignLabour:
          type: boolean
          default: false
        gender:
          type: string
          enum:
          - MALE
          - FEMALE
        identificationNumber:
          type: string
          maxLength: 255
        identityCardExpiredDate:
          type: string
          format: date
          description: YYYY-MM-DD
        identityCardNumber:
          type: string
          minLength: 1
          maxLength: 255
        jobLevelId:
          type: string
        jobTitleId:
          type: string
        locationId:
          type: string
        maritalStatus:
          type: string
          enum:
          - SINGLE
          - MARRIED
          - WIDOW
          - WIDOWER
        organizationId:
          type: string
        placeOfBirthId:
          type: string
          description: City
        pointOfHireId:
          type: string
          description: Location
        religionId:
          type: string
        citizenshipId:
          type: string
          description: Country
        positionId:
          type: string
        subLocationId:
          type: string
        operationalGroupId:
          type: string
        workEmail:
          type: string
          format: email
          maxLength: 255
        costCenterId:
          type: string
      required:
      - name
      - joinDate
      - startDate
      - dateOfBirth
      - employmentTypeId
      - gender
      - identityCardNumber
      - jobLevelId
      - jobTitleId
      - locationId
      - maritalStatus
      - organizationId
      - pointOfHireId
      - religionId
      - citizenshipId
    ReligionResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        code:
          type: string
    PlaceOfBirthResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        state:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            country:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                callingCode:
                  type: string
                taxTreaty:
                  type: boolean
    EmployeeCreateResponse:
      type: object
      properties:
        id:
          type: string
        maritalStatus:
          type: string
          enum:
          - SINGLE
          - MARRIED
          - WIDOW
          - WIDOWER
        religion:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
        foreignLabour:
          type: boolean
        citizenship:
          type: object
        identificationNumber:
          type: string
        name:
          type: string
        dateOfBirth:
          type: string
        placeOfBirth:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            state:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                country:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    callingCode:
                      type: string
                    taxTreaty:
                      type: boolean
        joinDate:
          type: string
        startDate:
          type: string
        gender:
          type: string
          enum:
          - MALE
          - FEMALE
        pointOfHire:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
            longitude:
              type: number
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            headquarter:
              type: boolean
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        employmentStatusNumber:
          type: string
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            type:
              type: string
              enum:
              - STRUCTURAL
              - FUNCTIONAL
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD
            createdBy:
              type: string
            createdDate:
              type: number
            updatedBy:
              type: string
            updatedDate:
              type: number
            organizationHierarchy:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                color:
                  type: string
                level:
                  type: integer
            organizationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            organizationParent:
              type: object
              deprecated: true
              description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    color:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organizationParent:
                  type: object
                  description: Deprecated. Always null.
                  deprecated: true
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        jobTitle:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
            minJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
            maxJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
        jobLevel:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            jobPosition:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            level:
              type: number
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
              format: float
            longitude:
              type: number
              format: float
            headquarter:
              type: boolean
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD, effective date of the location
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD, end date of the location
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        employmentType:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            employmentGroupCode:
              type: string
            monthDuration:
              type: integer
            permanent:
              type: boolean
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        contractStart:
          type: string
        contractEnd:
          type: string
        identityCardNumber:
          type: string
        identityCardExpiredDate:
          type: string
          format: date
        email:
          type: string
    EmployeeSupervisorApprovalOrganizationResponse:
      type: object
      allOf:
      - type: object
        properties:
          id:
            type: string
          code:
            type: string
          name:
            type: string
      - type: object
        properties:
          type:
            type: string
            enum:
            - STRUCTURAL
            - FUNCTIONAL
          company:
            type: object
            properties:
              id:
                type: string
              code:
                type: string
              name:
                type: string
    EmployeeSupervisorApprovalJobLevelResponse:
      type: object
      allOf:
      - type: object
        properties:
          id:
            type: string
          code:
            type: string
          name:
            type: string
      - type: object
        properties:
          level:
            type: integer
    EmployeeSupervisorApprovalEmploymentStatusResponse:
      type: object
      properties:
        id:
          type: string
        employmentStatusNumber:
          type: string
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        organization:
          type: object
          allOf:
          - type: object
            properties:
              id:
                type: string
              code:
                type: string
              name:
                type: string
          - type: object
            properties:
              type:
                type: string
                enum:
                - STRUCTURAL
                - FUNCTIONAL
              company:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
        jobLevel:
          type: object
          allOf:
          - type: object
            properties:
              id:
                type: string
              code:
                type: string
              name:
                type: string
          - type: object
            properties:
              level:
                type: integer
        employmentType:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        jobTitle:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        costCenter:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        position:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    EmployeeSupervisorApprovalEmployeeResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
        name:
          type: string
        employmentStatus:
          type: object
          properties:
            id:
              type: string
            employmentStatusNumber:
              type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            organization:
              type: object
              allOf:
              - type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                    - STRUCTURAL
                    - FUNCTIONAL
                  company:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
            jobLevel:
              type: object
              allOf:
              - type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
              - type: object
                properties:
                  level:
                    type: integer
            employmentType:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            jobTitle:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            location:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            costCenter:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            position:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
    EmployeeSupervisorBaseResponse:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
            employmentStatus:
              type: object
              properties:
                id:
                  type: string
                employmentStatusNumber:
                  type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                organization:
                  type: object
                  allOf:
                  - type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - STRUCTURAL
                        - FUNCTIONAL
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                jobLevel:
                  type: object
                  allOf:
                  - type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  - type: object
                    properties:
                      level:
                        type: integer
                employmentType:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                jobTitle:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                location:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                costCenter:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                position:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
        supervisor:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
            employmentStatus:
              type: object
              properties:
                id:
                  type: string
                employmentStatusNumber:
                  type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                organization:
                  type: object
                  allOf:
                  - type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - STRUCTURAL
                        - FUNCTIONAL
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                jobLevel:
                  type: object
                  allOf:
                  - type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  - type: object
                    properties:
                      level:
                        type: integer
                employmentType:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                jobTitle:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                location:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                costCenter:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                position:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        endDate:
          type: string
          format: date
          description: YYYY-MM-DD
    EmployeeSupervisorResponse:
      type: object
      allOf:
      - type: object
        properties:
          id:
            type: string
          employee:
            type: object
            properties:
              id:
                type: string
              identificationNumber:
                type: string
              name:
                type: string
              employmentStatus:
                type: object
                properties:
                  id:
                    type: string
                  employmentStatusNumber:
                    type: string
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  organization:
                    type: object
                    allOf:
                    - type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    - type: object
                      properties:
                        type:
                          type: string
                          enum:
                          - STRUCTURAL
                          - FUNCTIONAL
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                  jobLevel:
                    type: object
                    allOf:
                    - type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    - type: object
                      properties:
                        level:
                          type: integer
                  employmentType:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  jobTitle:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  location:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  costCenter:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  position:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
          supervisor:
            type: object
            properties:
              id:
                type: string
              identificationNumber:
                type: string
              name:
                type: string
              employmentStatus:
                type: object
                properties:
                  id:
                    type: string
                  employmentStatusNumber:
                    type: string
                  effectiveDate:
                    type: string
                    format: date
                    description: YYYY-MM-DD
                  organization:
                    type: object
                    allOf:
                    - type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    - type: object
                      properties:
                        type:
                          type: string
                          enum:
                          - STRUCTURAL
                          - FUNCTIONAL
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                  jobLevel:
                    type: object
                    allOf:
                    - type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    - type: object
                      properties:
                        level:
                          type: integer
                  employmentType:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  jobTitle:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  location:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  costCenter:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  position:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
          effectiveDate:
            type: string
            format: date
            description: YYYY-MM-DD
          endDate:
            type: string
            format: date
            description: YYYY-MM-DD
      - type: object
        properties:
          action:
            type: string
            enum:
            - NONE
            - ADD
            - EDIT
            - DELETE
            - DELETE_ALL
          approvalStatus:
            type: string
            enum:
            - APPROVED
            - REJECTED
            - OPEN
            - WAITING_FOR_APPROVAL
    EmployeeSupervisorApprovalResponse:
      type: object
      allOf:
      - type: object
        allOf:
        - type: object
          properties:
            id:
              type: string
            employee:
              type: object
              properties:
                id:
                  type: string
                identificationNumber:
                  type: string
                name:
                  type: string
                employmentStatus:
                  type: object
                  properties:
                    id:
                      type: string
                    employmentStatusNumber:
                      type: string
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    organization:
                      type: object
                      allOf:
                      - type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                            - STRUCTURAL
                            - FUNCTIONAL
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                    jobLevel:
                      type: object
                      allOf:
                      - type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      - type: object
                        properties:
                          level:
                            type: integer
                    employmentType:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    jobTitle:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    location:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    costCenter:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    position:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
            supervisor:
              type: object
              properties:
                id:
                  type: string
                identificationNumber:
                  type: string
                name:
                  type: string
                employmentStatus:
                  type: object
                  properties:
                    id:
                      type: string
                    employmentStatusNumber:
                      type: string
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    organization:
                      type: object
                      allOf:
                      - type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                            - STRUCTURAL
                            - FUNCTIONAL
                          company:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                    jobLevel:
                      type: object
                      allOf:
                      - type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      - type: object
                        properties:
                          level:
                            type: integer
                    employmentType:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    jobTitle:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    location:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    costCenter:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    position:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD
        - type: object
          properties:
            action:
              type: string
              enum:
              - NONE
              - ADD
              - EDIT
              - DELETE
              - DELETE_ALL
            approvalStatus:
              type: string
              enum:
              - APPROVED
              - REJECTED
              - OPEN
              - WAITING_FOR_APPROVAL
    EmployeeSupervisorApprovalPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              allOf:
              - type: object
                allOf:
                - type: object
                  properties:
                    id:
                      type: string
                    employee:
                      type: object
                      properties:
                        id:
                          type: string
                        identificationNumber:
                          type: string
                        name:
                          type: string
                        employmentStatus:
                          type: object
                          properties:
                            id:
                              type: string
                            employmentStatusNumber:
                              type: string
                            effectiveDate:
                              type: string
                              format: date
                              description: YYYY-MM-DD
                            organization:
                              type: object
                              allOf:
                              - type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              - type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                    - STRUCTURAL
                                    - FUNCTIONAL
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                            jobLevel:
                              type: object
                              allOf:
                              - type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              - type: object
                                properties:
                                  level:
                                    type: integer
                            employmentType:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            jobTitle:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            location:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            costCenter:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            position:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                    supervisor:
                      type: object
                      properties:
                        id:
                          type: string
                        identificationNumber:
                          type: string
                        name:
                          type: string
                        employmentStatus:
                          type: object
                          properties:
                            id:
                              type: string
                            employmentStatusNumber:
                              type: string
                            effectiveDate:
                              type: string
                              format: date
                              description: YYYY-MM-DD
                            organization:
                              type: object
                              allOf:
                              - type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              - type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                    - STRUCTURAL
                                    - FUNCTIONAL
                                  company:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                            jobLevel:
                              type: object
                              allOf:
                              - type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                              - type: object
                                properties:
                                  level:
                                    type: integer
                            employmentType:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            jobTitle:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            location:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            costCenter:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            position:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                - type: object
                  properties:
                    action:
                      type: string
                      enum:
                      - NONE
                      - ADD
                      - EDIT
                      - DELETE
                      - DELETE_ALL
                    approvalStatus:
                      type: string
                      enum:
                      - APPROVED
                      - REJECTED
                      - OPEN
                      - WAITING_FOR_APPROVAL
    RecurringPeriodEndResponse:
      type: object
      properties:
        year:
          type: number
        month:
          type: number
    RecurringConfigurationResponse:
      type: object
      properties:
        monthInterval:
          type: number
        recurringEndType:
          type: string
        maxRecurringTimes:
          type: number
        recurringPeriodEnd:
          type: object
          properties:
            year:
              type: number
            month:
              type: number
    EmployeeSalaryResponse:
      type: object
      properties:
        salaryItemId:
          type: string
        salaryItemCode:
          type: string
        amount:
          type: number
        recurringConfiguration:
          type: object
          properties:
            monthInterval:
              type: number
            recurringEndType:
              type: string
            maxRecurringTimes:
              type: number
            recurringPeriodEnd:
              type: object
              properties:
                year:
                  type: number
                month:
                  type: number
    EmployeeSalaryTemplateResponse:
      type: object
      properties:
        id:
          type: string
        effectiveDate:
          type: string
        proportional:
          type: boolean
        retroactive:
          type: boolean
        salaryDecreeNumber:
          type: string
        salaryTemplateId:
          type: string
        employeeSalaries:
          type: array
          items:
            type: object
            properties:
              salaryItemId:
                type: string
              salaryItemCode:
                type: string
              amount:
                type: number
              recurringConfiguration:
                type: object
                properties:
                  monthInterval:
                    type: number
                  recurringEndType:
                    type: string
                  maxRecurringTimes:
                    type: number
                  recurringPeriodEnd:
                    type: object
                    properties:
                      year:
                        type: number
                      month:
                        type: number
    RecurringPeriodEndRequest:
      type: object
      properties:
        year:
          type: number
        month:
          type: number
      required:
      - month
      - year
    RecurringConfigurationRequest:
      type: object
      properties:
        maxRecurringTimes:
          type: number
        periodInterval:
          type: number
        recurringEndType:
          type: string
        recurringPeriodEnd:
          type: object
          properties:
            year:
              type: number
            month:
              type: number
          required:
          - month
          - year
      required:
      - maxRecurringTimes
      - periodInterval
      - recurringEndType
      - recurringPeriodEnd
    EmployeeSalaryRequest:
      type: object
      properties:
        salaryItemId:
          type: string
        amount:
          type: number
        formula:
          type: string
        recurringConfiguration:
          type: object
          properties:
            maxRecurringTimes:
              type: number
            periodInterval:
              type: number
            recurringEndType:
              type: string
            recurringPeriodEnd:
              type: object
              properties:
                year:
                  type: number
                month:
                  type: number
              required:
              - month
              - year
          required:
          - maxRecurringTimes
          - periodInterval
          - recurringEndType
          - recurringPeriodEnd
      required:
      - amount
      - formula
      - recurringConfiguration
      - salaryItemId
    EmployeeSalaryTemplateRequest:
      type: object
      properties:
        effectiveDate:
          type: string
        employeeSalaries:
          type: array
          items:
            type: object
            properties:
              salaryItemId:
                type: string
              amount:
                type: number
              formula:
                type: string
              recurringConfiguration:
                type: object
                properties:
                  maxRecurringTimes:
                    type: number
                  periodInterval:
                    type: number
                  recurringEndType:
                    type: string
                  recurringPeriodEnd:
                    type: object
                    properties:
                      year:
                        type: number
                      month:
                        type: number
                    required:
                    - month
                    - year
                required:
                - maxRecurringTimes
                - periodInterval
                - recurringEndType
                - recurringPeriodEnd
            required:
            - amount
            - formula
            - recurringConfiguration
            - salaryItemId
        proportional:
          type: boolean
        retroactive:
          type: boolean
        salaryDecreeNumber:
          type: string
        salaryTemplateId:
          type: string
      required:
      - effectiveDate
      - employeeSalaries
      - proportional
      - retroactive
      - salaryDecreeNumber
      - salaryTemplateId
    EmployeeSalaryTemplateUpdateResponse:
      type: object
      properties:
        employeeId:
          type: string
    EmployeeSalaryTemplatePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                effectiveDate:
                  type: string
                proportional:
                  type: boolean
                retroactive:
                  type: boolean
                salaryDecreeNumber:
                  type: string
                salaryTemplateId:
                  type: string
                employeeSalaries:
                  type: array
                  items:
                    type: object
                    properties:
                      salaryItemId:
                        type: string
                      salaryItemCode:
                        type: string
                      amount:
                        type: number
                      recurringConfiguration:
                        type: object
                        properties:
                          monthInterval:
                            type: number
                          recurringEndType:
                            type: string
                          maxRecurringTimes:
                            type: number
                          recurringPeriodEnd:
                            type: object
                            properties:
                              year:
                                type: number
                              month:
                                type: number
    BpjsHealthcareTreatmentClassResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        minSalaryType:
          type: string
        minSalaryValue:
          type: string
        maxSalaryType:
          type: string
        maxSalaryValue:
          type: string
    FamilyMemberRelationResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        code:
          type: string
        relationType:
          type: string
          enum:
          - MOTHER
          - FATHER
          - SPOUSE
          - FIRST_CHILD
          - SECOND_CHILD
          - THIRD_CHILD
          - OTHER_CHILD
          - OTHER
    AdditionalFamilyMembershipResponse:
      type: object
      properties:
        id:
          type: string
        familyMemberName:
          type: string
        familyMemberRelation:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            relationType:
              type: string
              enum:
              - MOTHER
              - FATHER
              - SPOUSE
              - FIRST_CHILD
              - SECOND_CHILD
              - THIRD_CHILD
              - OTHER_CHILD
              - OTHER
        firstLevelHealthcareFacility:
          type: string
        dentalHealthcareFacility:
          type: string
    BpjsHealthcareMembershipResponse:
      type: object
      properties:
        id:
          type: string
          description: ID of the BPJS Healthcare Membership
        employeeId:
          type: string
        membershipNumber:
          type: string
        startDate:
          type: string
        endDate:
          type: string
        effectiveDate:
          type: string
        firstLevelHealthcareFacility:
          type: string
        dentalHealthcareFacility:
          type: string
        bpjsHealthcareProvider:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            address:
              type: string
            registrationNumber:
              type: string
            reportSignatoryName:
              type: string
            reportSignatoryJobTitle:
              type: string
        bpjsHealthcareTemplate:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            salaryType:
              type: string
            linkToPayroll:
              type: boolean
        bpjsHealthcareTreatmentClass:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            minSalaryType:
              type: string
            minSalaryValue:
              type: string
            maxSalaryType:
              type: string
            maxSalaryValue:
              type: string
        additionalFamilyMemberships:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              familyMemberName:
                type: string
              familyMemberRelation:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  code:
                    type: string
                  relationType:
                    type: string
                    enum:
                    - MOTHER
                    - FATHER
                    - SPOUSE
                    - FIRST_CHILD
                    - SECOND_CHILD
                    - THIRD_CHILD
                    - OTHER_CHILD
                    - OTHER
              firstLevelHealthcareFacility:
                type: string
              dentalHealthcareFacility:
                type: string
    BpjsHealthcareMembershipAdditionalFamilyMembership:
      type: object
      properties:
        dentalHealthcareFacility:
          type: string
        familyMemberName:
          type: string
        familyMemberRelationId:
          type: string
        firstLevelHealthcareFacility:
          type: string
        id:
          type: string
      required:
      - familyMemberName
      - familyMemberRelationId
      - id
    BpjsHealthcareMembershipRequest:
      type: object
      properties:
        additionalFamilyMemberships:
          type: array
          items:
            type: object
            properties:
              dentalHealthcareFacility:
                type: string
              familyMemberName:
                type: string
              familyMemberRelationId:
                type: string
              firstLevelHealthcareFacility:
                type: string
              id:
                type: string
            required:
            - familyMemberName
            - familyMemberRelationId
            - id
        bpjsHealthcareProviderId:
          type: string
        bpjsHealthcareTemplateId:
          type: string
        bpjsHealthcareTreatmentClassId:
          type: string
        dentalHealthcareFacility:
          type: string
        firstLevelHealthcareFacility:
          type: string
        membershipNumber:
          type: string
        startDate:
          type: string
        effectiveDate:
          type: string
          description: Effective Date of the BPJS Healthcare Membership default to start date
      required:
      - additionalFamilyMemberships
      - bpjsHealthcareProviderId
      - bpjsHealthcareTemplateId
      - membershipNumber
      - startDate
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
        status:
          type: integer
          description: HTTP status code
        timestamp:
          type: string
          description: Timestamp when the error occurred
    BpjsManpowerMembershipResponse:
      type: object
      properties:
        id:
          type: string
          description: ID of the BPJS Manpower Membership
        membershipNumber:
          type: string
        startDate:
          type: string
        endDate:
          type: string
        effectiveDate:
          type: string
        pensionEnd:
          type: string
        bpjsManpowerProvider:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            address:
              type: string
            registrationNumber:
              type: string
            reportSignatoryName:
              type: string
            reportSignatoryJobTitle:
              type: string
        bpjsManpowerTemplate:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            salaryType:
              type: string
            linkToPayroll:
              type: boolean
    BpjsManpowerMembershipRequest:
      type: object
      properties:
        bpjsManpowerProviderId:
          type: string
        bpjsManpowerTemplateId:
          type: string
        membershipNumber:
          type: string
        startDate:
          type: string
        effectiveDate:
          type: string
          description: Effective Date of the BPJS Manpower Membership default value is start date
      required:
      - bpjsManpowerProviderId
      - bpjsManpowerTemplateId
      - startDate
    ContactInformationRequest:
      type: object
      properties:
        email:
          type: string
        mobilePhone:
          type: string
          pattern: ^[+]{1}[0-9-() ]+
          description: e.g. `+6281234567890`
        originalAddress:
          type: string
    EmployeeDetailResponse:
      type: object
      properties:
        id:
          type: string
        maritalStatus:
          type: string
          enum:
          - SINGLE
          - MARRIED
          - WIDOW
          - WIDOWER
        religion:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
        foreignLabour:
          type: boolean
        citizenship:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            callingCode:
              type: string
            taxTreaty:
              type: boolean
        name:
          type: string
        dateOfBirth:
          type: string
          format: date
          description: YYYY-MM-DD
        placeOfBirth:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            state:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                country:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    callingCode:
                      type: string
                    taxTreaty:
                      type: boolean
        gender:
          type: string
          enum:
          - MALE
          - FEMALE
        bloodType:
          type: string
          enum:
          - A
          - B
          - O
          - AB
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
            joinDate:
              type: string
              format: date
              description: YYYY-MM-DD
            startDate:
              type: string
              format: date
              description: YYYY-MM-DD
            active:
              type: boolean
            pointOfHire:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                locationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                city:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    state:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        country:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            callingCode:
                              type: string
                            taxTreaty:
                              type: boolean
                latitude:
                  type: number
                longitude:
                  type: number
                address:
                  type: string
                phone:
                  type: string
                zipCode:
                  type: string
                headquarter:
                  type: boolean
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            photo:
              type: object
              properties:
                url:
                  type: string
            manager:
              type: object
              properties:
                id:
                  type: string
                identificationNumber:
                  type: string
                name:
                  type: string
                joinDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                startDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                active:
                  type: boolean
                pointOfHire:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    locationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    city:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        state:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            country:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                callingCode:
                                  type: string
                                taxTreaty:
                                  type: boolean
                    latitude:
                      type: number
                    longitude:
                      type: number
                    address:
                      type: string
                    phone:
                      type: string
                    zipCode:
                      type: string
                    headquarter:
                      type: boolean
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                photo:
                  type: object
                  properties:
                    url:
                      type: string
    EmployeeDetailPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                maritalStatus:
                  type: string
                  enum:
                  - SINGLE
                  - MARRIED
                  - WIDOW
                  - WIDOWER
                religion:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                foreignLabour:
                  type: boolean
                citizenship:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    callingCode:
                      type: string
                    taxTreaty:
                      type: boolean
                name:
                  type: string
                dateOfBirth:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                placeOfBirth:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    state:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        country:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            callingCode:
                              type: string
                            taxTreaty:
                              type: boolean
                gender:
                  type: string
                  enum:
                  - MALE
                  - FEMALE
                bloodType:
                  type: string
                  enum:
                  - A
                  - B
                  - O
                  - AB
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                    joinDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    startDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    active:
                      type: boolean
                    pointOfHire:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        locationGroup:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        city:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            state:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                country:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    callingCode:
                                      type: string
                                    taxTreaty:
                                      type: boolean
                        latitude:
                          type: number
                        longitude:
                          type: number
                        address:
                          type: string
                        phone:
                          type: string
                        zipCode:
                          type: string
                        headquarter:
                          type: boolean
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                    photo:
                      type: object
                      properties:
                        url:
                          type: string
                    manager:
                      type: object
                      properties:
                        id:
                          type: string
                        identificationNumber:
                          type: string
                        name:
                          type: string
                        joinDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        startDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        active:
                          type: boolean
                        pointOfHire:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            locationGroup:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            city:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                state:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                    country:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        code:
                                          type: string
                                        name:
                                          type: string
                                        callingCode:
                                          type: string
                                        taxTreaty:
                                          type: boolean
                            latitude:
                              type: number
                            longitude:
                              type: number
                            address:
                              type: string
                            phone:
                              type: string
                            zipCode:
                              type: string
                            headquarter:
                              type: boolean
                            company:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                        photo:
                          type: object
                          properties:
                            url:
                              type: string
    EmployeeDetailRequest:
      type: object
      properties:
        bloodType:
          type: string
          enum:
          - A
          - B
          - O
          - AB
        citizenshipId:
          type: string
          description: Country ID
        dateOfBirth:
          type: string
          format: date
          description: YYYY-MM-DD
          default: '1970-01-01'
        foreignLabour:
          type: boolean
          default: false
        gender:
          type: string
          enum:
          - MALE
          - FEMALE
        maritalStatus:
          type: string
          enum:
          - SINGLE
          - MARRIED
          - WIDOW
          - WIDOWER
        name:
          type: string
          minLength: 1
          maxLength: 255
        placeOfBirthId:
          type: string
          description: City ID
        religionId:
          type: string
      required:
      - citizenshipId
      - maritalStatus
      - name
      - religionId
    IdentityCardResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        identityCardType:
          type: string
    EmployeeIdentityCardResponse:
      type: object
      properties:
        id:
          type: string
        identityCard:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            identityCardType:
              type: string
        identityCardNumber:
          type: string
        expiredDate:
          type: string
    EmployeeIdentityCardPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                identityCard:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    identityCardType:
                      type: string
                identityCardNumber:
                  type: string
                expiredDate:
                  type: string
    EmployeeIdentityCardRequest:
      type: object
      properties:
        identityCardId:
          type: string
        identityCardNumber:
          type: string
          minLength: 1
          maxLength: 255
          pattern: '[a-zA-Z0-9]+'
          description: Alphanumeric
        expiredDate:
          type: string
          format: date
      required:
      - identityCardId
      - identityCardNumber
    EmploymentStatusDetailPositionResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        endDate:
          type: string
          format: date
          description: YYYY-MM-DD
    EmploymentStatusDetailResponse:
      type: object
      properties:
        id:
          type: string
        contractStart:
          type: string
          format: date
          description: YYYY-MM-DD
        contractEnd:
          type: string
          format: date
          description: YYYY-MM-DD
        costCenter:
          type: object
          properties:
            id:
              type: string
              format: uuid
            code:
              type: string
            name:
              type: string
            description:
              type: string
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
        employmentStatusNumber:
          type: string
        employmentStatusType:
          type: object
          properties:
            id:
              type: string
            defaultData:
              type: boolean
            employmentStatusNumberType:
              type: string
              enum:
              - PKWT_NUMBER
              - EMPLOYMENT_STATUS_CHANGE_NUMBER
            name:
              type: string
        employmentType:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            employmentGroupCode:
              type: string
            monthDuration:
              type: integer
            permanent:
              type: boolean
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        jobLevel:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            jobPosition:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            level:
              type: number
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        jobTitle:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
            minJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
            maxJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
              format: float
            longitude:
              type: number
              format: float
            headquarter:
              type: boolean
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD, effective date of the location
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD, end date of the location
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            type:
              type: string
              enum:
              - STRUCTURAL
              - FUNCTIONAL
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD
            createdBy:
              type: string
            createdDate:
              type: number
            updatedBy:
              type: string
            updatedDate:
              type: number
            organizationHierarchy:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                color:
                  type: string
                level:
                  type: integer
            organizationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            organizationParent:
              type: object
              deprecated: true
              description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    color:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organizationParent:
                  type: object
                  description: Deprecated. Always null.
                  deprecated: true
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        permanentDate:
          type: string
          format: date
          description: YYYY-MM-DD
        signDate:
          type: string
          format: date
          description: YYYY-MM-DD
        subLocation:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            location:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD or null when ongoing
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD or null when ongoing
        operationalGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        position:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD
    EmploymentStatusPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                contractStart:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                contractEnd:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                costCenter:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    code:
                      type: string
                    name:
                      type: string
                    description:
                      type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        code:
                          type: string
                        name:
                          type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                employmentStatusNumber:
                  type: string
                employmentStatusType:
                  type: object
                  properties:
                    id:
                      type: string
                    defaultData:
                      type: boolean
                    employmentStatusNumberType:
                      type: string
                      enum:
                      - PKWT_NUMBER
                      - EMPLOYMENT_STATUS_CHANGE_NUMBER
                    name:
                      type: string
                employmentType:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    employmentGroupCode:
                      type: string
                    monthDuration:
                      type: integer
                    permanent:
                      type: boolean
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                jobLevel:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    jobPosition:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    level:
                      type: number
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                jobTitle:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                    minJobLevel:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        jobPosition:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        level:
                          type: number
                        effectiveDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                    maxJobLevel:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        jobPosition:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        level:
                          type: number
                        effectiveDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                location:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    locationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    city:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        state:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            country:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                callingCode:
                                  type: string
                                taxTreaty:
                                  type: boolean
                    latitude:
                      type: number
                      format: float
                    longitude:
                      type: number
                      format: float
                    headquarter:
                      type: boolean
                    address:
                      type: string
                    phone:
                      type: string
                    zipCode:
                      type: string
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD, effective date of the location
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD, end date of the location
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        code:
                          type: string
                        name:
                          type: string
                organization:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    type:
                      type: string
                      enum:
                      - STRUCTURAL
                      - FUNCTIONAL
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    createdBy:
                      type: string
                    createdDate:
                      type: number
                    updatedBy:
                      type: string
                    updatedDate:
                      type: number
                    organizationHierarchy:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        color:
                          type: string
                        level:
                          type: integer
                    organizationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    organizationParent:
                      type: object
                      deprecated: true
                      description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        type:
                          type: string
                          enum:
                          - STRUCTURAL
                          - FUNCTIONAL
                        effectiveDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        endDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        createdBy:
                          type: string
                        createdDate:
                          type: number
                        updatedBy:
                          type: string
                        updatedDate:
                          type: number
                        organizationHierarchy:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            color:
                              type: string
                            level:
                              type: integer
                        organizationGroup:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        organizationParent:
                          type: object
                          description: Deprecated. Always null.
                          deprecated: true
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                permanentDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                signDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                subLocation:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    location:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        effectiveDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        endDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD or null when ongoing
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD or null when ongoing
                operationalGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                position:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
    EmployeeIdIdentificationNumberResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
    EmploymentStatusHistoryDetailResponse:
      type: object
      properties:
        id:
          type: string
        contractStart:
          type: string
          format: date
          description: YYYY-MM-DD
        contractEnd:
          type: string
          format: date
          description: YYYY-MM-DD
        costCenter:
          type: object
          properties:
            id:
              type: string
              format: uuid
            code:
              type: string
            name:
              type: string
            description:
              type: string
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        endDate:
          type: string
          format: date
          description: YYYY-MM-DD
        employmentStatusNumber:
          type: string
        employmentStatusType:
          type: object
          properties:
            id:
              type: string
            defaultData:
              type: boolean
            employmentStatusNumberType:
              type: string
              enum:
              - PKWT_NUMBER
              - EMPLOYMENT_STATUS_CHANGE_NUMBER
            name:
              type: string
        employmentType:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            employmentGroupCode:
              type: string
            monthDuration:
              type: integer
            permanent:
              type: boolean
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        jobLevel:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            jobPosition:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            level:
              type: number
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        jobTitle:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
            minJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
            maxJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
              format: float
            longitude:
              type: number
              format: float
            headquarter:
              type: boolean
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD, effective date of the location
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD, end date of the location
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            type:
              type: string
              enum:
              - STRUCTURAL
              - FUNCTIONAL
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD
            createdBy:
              type: string
            createdDate:
              type: number
            updatedBy:
              type: string
            updatedDate:
              type: number
            organizationHierarchy:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                color:
                  type: string
                level:
                  type: integer
            organizationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            organizationParent:
              type: object
              deprecated: true
              description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    color:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organizationParent:
                  type: object
                  description: Deprecated. Always null.
                  deprecated: true
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        permanentDate:
          type: string
          format: date
          description: YYYY-MM-DD
        signDate:
          type: string
          format: date
          description: YYYY-MM-DD
        subLocation:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            location:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD or null when ongoing
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD or null when ongoing
        operationalGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        position:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
    EmploymentStatusHistoryPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                contractStart:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                contractEnd:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                costCenter:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    code:
                      type: string
                    name:
                      type: string
                    description:
                      type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        code:
                          type: string
                        name:
                          type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                employmentStatusNumber:
                  type: string
                employmentStatusType:
                  type: object
                  properties:
                    id:
                      type: string
                    defaultData:
                      type: boolean
                    employmentStatusNumberType:
                      type: string
                      enum:
                      - PKWT_NUMBER
                      - EMPLOYMENT_STATUS_CHANGE_NUMBER
                    name:
                      type: string
                employmentType:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    employmentGroupCode:
                      type: string
                    monthDuration:
                      type: integer
                    permanent:
                      type: boolean
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                jobLevel:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    jobPosition:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    level:
                      type: number
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                jobTitle:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                    minJobLevel:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        jobPosition:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        level:
                          type: number
                        effectiveDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                    maxJobLevel:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        jobPosition:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        level:
                          type: number
                        effectiveDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                location:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    locationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    city:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        state:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            country:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                callingCode:
                                  type: string
                                taxTreaty:
                                  type: boolean
                    latitude:
                      type: number
                      format: float
                    longitude:
                      type: number
                      format: float
                    headquarter:
                      type: boolean
                    address:
                      type: string
                    phone:
                      type: string
                    zipCode:
                      type: string
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD, effective date of the location
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD, end date of the location
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        code:
                          type: string
                        name:
                          type: string
                organization:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    type:
                      type: string
                      enum:
                      - STRUCTURAL
                      - FUNCTIONAL
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    createdBy:
                      type: string
                    createdDate:
                      type: number
                    updatedBy:
                      type: string
                    updatedDate:
                      type: number
                    organizationHierarchy:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        color:
                          type: string
                        level:
                          type: integer
                    organizationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    organizationParent:
                      type: object
                      deprecated: true
                      description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        type:
                          type: string
                          enum:
                          - STRUCTURAL
                          - FUNCTIONAL
                        effectiveDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        endDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        createdBy:
                          type: string
                        createdDate:
                          type: number
                        updatedBy:
                          type: string
                        updatedDate:
                          type: number
                        organizationHierarchy:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            color:
                              type: string
                            level:
                              type: integer
                        organizationGroup:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        organizationParent:
                          type: object
                          description: Deprecated. Always null.
                          deprecated: true
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                permanentDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                signDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                subLocation:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    location:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        effectiveDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD
                        endDate:
                          type: string
                          format: date
                          description: YYYY-MM-DD or null when ongoing
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD or null when ongoing
                operationalGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                position:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
    EmploymentDataPositionResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        assigned:
          type: boolean
        effectiveDate:
          type: string
        endDate:
          type: string
        maxEmployees:
          type: integer
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
    EmploymentDataResponse:
      type: object
      properties:
        id:
          type: string
        contractStart:
          type: string
          format: date
          description: YYYY-MM-DD
        contractEnd:
          type: string
          format: date
          description: YYYY-MM-DD
        costCenter:
          type: object
          properties:
            id:
              type: string
              format: uuid
            code:
              type: string
            name:
              type: string
            description:
              type: string
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        employmentStatusNumber:
          type: string
        employmentStatusType:
          type: object
          properties:
            id:
              type: string
            defaultData:
              type: boolean
            employmentStatusNumberType:
              type: string
              enum:
              - PKWT_NUMBER
              - EMPLOYMENT_STATUS_CHANGE_NUMBER
            name:
              type: string
        employmentType:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            employmentGroupCode:
              type: string
            monthDuration:
              type: integer
            permanent:
              type: boolean
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        jobLevel:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            jobPosition:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            level:
              type: number
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
        jobTitle:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
            minJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
            maxJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
              format: float
            longitude:
              type: number
              format: float
            headquarter:
              type: boolean
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD, effective date of the location
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD, end date of the location
            company:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            type:
              type: string
              enum:
              - STRUCTURAL
              - FUNCTIONAL
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD
            createdBy:
              type: string
            createdDate:
              type: number
            updatedBy:
              type: string
            updatedDate:
              type: number
            organizationHierarchy:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                color:
                  type: string
                level:
                  type: integer
            organizationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            organizationParent:
              type: object
              deprecated: true
              description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    color:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organizationParent:
                  type: object
                  description: Deprecated. Always null.
                  deprecated: true
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        position:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            assigned:
              type: boolean
            effectiveDate:
              type: string
            endDate:
              type: string
            maxEmployees:
              type: integer
            createdBy:
              type: string
            createdDate:
              type: number
            updatedBy:
              type: string
            updatedDate:
              type: number
        permanentDate:
          type: string
          format: date
          description: YYYY-MM-DD
        signDate:
          type: string
          format: date
          description: YYYY-MM-DD
        subLocation:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            location:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD or null when ongoing
            effectiveDate:
              type: string
              format: date
              description: YYYY-MM-DD
            endDate:
              type: string
              format: date
              description: YYYY-MM-DD or null when ongoing
        operationalGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    EmploymentDataRequest:
      type: object
      properties:
        contractStart:
          type: string
          format: date
          description: YYYY-MM-DD
        contractEnd:
          type: string
          format: date
          description: YYYY-MM-DD
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        employmentStatusNumber:
          type: string
          maxLength: 255
        employmentStatusTypeId:
          type: string
        employmentTypeId:
          type: string
        jobLevelId:
          type: string
        jobTitleId:
          type: string
        locationId:
          type: string
        organizationId:
          type: string
        costCenterId:
          type: string
        permanentDate:
          type: string
          format: date
          description: YYYY-MM-DD
        signDate:
          type: string
          format: date
          description: YYYY-MM-DD
        generateEmploymentStatusNumber:
          type: boolean
          default: false
        subLocationId:
          type: string
        operationalGroupId:
          type: string
      required:
      - effectiveDate
      - employmentStatusTypeId
      - employmentTypeId
      - jobLevelId
      - jobTitleId
      - locationId
      - organizationId
      - signDate
      - employmentStatusNumber
    TaxMembershipPeriodResponse:
      type: object
      properties:
        month:
          type: integer
          minimum: 1
          maximum: 12
          description: Month of membership start period
        year:
          type: integer
          minimum: 1970
          description: Year of membership start period
    TaxDependentResponse:
      type: object
      properties:
        name:
          type: string
          description: Name of the tax dependent
        ptkpRelationType:
          type: string
          enum:
          - SPOUSE
          - CHILD
          - PARENT
          description: Relationship type for PTKP calculation
        dateOfBirth:
          type: string
          format: date
          description: Date of birth of the tax dependent
        job:
          type: string
          description: Job or occupation of the tax dependent
    TaxMembershipResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the tax membership
        foreignTaxObject:
          type: boolean
          description: Whether this is a foreign tax object
        kppId:
          type: string
          description: Tax office (KPP) identifier
        linkToPayroll:
          type: boolean
          description: Whether this tax membership is linked to payroll
        membershipEndPeriod:
          allOf:
          - type: object
            properties:
              month:
                type: integer
                minimum: 1
                maximum: 12
                description: Month of membership start period
              year:
                type: integer
                minimum: 1970
                description: Year of membership start period
          description: Period when tax membership ends
        membershipStartPeriod:
          allOf:
          - type: object
            properties:
              month:
                type: integer
                minimum: 1
                maximum: 12
                description: Month of membership start period
              year:
                type: integer
                minimum: 1970
                description: Year of membership start period
          description: Period when tax membership starts
        effectiveEndPeriod:
          allOf:
          - type: object
            properties:
              month:
                type: integer
                minimum: 1
                maximum: 12
                description: Month of membership start period
              year:
                type: integer
                minimum: 1970
                description: Year of membership start period
          description: Period when tax effectiveness ends
        effectiveStartPeriod:
          allOf:
          - type: object
            properties:
              month:
                type: integer
                minimum: 1
                maximum: 12
                description: Month of membership start period
              year:
                type: integer
                minimum: 1970
                description: Year of membership start period
          description: Period when tax becomes effective
        method:
          type: string
          enum:
          - GROSS
          - NETTO
          - GROSS_UP
          - MIX
          - MIX_GROSS_NETTO
          - MIX_NETTO_GROSS
          - MIX_GROSS_UP_GROSS
          description: PPh21 calculation method
        moreThanOneEmployer:
          type: boolean
          description: Whether employee has more than one employer
        npwpAddress:
          type: string
          description: Address registered with NPWP
        npwpNumber:
          type: string
          pattern: ^$|^\d+$
          description: NPWP (Tax ID) number - can be empty or contain only digits
        tin:
          type: string
          description: Tax Identification Number
        previousNetIncome:
          type: number
          format: double
          minimum: 0
          description: Previous net income amount
        previousPaidPph:
          type: number
          format: double
          minimum: 0
          description: Previous paid PPh amount
        ptkpCategoryId:
          type: string
          description: PTKP (Personal Tax Free Income) category identifier
        taxObject:
          type: string
          enum:
          - PERMANENT
          - TEMPORARY
          - MULTI_LEVEL_DISTRIBUTOR
          - INSURANCE_AGENT
          - MERCHANT_GOODS
          - EXPERT_CONTINUOUS
          - EXPERT_NON_CONTINUOUS
          - CONTINUOUS
          - NON_CONTINUOUS
          - COMMISSIONER
          - FORMER_EMPLOYEE
          - EVENT_PARTICIPANT
          - EXPATRIATE
          - EXPERT
          - MEETING_PARTICIPANT
          - COMMITTEE_PARTICIPANT
          - EDUCATION_PARTICIPANT
          - OTHER_PARTICIPANT
          - ADVISOR_LECTURER
          - AUTHOR_RESEARCHER
          - SERVICE_PROVIDER
          - ADVERTISING_AGENT
          - PROJECT_MANAGER
          - INTERMEDIARY
          - ARTIST
          - ATHLETE
          - TEMPORARY_MONTHLY
          - COMPETITION_PARTICIPANT
          description: Type of tax object for the employee
        useRecommendedPeriod:
          type: boolean
        taxDependents:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: Name of the tax dependent
              ptkpRelationType:
                type: string
                enum:
                - SPOUSE
                - CHILD
                - PARENT
                description: Relationship type for PTKP calculation
              dateOfBirth:
                type: string
                format: date
                description: Date of birth of the tax dependent
              job:
                type: string
                description: Job or occupation of the tax dependent
          description: List of tax dependents for PTKP calculation
    TaxMembershipHistoryResponse:
      allOf:
      - type: object
        properties:
          id:
            type: string
            description: Unique identifier for the tax membership
          foreignTaxObject:
            type: boolean
            description: Whether this is a foreign tax object
          kppId:
            type: string
            description: Tax office (KPP) identifier
          linkToPayroll:
            type: boolean
            description: Whether this tax membership is linked to payroll
          membershipEndPeriod:
            allOf:
            - type: object
              properties:
                month:
                  type: integer
                  minimum: 1
                  maximum: 12
                  description: Month of membership start period
                year:
                  type: integer
                  minimum: 1970
                  description: Year of membership start period
            description: Period when tax membership ends
          membershipStartPeriod:
            allOf:
            - type: object
              properties:
                month:
                  type: integer
                  minimum: 1
                  maximum: 12
                  description: Month of membership start period
                year:
                  type: integer
                  minimum: 1970
                  description: Year of membership start period
            description: Period when tax membership starts
          effectiveEndPeriod:
            allOf:
            - type: object
              properties:
                month:
                  type: integer
                  minimum: 1
                  maximum: 12
                  description: Month of membership start period
                year:
                  type: integer
                  minimum: 1970
                  description: Year of membership start period
            description: Period when tax effectiveness ends
          effectiveStartPeriod:
            allOf:
            - type: object
              properties:
                month:
                  type: integer
                  minimum: 1
                  maximum: 12
                  description: Month of membership start period
                year:
                  type: integer
                  minimum: 1970
                  description: Year of membership start period
            description: Period when tax becomes effective
          method:
            type: string
            enum:
            - GROSS
            - NETTO
            - GROSS_UP
            - MIX
            - MIX_GROSS_NETTO
            - MIX_NETTO_GROSS
            - MIX_GROSS_UP_GROSS
            description: PPh21 calculation method
          moreThanOneEmployer:
            type: boolean
            description: Whether employee has more than one employer
          npwpAddress:
            type: string
            description: Address registered with NPWP
          npwpNumber:
            type: string
            pattern: ^$|^\d+$
            description: NPWP (Tax ID) number - can be empty or contain only digits
          tin:
            type: string
            description: Tax Identification Number
          previousNetIncome:
            type: number
            format: double
            minimum: 0
            description: Previous net income amount
          previousPaidPph:
            type: number
            format: double
            minimum: 0
            description: Previous paid PPh amount
          ptkpCategoryId:
            type: string
            description: PTKP (Personal Tax Free Income) category identifier
          taxObject:
            type: string
            enum:
            - PERMANENT
            - TEMPORARY
            - MULTI_LEVEL_DISTRIBUTOR
            - INSURANCE_AGENT
            - MERCHANT_GOODS
            - EXPERT_CONTINUOUS
            - EXPERT_NON_CONTINUOUS
            - CONTINUOUS
            - NON_CONTINUOUS
            - COMMISSIONER
            - FORMER_EMPLOYEE
            - EVENT_PARTICIPANT
            - EXPATRIATE
            - EXPERT
            - MEETING_PARTICIPANT
            - COMMITTEE_PARTICIPANT
            - EDUCATION_PARTICIPANT
            - OTHER_PARTICIPANT
            - ADVISOR_LECTURER
            - AUTHOR_RESEARCHER
            - SERVICE_PROVIDER
            - ADVERTISING_AGENT
            - PROJECT_MANAGER
            - INTERMEDIARY
            - ARTIST
            - ATHLETE
            - TEMPORARY_MONTHLY
            - COMPETITION_PARTICIPANT
            description: Type of tax object for the employee
          useRecommendedPeriod:
            type: boolean
          taxDependents:
            type: array
            items:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the tax dependent
                ptkpRelationType:
                  type: string
                  enum:
                  - SPOUSE
                  - CHILD
                  - PARENT
                  description: Relationship type for PTKP calculation
                dateOfBirth:
                  type: string
                  format: date
                  description: Date of birth of the tax dependent
                job:
                  type: string
                  description: Job or occupation of the tax dependent
            description: List of tax dependents for PTKP calculation
      - type: object
        properties:
          employee:
            type: object
            properties:
              id:
                type: string
              identificationNumber:
                type: string
              name:
                type: string
    TaxDependentRequest:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the tax dependent
        name:
          type: string
          maxLength: 100
          description: Name of the tax dependent
        ptkpRelationType:
          type: string
          enum:
          - CHILD
          - SPOUSE
          - PARENT
          description: Relationship type for PTKP calculation
        dateOfBirth:
          type: string
          format: date
          description: Date of birth of the tax dependent (YYYY-MM-DD).
        job:
          type: string
          maxLength: 100
          description: Job or occupation of the tax dependent
      required:
      - name
      - ptkpRelationType
      - dateOfBirth
    TaxMembershipTaxSubjectRequest:
      type: object
      properties:
        npwpAddress:
          type: string
          description: Address registered with NPWP
        npwpNumber:
          type: string
          pattern: ^$|^\d+$
          description: NPWP (Tax ID) number - can be empty or contain only digits
        idTku:
          type: string
          description: TKU (Tax Knowledge Unit) identifier
        tin:
          type: string
          description: Tax Identification Number
        kppId:
          type: string
          description: Tax office (KPP) identifier
        ptkpCategoryId:
          type: string
          description: PTKP (Personal Tax Free Income) category identifier
        taxDependents:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Unique identifier for the tax dependent
              name:
                type: string
                maxLength: 100
                description: Name of the tax dependent
              ptkpRelationType:
                type: string
                enum:
                - CHILD
                - SPOUSE
                - PARENT
                description: Relationship type for PTKP calculation
              dateOfBirth:
                type: string
                format: date
                description: Date of birth of the tax dependent (YYYY-MM-DD).
              job:
                type: string
                maxLength: 100
                description: Job or occupation of the tax dependent
            required:
            - name
            - ptkpRelationType
            - dateOfBirth
          description: List of tax dependents for PTKP calculation
      required:
      - npwpAddress
      additionalProperties: false
    TerminationReasonResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        terminationPph21Reason:
          type: string
        terminationBpjsManpowerReason:
          type: string
        terminationReasonCategory:
          type: string
        severance:
          type: boolean
    TerminationEntryResponse:
      type: object
      properties:
        id:
          type: string
        terminationCode:
          type: string
        effectiveDate:
          type: string
        payrollMethod:
          type: string
        terminationReason:
          type: object
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
            terminationPph21Reason:
              type: string
            terminationBpjsManpowerReason:
              type: string
            terminationReasonCategory:
              type: string
            severance:
              type: boolean
        bpjsManpowerEndDate:
          type: string
        bpjsHealthcareEndDate:
          type: string
        pph21MembershipEndDate:
          type: string
        requestDate:
          type: string
        servicePeriodBy:
          type: string
        rehire:
          type: boolean
        approvalStatus:
          type: string
          enum:
          - APPROVED
          - REJECTED
          - WAITING_FOR_APPROVAL
    TerminationEntryRequest:
      type: object
      properties:
        terminationCode:
          type: string
        payrollMethod:
          type: string
          enum:
          - FULL
          - PROPORTIONAL
        terminationReasonId:
          type: string
        requestDate:
          type: string
          format: date
          description: YYYY-MM-DD
        bpjsManpowerEndDate:
          type: string
          format: date
          description: YYYY-MM-DD
        servicePeriodBy:
          type: string
          enum:
          - JOIN_DATE
          - START_DATE
          - PERMANENT_DATE
        pph21MembershipEndDate:
          type: string
          format: date
          description: YYYY-MM-DD
        bpjsHealthcareEndDate:
          type: string
          format: date
          description: YYYY-MM-DD
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
        rehire:
          type: boolean
          deprecated: true
          description: Deprecated field that no longer has any effect on terminated employee pages
      required:
      - payrollMethod
      - terminationReasonId
      - requestDate
      - bpjsManpowerEndDate
      - pph21MembershipEndDate
      - bpjsHealthcareEndDate
      - effectiveDate
      - rehire
    ManagerRequest:
      type: object
      properties:
        managerId:
          type: string
      required:
      - managerId
    EmployeeHiringDataSimpleResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
        joinDate:
          type: string
          format: date
        name:
          type: string
        startDate:
          type: string
          format: date
    EmployeeHiringDataRequest:
      type: object
      properties:
        identificationNumber:
          type: string
        joinDate:
          type: string
          format: date
        name:
          type: string
        startDate:
          type: string
          format: date
        pointOfHireId:
          type: string
      required:
      - identificationNumber
      - joinDate
      - name
      - startDate
    EmployeeHiringDataResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
        joinDate:
          type: string
          format: date
        name:
          type: string
        startDate:
          type: string
          format: date
        pointOfHire:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            locationGroup:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            city:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            latitude:
              type: number
            longitude:
              type: number
            address:
              type: string
            phone:
              type: string
            zipCode:
              type: string
            headquarter:
              type: boolean
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        photo:
          type: object
          properties:
            url:
              type: string
        manager:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
            joinDate:
              type: string
              format: date
              description: YYYY-MM-DD
            startDate:
              type: string
              format: date
              description: YYYY-MM-DD
            active:
              type: boolean
            pointOfHire:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                locationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                city:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    state:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        country:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            callingCode:
                              type: string
                            taxTreaty:
                              type: boolean
                latitude:
                  type: number
                longitude:
                  type: number
                address:
                  type: string
                phone:
                  type: string
                zipCode:
                  type: string
                headquarter:
                  type: boolean
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
            photo:
              type: object
              properties:
                url:
                  type: string
    PayslipDownloadRequest:
      type: object
      properties:
        paymentDate:
          type: string
          format: date
        type:
          type: string
      required:
      - paymentDate
      - type
    FamilyApprovalResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        gender:
          type: string
          enum:
          - MALE
          - FEMALE
        dateOfBirth:
          type: string
        identityCardNumber:
          type: string
        familyRelation:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            relationType:
              type: string
              enum:
              - MOTHER
              - FATHER
              - SPOUSE
              - FIRST_CHILD
              - SECOND_CHILD
              - THIRD_CHILD
              - OTHER_CHILD
              - OTHER
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        placeOfBirth:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            state:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                country:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    callingCode:
                      type: string
                    taxTreaty:
                      type: boolean
        alive:
          type: boolean
        dateOfDeath:
          type: string
        maritalStatus:
          type: string
          enum:
          - SINGLE
          - MARRIED
          - WIDOW
          - WIDOWER
        marriageDate:
          type: string
        religion:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
        educationLevel:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
        job:
          type: string
        mobilePhone:
          type: string
        description:
          type: string
    FamilyApprovalListItemResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        gender:
          type: string
          enum:
          - MALE
          - FEMALE
        dateOfBirth:
          type: string
        identityCardNumber:
          type: string
        familyRelation:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            relationType:
              type: string
              enum:
              - MOTHER
              - FATHER
              - SPOUSE
              - FIRST_CHILD
              - SECOND_CHILD
              - THIRD_CHILD
              - OTHER_CHILD
              - OTHER
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        placeOfBirth:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            state:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                country:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    callingCode:
                      type: string
                    taxTreaty:
                      type: boolean
        alive:
          type: boolean
        dateOfDeath:
          type: string
        maritalStatus:
          type: string
          enum:
          - SINGLE
          - MARRIED
          - WIDOW
          - WIDOWER
        marriageDate:
          type: string
        religion:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
        educationLevel:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
        job:
          type: string
        mobilePhone:
          type: string
        description:
          type: string
        family:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            gender:
              type: string
              enum:
              - MALE
              - FEMALE
            dateOfBirth:
              type: string
            identityCardNumber:
              type: string
            familyRelation:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
                relationType:
                  type: string
                  enum:
                  - MOTHER
                  - FATHER
                  - SPOUSE
                  - FIRST_CHILD
                  - SECOND_CHILD
                  - THIRD_CHILD
                  - OTHER_CHILD
                  - OTHER
            employee:
              type: object
              properties:
                id:
                  type: string
                identificationNumber:
                  type: string
                name:
                  type: string
            placeOfBirth:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            alive:
              type: boolean
            dateOfDeath:
              type: string
            maritalStatus:
              type: string
              enum:
              - SINGLE
              - MARRIED
              - WIDOW
              - WIDOWER
            marriageDate:
              type: string
            religion:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
            educationLevel:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
            job:
              type: string
            mobilePhone:
              type: string
            description:
              type: string
        approvalStatus:
          type: string
          enum:
          - APPROVED
          - REJECTED
          - OPEN
          - WAITING_FOR_APPROVAL
        rejectionReason:
          type: string
    FamilyApprovalPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                gender:
                  type: string
                  enum:
                  - MALE
                  - FEMALE
                dateOfBirth:
                  type: string
                identityCardNumber:
                  type: string
                familyRelation:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                    relationType:
                      type: string
                      enum:
                      - MOTHER
                      - FATHER
                      - SPOUSE
                      - FIRST_CHILD
                      - SECOND_CHILD
                      - THIRD_CHILD
                      - OTHER_CHILD
                      - OTHER
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                placeOfBirth:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    state:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        country:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            callingCode:
                              type: string
                            taxTreaty:
                              type: boolean
                alive:
                  type: boolean
                dateOfDeath:
                  type: string
                maritalStatus:
                  type: string
                  enum:
                  - SINGLE
                  - MARRIED
                  - WIDOW
                  - WIDOWER
                marriageDate:
                  type: string
                religion:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                educationLevel:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                job:
                  type: string
                mobilePhone:
                  type: string
                description:
                  type: string
                family:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    gender:
                      type: string
                      enum:
                      - MALE
                      - FEMALE
                    dateOfBirth:
                      type: string
                    identityCardNumber:
                      type: string
                    familyRelation:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        code:
                          type: string
                        relationType:
                          type: string
                          enum:
                          - MOTHER
                          - FATHER
                          - SPOUSE
                          - FIRST_CHILD
                          - SECOND_CHILD
                          - THIRD_CHILD
                          - OTHER_CHILD
                          - OTHER
                    employee:
                      type: object
                      properties:
                        id:
                          type: string
                        identificationNumber:
                          type: string
                        name:
                          type: string
                    placeOfBirth:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        state:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            country:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                                callingCode:
                                  type: string
                                taxTreaty:
                                  type: boolean
                    alive:
                      type: boolean
                    dateOfDeath:
                      type: string
                    maritalStatus:
                      type: string
                      enum:
                      - SINGLE
                      - MARRIED
                      - WIDOW
                      - WIDOWER
                    marriageDate:
                      type: string
                    religion:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        code:
                          type: string
                    educationLevel:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        code:
                          type: string
                    job:
                      type: string
                    mobilePhone:
                      type: string
                    description:
                      type: string
                approvalStatus:
                  type: string
                  enum:
                  - APPROVED
                  - REJECTED
                  - OPEN
                  - WAITING_FOR_APPROVAL
                rejectionReason:
                  type: string
    StateRequest:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        country:
          type: object
          properties:
            code:
              type: string
              minLength: 1
              maxLength: 255
            callingCode:
              type: string
              minLength: 1
              maxLength: 5
              pattern: ^\+\d{1,5}$
              description: e.g. `+62`
            name:
              type: string
              minLength: 1
              maxLength: 255
            taxTreaty:
              type: boolean
              default: false
          required:
          - code
          - callingCode
          - name
    PlaceOfBirthRequest:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        state:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            country:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                  maxLength: 255
                callingCode:
                  type: string
                  minLength: 1
                  maxLength: 5
                  pattern: ^\+\d{1,5}$
                  description: e.g. `+62`
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                taxTreaty:
                  type: boolean
                  default: false
              required:
              - code
              - callingCode
              - name
    FamilyApprovalRequest:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
        gender:
          type: string
          enum:
          - MALE
          - FEMALE
        dateOfBirth:
          type: string
          format: date
          description: YYYY-MM-DD
        identityCardNumber:
          type: string
          maxLength: 255
        familyRelation:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        placeOfBirth:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            state:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                country:
                  type: object
                  properties:
                    code:
                      type: string
                      minLength: 1
                      maxLength: 255
                    callingCode:
                      type: string
                      minLength: 1
                      maxLength: 5
                      pattern: ^\+\d{1,5}$
                      description: e.g. `+62`
                    name:
                      type: string
                      minLength: 1
                      maxLength: 255
                    taxTreaty:
                      type: boolean
                      default: false
                  required:
                  - code
                  - callingCode
                  - name
        alive:
          type: boolean
          default: true
        dateOfDeath:
          type: string
          format: date
          description: If left **null** and the individual is marked as **not alive**, the system will automatically set the date of death to the default value of `December 31, 9999`
        maritalStatus:
          type: string
          enum:
          - SINGLE
          - MARRIED
          - WIDOW
          - WIDOWER
        marriageDate:
          type: string
          format: date
          description: YYYY-MM-DD
        religion:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        educationLevel:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        job:
          type: string
          maxLength: 255
          pattern: '[a-zA-Z0-9 ]+'
          description: Alphanumeric with space, e.g. `Software Engineer 1`
        mobilePhone:
          type: string
          maxLength: 255
          pattern: ^[+]{1}[0-9-() ]+
          description: e.g. `+6281234567890`
        description:
          type: string
          maxLength: 65535
      required:
      - name
      - gender
      - familyRelation
    FamilyApprovalListItemWithApprovalStatusResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        gender:
          type: string
          enum:
          - MALE
          - FEMALE
        dateOfBirth:
          type: string
        identityCardNumber:
          type: string
        familyRelation:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            relationType:
              type: string
              enum:
              - MOTHER
              - FATHER
              - SPOUSE
              - FIRST_CHILD
              - SECOND_CHILD
              - THIRD_CHILD
              - OTHER_CHILD
              - OTHER
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        placeOfBirth:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            state:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                country:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    callingCode:
                      type: string
                    taxTreaty:
                      type: boolean
        alive:
          type: boolean
        dateOfDeath:
          type: string
        maritalStatus:
          type: string
          enum:
          - SINGLE
          - MARRIED
          - WIDOW
          - WIDOWER
        marriageDate:
          type: string
        religion:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
        educationLevel:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
        job:
          type: string
        mobilePhone:
          type: string
        description:
          type: string
        family:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            gender:
              type: string
              enum:
              - MALE
              - FEMALE
            dateOfBirth:
              type: string
            identityCardNumber:
              type: string
            familyRelation:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
                relationType:
                  type: string
                  enum:
                  - MOTHER
                  - FATHER
                  - SPOUSE
                  - FIRST_CHILD
                  - SECOND_CHILD
                  - THIRD_CHILD
                  - OTHER_CHILD
                  - OTHER
            employee:
              type: object
              properties:
                id:
                  type: string
                identificationNumber:
                  type: string
                name:
                  type: string
            placeOfBirth:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                state:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    country:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        callingCode:
                          type: string
                        taxTreaty:
                          type: boolean
            alive:
              type: boolean
            dateOfDeath:
              type: string
            maritalStatus:
              type: string
              enum:
              - SINGLE
              - MARRIED
              - WIDOW
              - WIDOWER
            marriageDate:
              type: string
            religion:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
            educationLevel:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
            job:
              type: string
            mobilePhone:
              type: string
            description:
              type: string
        approvalStatus:
          type: string
          enum:
          - APPROVED
          - REJECTED
          - OPEN
          - WAITING_FOR_APPROVAL
        rejectionReason:
          type: string
    JobExperienceOrganizationResponse:
      type: object
      allOf:
      - type: object
        properties:
          id:
            type: string
          code:
            type: string
          name:
            type: string
      - type: object
        properties:
          type:
            type: string
            enum:
            - STRUCTURAL
            - FUNCTIONAL
          company:
            type: object
            properties:
              id:
                type: string
              code:
                type: string
              name:
                type: string
    JobExperienceJobLevelResponse:
      type: object
      allOf:
      - type: object
        properties:
          id:
            type: string
          code:
            type: string
          name:
            type: string
      - type: object
        properties:
          level:
            type: integer
    JobExperienceEmploymentStatusResponse:
      type: object
      properties:
        id:
          type: string
        employmentStatusNumber:
          type: string
        effectiveDate:
          type: string
          format: date
        organization:
          type: object
          allOf:
          - type: object
            properties:
              id:
                type: string
              code:
                type: string
              name:
                type: string
          - type: object
            properties:
              type:
                type: string
                enum:
                - STRUCTURAL
                - FUNCTIONAL
              company:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
        jobLevel:
          type: object
          allOf:
          - type: object
            properties:
              id:
                type: string
              code:
                type: string
              name:
                type: string
          - type: object
            properties:
              level:
                type: integer
        employmentType:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        jobTitle:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        costCenter:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        position:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    JobExperienceEmployeeResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
        name:
          type: string
        employmentStatus:
          type: object
          properties:
            id:
              type: string
            employmentStatusNumber:
              type: string
            effectiveDate:
              type: string
              format: date
            organization:
              type: object
              allOf:
              - type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                    - STRUCTURAL
                    - FUNCTIONAL
                  company:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
            jobLevel:
              type: object
              allOf:
              - type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
              - type: object
                properties:
                  level:
                    type: integer
            employmentType:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            jobTitle:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            location:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            costCenter:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            position:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
    BaseJobExperienceResponse:
      type: object
      properties:
        id:
          type: string
        companyName:
          type: string
        jobTitle:
          type: string
        jobLevel:
          type: string
        startDate:
          type: string
          format: date
        endDate:
          type: string
          format: date
        companyBusiness:
          type: string
        terminationReasonInput:
          type: string
        companyLocation:
          type: string
        lastSalary:
          type: number
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
            employmentStatus:
              type: object
              properties:
                id:
                  type: string
                employmentStatusNumber:
                  type: string
                effectiveDate:
                  type: string
                  format: date
                organization:
                  type: object
                  allOf:
                  - type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - STRUCTURAL
                        - FUNCTIONAL
                      company:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                jobLevel:
                  type: object
                  allOf:
                  - type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  - type: object
                    properties:
                      level:
                        type: integer
                employmentType:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                jobTitle:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                location:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                costCenter:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                position:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
        references:
          type: array
          items:
            type: string
    JobExperienceResponse:
      type: object
      properties:
        jobExperience:
          type: object
          allOf:
          - type: object
            properties:
              id:
                type: string
              companyName:
                type: string
              jobTitle:
                type: string
              jobLevel:
                type: string
              startDate:
                type: string
                format: date
              endDate:
                type: string
                format: date
              companyBusiness:
                type: string
              terminationReasonInput:
                type: string
              companyLocation:
                type: string
              lastSalary:
                type: number
              employee:
                type: object
                properties:
                  id:
                    type: string
                  identificationNumber:
                    type: string
                  name:
                    type: string
                  employmentStatus:
                    type: object
                    properties:
                      id:
                        type: string
                      employmentStatusNumber:
                        type: string
                      effectiveDate:
                        type: string
                        format: date
                      organization:
                        type: object
                        allOf:
                        - type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                              - STRUCTURAL
                              - FUNCTIONAL
                            company:
                              type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                      jobLevel:
                        type: object
                        allOf:
                        - type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        - type: object
                          properties:
                            level:
                              type: integer
                      employmentType:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      jobTitle:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      location:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      costCenter:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      position:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
              references:
                type: array
                items:
                  type: string
        approvalStatus:
          type: string
          enum:
          - APPROVED
          - REJECTED
          - OPEN
          - WAITING_FOR_APPROVAL
        rejectionReason:
          type: string
        action:
          type: string
          enum:
          - NONE
          - ADD
          - EDIT
          - DELETE
          - DELETE_ALL
    JobExperienceApprovalResponse:
      type: object
      allOf:
      - type: object
        properties:
          id:
            type: string
          companyName:
            type: string
          jobTitle:
            type: string
          jobLevel:
            type: string
          startDate:
            type: string
            format: date
          endDate:
            type: string
            format: date
          companyBusiness:
            type: string
          terminationReasonInput:
            type: string
          companyLocation:
            type: string
          lastSalary:
            type: number
          employee:
            type: object
            properties:
              id:
                type: string
              identificationNumber:
                type: string
              name:
                type: string
              employmentStatus:
                type: object
                properties:
                  id:
                    type: string
                  employmentStatusNumber:
                    type: string
                  effectiveDate:
                    type: string
                    format: date
                  organization:
                    type: object
                    allOf:
                    - type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    - type: object
                      properties:
                        type:
                          type: string
                          enum:
                          - STRUCTURAL
                          - FUNCTIONAL
                        company:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                  jobLevel:
                    type: object
                    allOf:
                    - type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    - type: object
                      properties:
                        level:
                          type: integer
                  employmentType:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  jobTitle:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  location:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  costCenter:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
                  position:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
          references:
            type: array
            items:
              type: string
      - type: object
        properties:
          jobExperience:
            type: object
            allOf:
            - type: object
              properties:
                id:
                  type: string
                companyName:
                  type: string
                jobTitle:
                  type: string
                jobLevel:
                  type: string
                startDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
                companyBusiness:
                  type: string
                terminationReasonInput:
                  type: string
                companyLocation:
                  type: string
                lastSalary:
                  type: number
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                    employmentStatus:
                      type: object
                      properties:
                        id:
                          type: string
                        employmentStatusNumber:
                          type: string
                        effectiveDate:
                          type: string
                          format: date
                        organization:
                          type: object
                          allOf:
                          - type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                - STRUCTURAL
                                - FUNCTIONAL
                              company:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  code:
                                    type: string
                                  name:
                                    type: string
                        jobLevel:
                          type: object
                          allOf:
                          - type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          - type: object
                            properties:
                              level:
                                type: integer
                        employmentType:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        jobTitle:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        location:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        costCenter:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        position:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                references:
                  type: array
                  items:
                    type: string
          approvalStatus:
            type: string
            enum:
            - APPROVED
            - REJECTED
            - OPEN
            - WAITING_FOR_APPROVAL
          rejectionReason:
            type: string
          action:
            type: string
            enum:
            - NONE
            - ADD
            - EDIT
            - DELETE
            - DELETE_ALL
    JobExperienceApprovalPageResponse:
      type: object
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              allOf:
              - type: object
                properties:
                  id:
                    type: string
                  companyName:
                    type: string
                  jobTitle:
                    type: string
                  jobLevel:
                    type: string
                  startDate:
                    type: string
                    format: date
                  endDate:
                    type: string
                    format: date
                  companyBusiness:
                    type: string
                  terminationReasonInput:
                    type: string
                  companyLocation:
                    type: string
                  lastSalary:
                    type: number
                  employee:
                    type: object
                    properties:
                      id:
                        type: string
                      identificationNumber:
                        type: string
                      name:
                        type: string
                      employmentStatus:
                        type: object
                        properties:
                          id:
                            type: string
                          employmentStatusNumber:
                            type: string
                          effectiveDate:
                            type: string
                            format: date
                          organization:
                            type: object
                            allOf:
                            - type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            - type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                  - STRUCTURAL
                                  - FUNCTIONAL
                                company:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                          jobLevel:
                            type: object
                            allOf:
                            - type: object
                              properties:
                                id:
                                  type: string
                                code:
                                  type: string
                                name:
                                  type: string
                            - type: object
                              properties:
                                level:
                                  type: integer
                          employmentType:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          jobTitle:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          location:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          costCenter:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                          position:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
                  references:
                    type: array
                    items:
                      type: string
              - type: object
                properties:
                  jobExperience:
                    type: object
                    allOf:
                    - type: object
                      properties:
                        id:
                          type: string
                        companyName:
                          type: string
                        jobTitle:
                          type: string
                        jobLevel:
                          type: string
                        startDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                        companyBusiness:
                          type: string
                        terminationReasonInput:
                          type: string
                        companyLocation:
                          type: string
                        lastSalary:
                          type: number
                        employee:
                          type: object
                          properties:
                            id:
                              type: string
                            identificationNumber:
                              type: string
                            name:
                              type: string
                            employmentStatus:
                              type: object
                              properties:
                                id:
                                  type: string
                                employmentStatusNumber:
                                  type: string
                                effectiveDate:
                                  type: string
                                  format: date
                                organization:
                                  type: object
                                  allOf:
                                  - type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  - type: object
                                    properties:
                                      type:
                                        type: string
                                        enum:
                                        - STRUCTURAL
                                        - FUNCTIONAL
                                      company:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          code:
                                            type: string
                                          name:
                                            type: string
                                jobLevel:
                                  type: object
                                  allOf:
                                  - type: object
                                    properties:
                                      id:
                                        type: string
                                      code:
                                        type: string
                                      name:
                                        type: string
                                  - type: object
                                    properties:
                                      level:
                                        type: integer
                                employmentType:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                jobTitle:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                location:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                costCenter:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                                position:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    code:
                                      type: string
                                    name:
                                      type: string
                        references:
                          type: array
                          items:
                            type: string
                  approvalStatus:
                    type: string
                    enum:
                    - APPROVED
                    - REJECTED
                    - OPEN
                    - WAITING_FOR_APPROVAL
                  rejectionReason:
                    type: string
                  action:
                    type: string
                    enum:
                    - NONE
                    - ADD
                    - EDIT
                    - DELETE
                    - DELETE_ALL
    PaymentItemGroupLastSequenceResponse:
      type: object
      properties:
        employeeId:
          type: string
        lastSequence:
          type: integer
    PaymentItemGroupSequenceResponse:
      type: object
      properties:
        employeeId:
          type: string
        paymentItemGroupId:
          type: string
        sequence:
          type: integer
        previousSequence:
          type: integer
    PaymentItemGroupSequencePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                employeeId:
                  type: string
                paymentItemGroupId:
                  type: string
                sequence:
                  type: integer
                previousSequence:
                  type: integer
    EmployeeVariableValidationResponse:
      type: object
      properties:
        type:
          type: string
          enum:
          - MIN
          - MAX
          - OPTION
        value:
          type: number
        options:
          type: array
          items:
            type: string
    EmployeeVariableMetadataResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
          enum:
          - STRING
          - NUMBER
        periodic:
          type: boolean
        description:
          type: string
        validations:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                - MIN
                - MAX
                - OPTION
              value:
                type: number
              options:
                type: array
                items:
                  type: string
    EmployeeVariableMetadataPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRING
                  - NUMBER
                periodic:
                  type: boolean
                description:
                  type: string
                validations:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - MIN
                        - MAX
                        - OPTION
                      value:
                        type: number
                      options:
                        type: array
                        items:
                          type: string
    EmployeeVariableValidationRequest:
      type: object
      properties:
        type:
          type: string
          enum:
          - MIN
          - MAX
          - OPTION
        value:
          type: number
        options:
          type: array
          items:
            type: string
    EmployeeVariableMetadataRequest:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
          enum:
          - STRING
          - NUMBER
        periodic:
          type: boolean
        description:
          type: string
        validations:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                - MIN
                - MAX
                - OPTION
              value:
                type: number
              options:
                type: array
                items:
                  type: string
      required:
      - name
      - type
      - periodic
    EmployeeVariableResponse:
      type: object
      properties:
        id:
          type: string
        employeeId:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        name:
          type: string
        date:
          type: string
          format: date
        value:
          type: string
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
    EmployeeVariablePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employeeId:
                  type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                name:
                  type: string
                date:
                  type: string
                  format: date
                value:
                  type: string
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
    EmployeeVariableRequest:
      type: object
      properties:
        employeeId:
          type: string
        name:
          type: string
        date:
          type: string
          format: date
        value:
          type: string
      required:
      - employeeId
      - name
      - date
      - value
    EmployeeVariableListRequest:
      type: array
      items:
        type: object
        properties:
          employeeId:
            type: string
          name:
            type: string
          date:
            type: string
            format: date
          value:
            type: string
        required:
        - employeeId
        - name
        - date
        - value
      maxItems: 50
      minItems: 1
    EmployeeVariableListResponse:
      type: array
      items:
        type: object
        properties:
          id:
            type: string
          employeeId:
            type: string
          employee:
            type: object
            properties:
              id:
                type: string
              identificationNumber:
                type: string
              name:
                type: string
          name:
            type: string
          date:
            type: string
            format: date
          value:
            type: string
          createdBy:
            type: string
          createdDate:
            type: number
          updatedBy:
            type: string
          updatedDate:
            type: number
    CountResponse:
      type: object
      properties:
        count:
          type: integer
    FamilyHistoricalResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        gender:
          type: string
          enum:
          - MALE
          - FEMALE
        dateOfBirth:
          type: string
          format: date
          description: YYYY-MM-DD
          default: '1970-01-01'
        familyRelation:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            relationType:
              type: string
              enum:
              - MOTHER
              - FATHER
              - SPOUSE
              - FIRST_CHILD
              - SECOND_CHILD
              - THIRD_CHILD
              - OTHER_CHILD
              - OTHER
        effectiveDate:
          type: string
          format: date
          description: YYYY-MM-DD
          default: '1970-01-01'
        endDate:
          type: string
          format: date
          description: YYYY-MM-DD
          default: '1970-01-01'
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
    FamilyHistoricalPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                gender:
                  type: string
                  enum:
                  - MALE
                  - FEMALE
                dateOfBirth:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                  default: '1970-01-01'
                familyRelation:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                    relationType:
                      type: string
                      enum:
                      - MOTHER
                      - FATHER
                      - SPOUSE
                      - FIRST_CHILD
                      - SECOND_CHILD
                      - THIRD_CHILD
                      - OTHER_CHILD
                      - OTHER
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                  default: '1970-01-01'
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                  default: '1970-01-01'
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
    EmploymentStatusTypePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                defaultData:
                  type: boolean
                employmentStatusNumberType:
                  type: string
                  enum:
                  - PKWT_NUMBER
                  - EMPLOYMENT_STATUS_CHANGE_NUMBER
                name:
                  type: string
    EmploymentTypePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                employmentGroupCode:
                  type: string
                monthDuration:
                  type: integer
                permanent:
                  type: boolean
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
    EmploymentTypeRequest:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
        employmentGroupCode:
          type: string
          minLength: 1
          maxLength: 3
          pattern: '[a-zA-Z0-9]+'
        monthDuration:
          type: integer
          minimum: 0
          maximum: 60
        permanent:
          type: boolean
          default: false
        effectiveDate:
          type: string
          format: date
          description: Effective date for the employment type. Defaults to minimum date if not provided.
        endDate:
          type: string
          format: date
          description: End date for the employment type
      required:
      - name
      - employmentGroupCode
      - monthDuration
      - effectiveDate
    FamilyMemberRelationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
                relationType:
                  type: string
                  enum:
                  - MOTHER
                  - FATHER
                  - SPOUSE
                  - FIRST_CHILD
                  - SECOND_CHILD
                  - THIRD_CHILD
                  - OTHER_CHILD
                  - OTHER
    FieldOfStudyPageResponse:
      allOf:
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
    FormerEmployeeIncomeResponse:
      type: object
      properties:
        id:
          type: string
          description: Former employee income ID
        itemName:
          type: string
          description: Income item name
        itemType:
          type: string
          description: Income item type
        referenceDate:
          type: string
          format: date
          description: Reference date
        pph21Method:
          type: string
          description: PPH21 calculation method
        minimumLastWorkingDate:
          type: string
          format: date
          description: Minimum last working date
        proportionalMethod:
          type: string
          description: Proportional calculation method
        proportionalDays:
          type: integer
          description: Number of proportional days
        formula:
          type: string
          description: Calculation formula
    FormerEmployeeIncomeEmployeeResponse:
      type: object
      properties:
        id:
          type: string
          description: Former employee income employee ID
        formerEmployeeIncome:
          type: object
          properties:
            id:
              type: string
              description: Former employee income ID
            itemName:
              type: string
              description: Income item name
            itemType:
              type: string
              description: Income item type
            referenceDate:
              type: string
              format: date
              description: Reference date
            pph21Method:
              type: string
              description: PPH21 calculation method
            minimumLastWorkingDate:
              type: string
              format: date
              description: Minimum last working date
            proportionalMethod:
              type: string
              description: Proportional calculation method
            proportionalDays:
              type: integer
              description: Number of proportional days
            formula:
              type: string
              description: Calculation formula
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        amount:
          type: number
          description: Income amount
        lastWorkingDate:
          type: string
          format: date
          description: Last working date
        paymentDate:
          type: string
          format: date
          description: Payment date
        paymentMethod:
          type: string
          enum:
          - CASH
          - TRANSFER
          - NONE
          description: Payment method
        totalThp:
          type: number
          description: Total take home pay
        originalTax:
          type: number
          description: Original tax amount
        penaltyTax:
          type: number
          description: Penalty tax amount
        taxAllowance:
          type: number
          description: Tax allowance amount
    FormerEmployeeIncomeEmployeePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            description: List of former employee income employees
            items:
              type: object
              properties:
                id:
                  type: string
                  description: Former employee income employee ID
                formerEmployeeIncome:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Former employee income ID
                    itemName:
                      type: string
                      description: Income item name
                    itemType:
                      type: string
                      description: Income item type
                    referenceDate:
                      type: string
                      format: date
                      description: Reference date
                    pph21Method:
                      type: string
                      description: PPH21 calculation method
                    minimumLastWorkingDate:
                      type: string
                      format: date
                      description: Minimum last working date
                    proportionalMethod:
                      type: string
                      description: Proportional calculation method
                    proportionalDays:
                      type: integer
                      description: Number of proportional days
                    formula:
                      type: string
                      description: Calculation formula
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                amount:
                  type: number
                  description: Income amount
                lastWorkingDate:
                  type: string
                  format: date
                  description: Last working date
                paymentDate:
                  type: string
                  format: date
                  description: Payment date
                paymentMethod:
                  type: string
                  enum:
                  - CASH
                  - TRANSFER
                  - NONE
                  description: Payment method
                totalThp:
                  type: number
                  description: Total take home pay
                originalTax:
                  type: number
                  description: Original tax amount
                penaltyTax:
                  type: number
                  description: Penalty tax amount
                taxAllowance:
                  type: number
                  description: Tax allowance amount
    FormerEmployeeIncomePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            description: List of former employee incomes
            items:
              type: object
              properties:
                id:
                  type: string
                  description: Former employee income ID
                itemName:
                  type: string
                  description: Income item name
                itemType:
                  type: string
                  description: Income item type
                referenceDate:
                  type: string
                  format: date
                  description: Reference date
                pph21Method:
                  type: string
                  description: PPH21 calculation method
                minimumLastWorkingDate:
                  type: string
                  format: date
                  description: Minimum last working date
                proportionalMethod:
                  type: string
                  description: Proportional calculation method
                proportionalDays:
                  type: integer
                  description: Number of proportional days
                formula:
                  type: string
                  description: Calculation formula
    FormerEmployeeIncomeEmployeeAmountUpdateRequest:
      type: object
      properties:
        id:
          type: string
          description: Employee income ID
        amount:
          type: number
          description: Updated amount
      required:
      - id
      - amount
    FormerEmployeeIncomeEmployeeAmountUpdateListRequest:
      type: array
      items:
        type: object
        properties:
          id:
            type: string
            description: Employee income ID
          amount:
            type: number
            description: Updated amount
        required:
        - id
        - amount
    IdentityCardPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                identityCardType:
                  type: string
    InstitutionPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
    JobLevelPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
    JobLevelRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        level:
          type: number
          minimum: 1
          maximum: 99
        jobPositionId:
          type: string
        name:
          type: string
          minLength: 1
          maxLength: 255
        effectiveDate:
          type: string
          format: date
          description: Effective date for the job level. Defaults to minimum date if not provided.
        endDate:
          type: string
          format: date
          description: End date for the job level
      required:
      - code
      - level
      - name
      - effectiveDate
    JobTitlePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
                minJobLevel:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    jobPosition:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    level:
                      type: number
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                maxJobLevel:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    jobPosition:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    level:
                      type: number
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
    JobTitleRequestDeprecated:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        name:
          type: string
          minLength: 1
          maxLength: 255
        minJobLevelId:
          type: string
          deprecated: true
        maxJobLevelId:
          type: string
          deprecated: true
        effectiveDate:
          type: string
          format: date
          description: if null, it will be set to 1970-01-01
        endDate:
          type: string
          format: date
      required:
      - code
      - name
    JobTitleRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        name:
          type: string
          minLength: 1
          maxLength: 255
        jobLevels:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Unique identifier
            required:
            - id
        effectiveDate:
          type: string
          format: date
          description: if null, it will be set to 1970-01-01
        endDate:
          type: string
          format: date
      required:
      - code
      - name
      - effectiveDate
    JobTitleWithJobLevelsResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        jobLevels:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              code:
                type: string
              name:
                type: string
              jobPosition:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
              level:
                type: number
              effectiveDate:
                type: string
                format: date
              endDate:
                type: string
                format: date
    JobTitleLevelMappingResponse:
      type: object
      properties:
        jobTitle:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            code:
              type: string
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
            minJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
            maxJobLevel:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                jobPosition:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                level:
                  type: number
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
        jobLevel:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            jobPosition:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
            level:
              type: number
            effectiveDate:
              type: string
              format: date
            endDate:
              type: string
              format: date
    JobTitleLevelMappingPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                jobTitle:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    code:
                      type: string
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
                    minJobLevel:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        jobPosition:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        level:
                          type: number
                        effectiveDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                    maxJobLevel:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        jobPosition:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        level:
                          type: number
                        effectiveDate:
                          type: string
                          format: date
                        endDate:
                          type: string
                          format: date
                jobLevel:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    jobPosition:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    level:
                      type: number
                    effectiveDate:
                      type: string
                      format: date
                    endDate:
                      type: string
                      format: date
    KppResponse:
      type: object
      properties:
        id:
          type: string
          description: KPP unique identifier
        code:
          type: string
          description: KPP code
        name:
          type: string
          description: KPP name
        address:
          type: string
          description: KPP address
        responsiblePersonName:
          type: string
          description: Name of the responsible person
        responsiblePersonNpwp:
          type: string
          description: NPWP of the responsible person
        responsiblePersonJobTitle:
          type: string
          description: Job title of the responsible person
        kppStatus:
          type: string
          description: Status of the KPP
    KppPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            description: List of KPPs
            items:
              type: object
              properties:
                id:
                  type: string
                  description: KPP unique identifier
                code:
                  type: string
                  description: KPP code
                name:
                  type: string
                  description: KPP name
                address:
                  type: string
                  description: KPP address
                responsiblePersonName:
                  type: string
                  description: Name of the responsible person
                responsiblePersonNpwp:
                  type: string
                  description: NPWP of the responsible person
                responsiblePersonJobTitle:
                  type: string
                  description: Job title of the responsible person
                kppStatus:
                  type: string
                  description: Status of the KPP
    LocationGroupPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
    LocationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                locationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                city:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    state:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        country:
                          type: object
                          properties:
                            id:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                            callingCode:
                              type: string
                            taxTreaty:
                              type: boolean
                latitude:
                  type: number
                  format: float
                longitude:
                  type: number
                  format: float
                headquarter:
                  type: boolean
                address:
                  type: string
                phone:
                  type: string
                zipCode:
                  type: string
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD, effective date of the location
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD, end date of the location
                company:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    code:
                      type: string
                    name:
                      type: string
    LocationCreateRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        name:
          type: string
          minLength: 1
          maxLength: 255
        locationGroup:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        city:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        latitude:
          type: number
        longitude:
          type: number
        address:
          type: string
          maxLength: 65535
        phone:
          type: string
          maxLength: 255
          pattern: ^[+]{1}[0-9-() ]+
          description: e.g. `+6281234567890`
        zipCode:
          type: string
          maxLength: 5
          description: Numeric
        effectiveDate:
          type: string
          format: date
          description: The date when this location becomes effective
        endDate:
          type: string
          format: date
          description: The date when this location is no longer effective. If null, means this location is still effective
        headquarter:
          type: boolean
          description: If value is true, will automatically update headquarter in company profile
      required:
      - code
      - name
      - city
      - effectiveDate
      - headquarter
    SubLocationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                location:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD or null when ongoing
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD or null when ongoing
    SubLocationRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        name:
          type: string
          minLength: 1
          maxLength: 255
        locationId:
          type: string
          description: Parent location ID
        effectiveDate:
          type: string
          format: date
          description: The date when the sub-location becomes effective
        endDate:
          type: string
          format: date
          description: The date when the sub-location ends; null means no planned end date / active indefinitely
      required:
      - code
      - name
      - locationId
      - effectiveDate
    SalaryItemWithSalaryItemTypeResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        salaryItemType:
          type: string
    MonthlyRecapitulationItemDetailResponse:
      type: object
      properties:
        amount:
          type: number
        salaryItem:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            salaryItemType:
              type: string
    MonthlyRecapitulationItemResponse:
      type: object
      properties:
        code:
          type: string
        id:
          type: string
        month:
          type: number
        name:
          type: string
        totalThp:
          type: number
        year:
          type: number
        details:
          type: array
          items:
            type: object
            properties:
              amount:
                type: number
              salaryItem:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  salaryItemType:
                    type: string
    MonthlyRecapitulationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                code:
                  type: string
                id:
                  type: string
                month:
                  type: number
                name:
                  type: string
                totalThp:
                  type: number
                year:
                  type: number
                details:
                  type: array
                  items:
                    type: object
                    properties:
                      amount:
                        type: number
                      salaryItem:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          salaryItemType:
                            type: string
    TaxAndAllowanceResponse:
      type: object
      properties:
        original:
          type: number
        penalty:
          type: number
        tax:
          type: number
        allowance:
          type: number
    KppSimpleResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
        name:
          type: string
    MonthlyTaxReportResponse:
      type: object
      properties:
        id:
          type: string
        year:
          type: number
        month:
          type: number
        pph21Method:
          type: string
        membershipNumber:
          type: string
        membershipAddress:
          type: string
        totalMonthlyGrossIncome:
          type: number
        totalTaxAndAllowance:
          type: object
          properties:
            original:
              type: number
            penalty:
              type: number
            tax:
              type: number
            allowance:
              type: number
        paidTaxAndAllowance:
          type: object
          properties:
            original:
              type: number
            penalty:
              type: number
            tax:
              type: number
            allowance:
              type: number
        taxObject:
          type: string
          enum:
          - PERMANENT
          - TEMPORARY
          - MULTI_LEVEL_DISTRIBUTOR
          - INSURANCE_AGENT
          - MERCHANT_GOODS
          - EXPERT_CONTINUOUS
          - EXPERT_NON_CONTINUOUS
          - CONTINUOUS
          - NON_CONTINUOUS
          - COMMISSIONER
          - FORMER_EMPLOYEE
          - EVENT_PARTICIPANT
          - EXPATRIATE
          - EXPERT
          - MEETING_PARTICIPANT
          - COMMITTEE_PARTICIPANT
          - EDUCATION_PARTICIPANT
          - OTHER_PARTICIPANT
          - ADVISOR_LECTURER
          - AUTHOR_RESEARCHER
          - SERVICE_PROVIDER
          - ADVERTISING_AGENT
          - PROJECT_MANAGER
          - INTERMEDIARY
          - ARTIST
          - ATHLETE
          - TEMPORARY_MONTHLY
          - COMPETITION_PARTICIPANT
        sequenceNumber:
          type: number
        migrated:
          type: boolean
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        kpp:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
    MonthlyTaxReportPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                year:
                  type: number
                month:
                  type: number
                pph21Method:
                  type: string
                membershipNumber:
                  type: string
                membershipAddress:
                  type: string
                totalMonthlyGrossIncome:
                  type: number
                totalTaxAndAllowance:
                  type: object
                  properties:
                    original:
                      type: number
                    penalty:
                      type: number
                    tax:
                      type: number
                    allowance:
                      type: number
                paidTaxAndAllowance:
                  type: object
                  properties:
                    original:
                      type: number
                    penalty:
                      type: number
                    tax:
                      type: number
                    allowance:
                      type: number
                taxObject:
                  type: string
                  enum:
                  - PERMANENT
                  - TEMPORARY
                  - MULTI_LEVEL_DISTRIBUTOR
                  - INSURANCE_AGENT
                  - MERCHANT_GOODS
                  - EXPERT_CONTINUOUS
                  - EXPERT_NON_CONTINUOUS
                  - CONTINUOUS
                  - NON_CONTINUOUS
                  - COMMISSIONER
                  - FORMER_EMPLOYEE
                  - EVENT_PARTICIPANT
                  - EXPATRIATE
                  - EXPERT
                  - MEETING_PARTICIPANT
                  - COMMITTEE_PARTICIPANT
                  - EDUCATION_PARTICIPANT
                  - OTHER_PARTICIPANT
                  - ADVISOR_LECTURER
                  - AUTHOR_RESEARCHER
                  - SERVICE_PROVIDER
                  - ADVERTISING_AGENT
                  - PROJECT_MANAGER
                  - INTERMEDIARY
                  - ARTIST
                  - ATHLETE
                  - TEMPORARY_MONTHLY
                  - COMPETITION_PARTICIPANT
                sequenceNumber:
                  type: number
                migrated:
                  type: boolean
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                kpp:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
    TaxAmountResponse:
      type: object
      properties:
        original:
          type: number
        penalty:
          type: number
    TaxIncomeResponse:
      type: object
      properties:
        basicSalary:
          type: number
        taxAllowance:
          type: number
        bonus:
          type: number
        irregularBonus:
          type: number
        bonusAllowance:
          type: number
        honorarium:
          type: number
        insurancePremium:
          type: number
        enjoymentRevenue:
          type: number
        otherAllowance:
          type: number
        irregularOtherAllowance:
          type: number
        retirementContribution:
          type: number
        religionAllowance:
          type: number
    MonthlyTaxDetailResponse:
      type: object
      properties:
        annualCalculation:
          type: boolean
        taxObject:
          type: string
          enum:
          - PERMANENT
          - TEMPORARY
          - MULTI_LEVEL_DISTRIBUTOR
          - INSURANCE_AGENT
          - MERCHANT_GOODS
          - EXPERT_CONTINUOUS
          - EXPERT_NON_CONTINUOUS
          - CONTINUOUS
          - NON_CONTINUOUS
          - COMMISSIONER
          - FORMER_EMPLOYEE
          - EVENT_PARTICIPANT
          - EXPATRIATE
          - PERMANENT_DTP
          - EXPERT
          - MEETING_PARTICIPANT
          - COMMITTEE_PARTICIPANT
          - EDUCATION_PARTICIPANT
          - OTHER_PARTICIPANT
          - ADVISOR_LECTURER
          - AUTHOR_RESEARCHER
          - SERVICE_PROVIDER
          - ADVERTISING_AGENT
          - PROJECT_MANAGER
          - INTERMEDIARY
          - TEMPORARY_DTP
          - NON_EMPLOYEE_DTP
          - ARTIST
          - ATHLETE
          - TEMPORARY_MONTHLY
          - COMPETITION_PARTICIPANT
        year:
          type: integer
          format: int32
        month:
          type: integer
          format: int32
        employeeId:
          type: string
        npwpNumber:
          type: string
        npwpAddress:
          type: string
        ptkpCategoryCode:
          type: string
        terCategory:
          type: string
        percentage:
          type: number
          format: double
        monthlyGrossIncome:
          type: number
        tax:
          type: object
          properties:
            original:
              type: number
            penalty:
              type: number
        regularTax:
          type: object
          properties:
            original:
              type: number
            penalty:
              type: number
        bonusTax:
          type: object
          properties:
            original:
              type: number
            penalty:
              type: number
        income:
          type: object
          properties:
            basicSalary:
              type: number
            taxAllowance:
              type: number
            bonus:
              type: number
            irregularBonus:
              type: number
            bonusAllowance:
              type: number
            honorarium:
              type: number
            insurancePremium:
              type: number
            enjoymentRevenue:
              type: number
            otherAllowance:
              type: number
            irregularOtherAllowance:
              type: number
            retirementContribution:
              type: number
            religionAllowance:
              type: number
        positionalAllowance:
          type: number
        baseIncomeTaxDeduction:
          type: number
    MonthlyTaxDetailPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                annualCalculation:
                  type: boolean
                taxObject:
                  type: string
                  enum:
                  - PERMANENT
                  - TEMPORARY
                  - MULTI_LEVEL_DISTRIBUTOR
                  - INSURANCE_AGENT
                  - MERCHANT_GOODS
                  - EXPERT_CONTINUOUS
                  - EXPERT_NON_CONTINUOUS
                  - CONTINUOUS
                  - NON_CONTINUOUS
                  - COMMISSIONER
                  - FORMER_EMPLOYEE
                  - EVENT_PARTICIPANT
                  - EXPATRIATE
                  - PERMANENT_DTP
                  - EXPERT
                  - MEETING_PARTICIPANT
                  - COMMITTEE_PARTICIPANT
                  - EDUCATION_PARTICIPANT
                  - OTHER_PARTICIPANT
                  - ADVISOR_LECTURER
                  - AUTHOR_RESEARCHER
                  - SERVICE_PROVIDER
                  - ADVERTISING_AGENT
                  - PROJECT_MANAGER
                  - INTERMEDIARY
                  - TEMPORARY_DTP
                  - NON_EMPLOYEE_DTP
                  - ARTIST
                  - ATHLETE
                  - TEMPORARY_MONTHLY
                  - COMPETITION_PARTICIPANT
                year:
                  type: integer
                  format: int32
                month:
                  type: integer
                  format: int32
                employeeId:
                  type: string
                npwpNumber:
                  type: string
                npwpAddress:
                  type: string
                ptkpCategoryCode:
                  type: string
                terCategory:
                  type: string
                percentage:
                  type: number
                  format: double
                monthlyGrossIncome:
                  type: number
                tax:
                  type: object
                  properties:
                    original:
                      type: number
                    penalty:
                      type: number
                regularTax:
                  type: object
                  properties:
                    original:
                      type: number
                    penalty:
                      type: number
                bonusTax:
                  type: object
                  properties:
                    original:
                      type: number
                    penalty:
                      type: number
                income:
                  type: object
                  properties:
                    basicSalary:
                      type: number
                    taxAllowance:
                      type: number
                    bonus:
                      type: number
                    irregularBonus:
                      type: number
                    bonusAllowance:
                      type: number
                    honorarium:
                      type: number
                    insurancePremium:
                      type: number
                    enjoymentRevenue:
                      type: number
                    otherAllowance:
                      type: number
                    irregularOtherAllowance:
                      type: number
                    retirementContribution:
                      type: number
                    religionAllowance:
                      type: number
                positionalAllowance:
                  type: number
                baseIncomeTaxDeduction:
                  type: number
    OperationalGroupPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
    OrganizationGroupPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
    OrganizationGroupRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        name:
          type: string
          minLength: 1
          maxLength: 255
      required:
      - code
      - name
    OrganizationHierarchyPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                color:
                  type: string
                level:
                  type: integer
    OrganizationHierarchyRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        name:
          type: string
          minLength: 1
          maxLength: 255
        color:
          type: string
          minLength: 7
          maxLength: 7
          description: Hexadecimal color code, e.g. `#62A4D5`
        level:
          type: number
          minimum: 1
          maximum: 99
      required:
      - code
      - name
      - level
    OrganizationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                effectiveDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                endDate:
                  type: string
                  format: date
                  description: YYYY-MM-DD
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    color:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organizationParent:
                  type: object
                  deprecated: true
                  description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    type:
                      type: string
                      enum:
                      - STRUCTURAL
                      - FUNCTIONAL
                    effectiveDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    endDate:
                      type: string
                      format: date
                      description: YYYY-MM-DD
                    createdBy:
                      type: string
                    createdDate:
                      type: number
                    updatedBy:
                      type: string
                    updatedDate:
                      type: number
                    organizationHierarchy:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        color:
                          type: string
                        level:
                          type: integer
                    organizationGroup:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                    organizationParent:
                      type: object
                      description: Deprecated. Always null.
                      deprecated: true
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
    OrganizationRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        organizationHierarchyId:
          type: string
        organizationParentId:
          type: string
          deprecated: true
          description: '**Deprecated.** Organization Parent is deprecated. Please use the Organization Superior API instead.'
        name:
          type: string
          minLength: 3
          maxLength: 255
        type:
          type: string
          enum:
          - STRUCTURAL
          - FUNCTIONAL
        organizationGroupId:
          type: string
        companyId:
          type: string
          description: If the request is null, then it will default to the earliest company created in the system.
      required:
      - code
      - organizationHierarchyId
      - name
      - type
    OrganizationHeadResponse:
      type: object
      properties:
        id:
          type: string
        effectiveDate:
          type: string
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        position:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    OrganizationHeadPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                effectiveDate:
                  type: string
                organization:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                position:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
    OrganizationHistoryHierarchyResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        level:
          type: integer
    OrganizationHistoryResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        company:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        type:
          type: string
          enum:
          - STRUCTURAL
          - FUNCTIONAL
        organizationHierarchy:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            level:
              type: integer
        organizationGroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        effectiveDate:
          type: string
          format: date
        endDate:
          type: string
          format: date
    OrganizationHistoryPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                organization:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                company:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                type:
                  type: string
                  enum:
                  - STRUCTURAL
                  - FUNCTIONAL
                organizationHierarchy:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    level:
                      type: integer
                organizationGroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                effectiveDate:
                  type: string
                  format: date
                endDate:
                  type: string
                  format: date
    OrganizationSuperiorResponse:
      type: object
      properties:
        id:
          type: string
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        superior:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        effectiveDate:
          type: string
          format: date
    OrganizationSuperiorPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                organization:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                superior:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                effectiveDate:
                  type: string
                  format: date
    PaygroupResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        cutoffType:
          type: string
        cutoffDayOfWeek:
          type: string
        dailyCutoffDate:
          type: number
        dailyCutoffBase:
          type: string
        defaultPaygroup:
          type: boolean
        monthlyCutoffDate:
          type: number
    PaygroupPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                cutoffType:
                  type: string
                cutoffDayOfWeek:
                  type: string
                dailyCutoffDate:
                  type: number
                dailyCutoffBase:
                  type: string
                defaultPaygroup:
                  type: boolean
                monthlyCutoffDate:
                  type: number
    EmployeePaygroupResponse:
      type: object
      properties:
        id:
          type: string
        updatedDate:
          type: integer
          format: timestamp in milliseconds
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
            active:
              type: boolean
        paygroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            cutoffType:
              type: string
            cutoffDayOfWeek:
              type: string
            dailyCutoffDate:
              type: number
            dailyCutoffBase:
              type: string
            defaultPaygroup:
              type: boolean
            monthlyCutoffDate:
              type: number
        effectiveDate:
          type: string
          format: date
    EmployeePaygroupPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                updatedDate:
                  type: integer
                  format: timestamp in milliseconds
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                    active:
                      type: boolean
                paygroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    cutoffType:
                      type: string
                    cutoffDayOfWeek:
                      type: string
                    dailyCutoffDate:
                      type: number
                    dailyCutoffBase:
                      type: string
                    defaultPaygroup:
                      type: boolean
                    monthlyCutoffDate:
                      type: number
                effectiveDate:
                  type: string
                  format: date
    PayslipLayoutResponse:
      type: object
      properties:
        id:
          type: string
        html:
          type: string
        section:
          type: string
        effectiveDate:
          type: string
    PayslipLayoutPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                html:
                  type: string
                section:
                  type: string
                effectiveDate:
                  type: string
    PayslipLayoutRequest:
      type: object
      properties:
        html:
          type: string
        section:
          type: string
        effectiveDate:
          type: string
      required:
      - html
      - section
      - effectiveDate
    PayslipAdditionalNoteResponse:
      type: object
      properties:
        id:
          type: string
        paymentDate:
          type: string
        note:
          type: string
    PayslipAdditionalNotePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                paymentDate:
                  type: string
                note:
                  type: string
    PayslipAdditionalNoteRequest:
      type: object
      properties:
        paymentDate:
          type: string
        note:
          type: string
          description: Max length 150
          maxLength: 150
      required:
      - paymentDate
      - note
    PositionListItemResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
    PositionPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
    PositionCostCenterResponse:
      type: object
      properties:
        id:
          type: string
        effectiveDate:
          type: string
        costCenter:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        position:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
    PositionCostCenterPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                effectiveDate:
                  type: string
                costCenter:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                position:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
    PositionHistoryOrganizationResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        company:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    PositionHistoryResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        position:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        effectiveDate:
          type: string
        endDate:
          type: string
    PositionHistoryPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                position:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                organization:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                effectiveDate:
                  type: string
                endDate:
                  type: string
    PositionVacancyStatusResponse:
      type: object
      properties:
        id:
          type: string
        effectiveDate:
          type: string
        vacancyStatus:
          type: string
          enum:
          - VACANT
          - FILLED
        position:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
    PositionVacancyStatusPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                effectiveDate:
                  type: string
                vacancyStatus:
                  type: string
                  enum:
                  - VACANT
                  - FILLED
                position:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
    Pph21PolicyResponse:
      type: object
      properties:
        id:
          type: string
        linkToPayroll:
          type: boolean
        pph21FormFormatNumber:
          type: string
        pph21Method:
          type: string
    PtkpCategoryResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        maxDependent:
          type: number
        formula:
          type: string
    PtkpCategoryPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                maxDependent:
                  type: number
                formula:
                  type: string
    ReligionPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                code:
                  type: string
    ReligionRequest:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
        code:
          type: string
          maxLength: 255
      required:
      - name
    PayrollProcessSnapshotEmploymentStatusResponse:
      type: object
      properties:
        effectiveDate:
          type: string
          format: date
        position:
          type: object
          properties:
            id:
              type: string
        organization:
          type: object
          properties:
            id:
              type: string
        location:
          type: object
          properties:
            id:
              type: string
        subLocation:
          type: object
          properties:
            id:
              type: string
        jobTitle:
          type: object
          properties:
            id:
              type: string
        jobLevel:
          type: object
          properties:
            id:
              type: string
        employmentType:
          type: object
          properties:
            id:
              type: string
        operationalGroup:
          type: object
          properties:
            id:
              type: string
        costCenter:
          type: object
          properties:
            id:
              type: string
        company:
          type: object
          properties:
            id:
              type: string
        contractStart:
          type: string
          format: date
        contractEnd:
          type: string
          format: date
        permanentDate:
          type: string
          format: date
    PayrollProcessSnapshotBankAccountResponse:
      type: object
      properties:
        id:
          type: string
        priority:
          type: integer
    PayrollProcessSnapshotBankAccountConfigurationResponse:
      type: object
      properties:
        effectiveDate:
          type: string
          format: date
        bankAccounts:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              priority:
                type: integer
    PayrollProcessSnapshotWorkflowTemplateResponse:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        name:
          type: string
    PayrollProcessSnapshotWorkflowReasonResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        category:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    PayrollProcessSnapshotWorkflowActivityResponse:
      type: object
      properties:
        id:
          type: string
        effectiveDate:
          type: string
          format: date
        createdDate:
          type: number
        updatedDate:
          type: number
        workflowTemplate:
          type: object
          properties:
            id:
              type: string
            type:
              type: string
            name:
              type: string
        workflowReason:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            category:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
    PayrollProcessSnapshotResponse:
      type: object
      properties:
        employeeId:
          type: string
        effectiveDate:
          type: string
          format: date
        terminationDate:
          type: string
          format: date
        employmentStatus:
          type: object
          properties:
            effectiveDate:
              type: string
              format: date
            position:
              type: object
              properties:
                id:
                  type: string
            organization:
              type: object
              properties:
                id:
                  type: string
            location:
              type: object
              properties:
                id:
                  type: string
            subLocation:
              type: object
              properties:
                id:
                  type: string
            jobTitle:
              type: object
              properties:
                id:
                  type: string
            jobLevel:
              type: object
              properties:
                id:
                  type: string
            employmentType:
              type: object
              properties:
                id:
                  type: string
            operationalGroup:
              type: object
              properties:
                id:
                  type: string
            costCenter:
              type: object
              properties:
                id:
                  type: string
            company:
              type: object
              properties:
                id:
                  type: string
            contractStart:
              type: string
              format: date
            contractEnd:
              type: string
              format: date
            permanentDate:
              type: string
              format: date
        kpp:
          type: object
          properties:
            id:
              type: string
        paygroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        payrollSequenceNumber:
          type: integer
        previousPayrollSequenceNumber:
          type: integer
        paymentItemGroup:
          type: object
          properties:
            id:
              type: string
        bankAccountConfiguration:
          type: object
          properties:
            effectiveDate:
              type: string
              format: date
            bankAccounts:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  priority:
                    type: integer
        workflowActivities:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              effectiveDate:
                type: string
                format: date
              createdDate:
                type: number
              updatedDate:
                type: number
              workflowTemplate:
                type: object
                properties:
                  id:
                    type: string
                  type:
                    type: string
                  name:
                    type: string
              workflowReason:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  category:
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                      name:
                        type: string
    PayrollProcessSnapshotPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                employeeId:
                  type: string
                effectiveDate:
                  type: string
                  format: date
                terminationDate:
                  type: string
                  format: date
                employmentStatus:
                  type: object
                  properties:
                    effectiveDate:
                      type: string
                      format: date
                    position:
                      type: object
                      properties:
                        id:
                          type: string
                    organization:
                      type: object
                      properties:
                        id:
                          type: string
                    location:
                      type: object
                      properties:
                        id:
                          type: string
                    subLocation:
                      type: object
                      properties:
                        id:
                          type: string
                    jobTitle:
                      type: object
                      properties:
                        id:
                          type: string
                    jobLevel:
                      type: object
                      properties:
                        id:
                          type: string
                    employmentType:
                      type: object
                      properties:
                        id:
                          type: string
                    operationalGroup:
                      type: object
                      properties:
                        id:
                          type: string
                    costCenter:
                      type: object
                      properties:
                        id:
                          type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                    contractStart:
                      type: string
                      format: date
                    contractEnd:
                      type: string
                      format: date
                    permanentDate:
                      type: string
                      format: date
                kpp:
                  type: object
                  properties:
                    id:
                      type: string
                paygroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                payrollSequenceNumber:
                  type: integer
                previousPayrollSequenceNumber:
                  type: integer
                paymentItemGroup:
                  type: object
                  properties:
                    id:
                      type: string
                bankAccountConfiguration:
                  type: object
                  properties:
                    effectiveDate:
                      type: string
                      format: date
                    bankAccounts:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          priority:
                            type: integer
                workflowActivities:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      effectiveDate:
                        type: string
                        format: date
                      createdDate:
                        type: number
                      updatedDate:
                        type: number
                      workflowTemplate:
                        type: object
                        properties:
                          id:
                            type: string
                          type:
                            type: string
                          name:
                            type: string
                      workflowReason:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          category:
                            type: object
                            properties:
                              id:
                                type: string
                              code:
                                type: string
                              name:
                                type: string
    SalaryCalculationResponse:
      type: object
      properties:
        costCenterCode:
          type: string
        dailyWorkdayEndDate:
          type: string
        dailyWorkdayStartDate:
          type: string
        employeeId:
          type: string
        employeeIdentificationNumber:
          type: string
        employeeName:
          type: string
        employeeWorkday:
          type: number
        id:
          type: string
        locationGroupCode:
          type: string
        normalWorkday:
          type: number
        previousPeriodEmployeeWorkday:
          type: number
        previousPeriodNormalWorkday:
          type: number
    SalaryCalculationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                costCenterCode:
                  type: string
                dailyWorkdayEndDate:
                  type: string
                dailyWorkdayStartDate:
                  type: string
                employeeId:
                  type: string
                employeeIdentificationNumber:
                  type: string
                employeeName:
                  type: string
                employeeWorkday:
                  type: number
                id:
                  type: string
                locationGroupCode:
                  type: string
                normalWorkday:
                  type: number
                previousPeriodEmployeeWorkday:
                  type: number
                previousPeriodNormalWorkday:
                  type: number
    AmountRequest:
      type: object
      properties:
        amount:
          type: number
      required:
      - amount
    SalaryCalculationDetailResponse:
      type: object
      properties:
        amount:
          type: number
        id:
          type: string
        salaryItemCategory:
          type: string
        salaryItemCode:
          type: string
        salaryItemName:
          type: string
        salaryItemType:
          type: string
        thp:
          type: boolean
    SalaryCalculationDetailPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                amount:
                  type: number
                id:
                  type: string
                salaryItemCategory:
                  type: string
                salaryItemCode:
                  type: string
                salaryItemName:
                  type: string
                salaryItemType:
                  type: string
                thp:
                  type: boolean
    TimeAllowanceDetailResponse:
      type: object
      properties:
        amount:
          type: number
        date:
          type: string
    TimeAllowanceDetailsResponse:
      type: object
      properties:
        salaryCalculationDetail:
          type: object
          properties:
            id:
              type: string
        timeAllowanceDetails:
          type: array
          items:
            type: object
            properties:
              amount:
                type: number
              date:
                type: string
    SalaryItemAddOnEmployeeResponse:
      type: object
      properties:
        identificationNumber:
          type: string
        name:
          type: string
    SalaryItemSimpleResponse:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
    SalaryItemAddOnResponse:
      type: object
      properties:
        amount:
          type: number
        date:
          type: string
        employee:
          type: object
          properties:
            identificationNumber:
              type: string
            name:
              type: string
        salaryCalculationProcessed:
          type: boolean
        salaryItem:
          type: object
          properties:
            code:
              type: string
            name:
              type: string
    SalaryItemAddOnEmployeeRequest:
      type: object
      properties:
        identificationNumber:
          type: string
      required:
      - identificationNumber
    SalaryItemAddOnSalaryItemRequest:
      type: object
      properties:
        code:
          type: string
      required:
      - code
    SalaryItemAddOnRequest:
      type: object
      properties:
        amount:
          type: number
        date:
          type: string
        employee:
          type: object
          properties:
            identificationNumber:
              type: string
          required:
          - identificationNumber
        salaryItem:
          type: object
          properties:
            code:
              type: string
          required:
          - code
      required:
      - amount
      - date
      - employee
      - salaryItem
    NameResponse:
      type: object
      properties:
        name:
          type: string
    CostCenterSimpleResponse:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
    SalaryPaymentEmploymentStatusResponse:
      type: object
      properties:
        jobTitle:
          type: object
          properties:
            name:
              type: string
        employmentType:
          type: object
          properties:
            name:
              type: string
        costCenter:
          type: object
          properties:
            code:
              type: string
            name:
              type: string
    SalaryPaymentEmployeeResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
        name:
          type: string
        employmentStatus:
          type: object
          properties:
            jobTitle:
              type: object
              properties:
                name:
                  type: string
            employmentType:
              type: object
              properties:
                name:
                  type: string
            costCenter:
              type: object
              properties:
                code:
                  type: string
                name:
                  type: string
    SalaryPaymentDetailCompanyBankAccountResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: eb919ed1-c3c1-4334-a626-b9178b8a98ae
        name:
          type: string
          example: Comp Bank Account 1
        companyCode:
          type: string
          example: C001
        accountNumber:
          type: string
          example: '98343411'
        bankBranch:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
            name:
              type: string
              example: BCA Wisma Asia
            code:
              type: string
              example: BCA01
            address:
              type: string
              example: BCA01
            bank:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                code:
                  type: string
                  example: '014'
                name:
                  type: string
                  example: BCA
                llg:
                  type: string
                  example: '146789'
        currency:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: d1ea18d8-a691-11e6-80f5-76304dec7066
            code:
              type: string
              example: IDR
            name:
              type: string
              example: Indonesian Rupiah
            baseCurrency:
              type: boolean
              example: true
    SalaryPaymentDetailResponse:
      type: object
      properties:
        id:
          type: string
        bankCode:
          type: string
        bankName:
          type: string
        accountName:
          type: string
        accountNumber:
          type: string
        bankAccountPriority:
          type: integer
        currencyCode:
          type: string
        amount:
          type: number
        exchangedAmount:
          type: number
        companyBankAccount:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: eb919ed1-c3c1-4334-a626-b9178b8a98ae
            name:
              type: string
              example: Comp Bank Account 1
            companyCode:
              type: string
              example: C001
            accountNumber:
              type: string
              example: '98343411'
            bankBranch:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                name:
                  type: string
                  example: BCA Wisma Asia
                code:
                  type: string
                  example: BCA01
                address:
                  type: string
                  example: BCA01
                bank:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code:
                      type: string
                      example: '014'
                    name:
                      type: string
                      example: BCA
                    llg:
                      type: string
                      example: '146789'
            currency:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: d1ea18d8-a691-11e6-80f5-76304dec7066
                code:
                  type: string
                  example: IDR
                name:
                  type: string
                  example: Indonesian Rupiah
                baseCurrency:
                  type: boolean
                  example: true
    SalaryPaymentResponse:
      type: object
      properties:
        id:
          type: string
        paymentMethod:
          type: string
          enum:
          - CASH
          - TRANSFER
          - NONE
        paymentDate:
          type: string
        organization:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            company:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
        jobLevel:
          type: object
          properties:
            name:
              type: string
        jobTitle:
          type: object
          properties:
            name:
              type: string
        location:
          type: object
          properties:
            name:
              type: string
        costCenter:
          type: object
          properties:
            code:
              type: string
            name:
              type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
            employmentStatus:
              type: object
              properties:
                jobTitle:
                  type: object
                  properties:
                    name:
                      type: string
                employmentType:
                  type: object
                  properties:
                    name:
                      type: string
                costCenter:
                  type: object
                  properties:
                    code:
                      type: string
                    name:
                      type: string
        salaryPaymentDetails:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              bankCode:
                type: string
              bankName:
                type: string
              accountName:
                type: string
              accountNumber:
                type: string
              bankAccountPriority:
                type: integer
              currencyCode:
                type: string
              amount:
                type: number
              exchangedAmount:
                type: number
              companyBankAccount:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: eb919ed1-c3c1-4334-a626-b9178b8a98ae
                  name:
                    type: string
                    example: Comp Bank Account 1
                  companyCode:
                    type: string
                    example: C001
                  accountNumber:
                    type: string
                    example: '98343411'
                  bankBranch:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                      name:
                        type: string
                        example: BCA Wisma Asia
                      code:
                        type: string
                        example: BCA01
                      address:
                        type: string
                        example: BCA01
                      bank:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                          code:
                            type: string
                            example: '014'
                          name:
                            type: string
                            example: BCA
                          llg:
                            type: string
                            example: '146789'
                  currency:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        example: d1ea18d8-a691-11e6-80f5-76304dec7066
                      code:
                        type: string
                        example: IDR
                      name:
                        type: string
                        example: Indonesian Rupiah
                      baseCurrency:
                        type: boolean
                        example: true
    SalaryPaymentPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                paymentMethod:
                  type: string
                  enum:
                  - CASH
                  - TRANSFER
                  - NONE
                paymentDate:
                  type: string
                organization:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    company:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                jobLevel:
                  type: object
                  properties:
                    name:
                      type: string
                jobTitle:
                  type: object
                  properties:
                    name:
                      type: string
                location:
                  type: object
                  properties:
                    name:
                      type: string
                costCenter:
                  type: object
                  properties:
                    code:
                      type: string
                    name:
                      type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                    employmentStatus:
                      type: object
                      properties:
                        jobTitle:
                          type: object
                          properties:
                            name:
                              type: string
                        employmentType:
                          type: object
                          properties:
                            name:
                              type: string
                        costCenter:
                          type: object
                          properties:
                            code:
                              type: string
                            name:
                              type: string
                salaryPaymentDetails:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      bankCode:
                        type: string
                      bankName:
                        type: string
                      accountName:
                        type: string
                      accountNumber:
                        type: string
                      bankAccountPriority:
                        type: integer
                      currencyCode:
                        type: string
                      amount:
                        type: number
                      exchangedAmount:
                        type: number
                      companyBankAccount:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            example: eb919ed1-c3c1-4334-a626-b9178b8a98ae
                          name:
                            type: string
                            example: Comp Bank Account 1
                          companyCode:
                            type: string
                            example: C001
                          accountNumber:
                            type: string
                            example: '98343411'
                          bankBranch:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: 0e5f074c-c929-11e6-9d9d-cec0c932ce01
                              name:
                                type: string
                                example: BCA Wisma Asia
                              code:
                                type: string
                                example: BCA01
                              address:
                                type: string
                                example: BCA01
                              bank:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                    example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                                  code:
                                    type: string
                                    example: '014'
                                  name:
                                    type: string
                                    example: BCA
                                  llg:
                                    type: string
                                    example: '146789'
                          currency:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                example: d1ea18d8-a691-11e6-80f5-76304dec7066
                              code:
                                type: string
                                example: IDR
                              name:
                                type: string
                                example: Indonesian Rupiah
                              baseCurrency:
                                type: boolean
                                example: true
    SalaryPaymentDateListResponse:
      type: array
      items:
        type: string
    ProcessedSalaryPaymentDetailResponse:
      type: object
      properties:
        accountNumber:
          type: string
    ProcessedSalaryPaymentResponse:
      type: object
      properties:
        employeeId:
          type: string
        locationGroupCode:
          type: string
        paymentDate:
          type: string
        salaryPaymentDetails:
          type: array
          items:
            type: object
            properties:
              accountNumber:
                type: string
        totalThp:
          type: number
    ProcessedSalaryPaymentPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                employeeId:
                  type: string
                locationGroupCode:
                  type: string
                paymentDate:
                  type: string
                salaryPaymentDetails:
                  type: array
                  items:
                    type: object
                    properties:
                      accountNumber:
                        type: string
                totalThp:
                  type: number
    PaymentItemDetailSalaryItemResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        salaryItemCategory:
          type: string
        salaryItemType:
          type: string
        thp:
          type: boolean
    PaymentItemDetailResponse:
      type: object
      properties:
        id:
          type: string
        amount:
          type: number
        salaryItem:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            salaryItemCategory:
              type: string
            salaryItemType:
              type: string
            thp:
              type: boolean
    PaymentItemGroupResponse:
      type: object
      properties:
        id:
          type: string
        paymentType:
          type: string
        startProcessDate:
          type: string
        endProcessDate:
          type: string
        jobLevel:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        location:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
        paymentItemDetails:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              amount:
                type: number
              salaryItem:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  salaryItemCategory:
                    type: string
                  salaryItemType:
                    type: string
                  thp:
                    type: boolean
    PaymentItemGroupPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                paymentType:
                  type: string
                startProcessDate:
                  type: string
                endProcessDate:
                  type: string
                jobLevel:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                location:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                paymentItemDetails:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      amount:
                        type: number
                      salaryItem:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          salaryItemCategory:
                            type: string
                          salaryItemType:
                            type: string
                          thp:
                            type: boolean
    BankBranchSimpleResponse:
      type: object
      properties:
        id:
          type: string
        bank:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
            code:
              type: string
              example: '014'
            name:
              type: string
              example: BCA
            llg:
              type: string
              example: '146789'
    SalaryPaymentSummaryCompanyBankAccountResponse:
      type: object
      properties:
        id:
          type: string
        accountNumber:
          type: string
          example: '98343411'
        bankBranch:
          type: object
          properties:
            id:
              type: string
            bank:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                code:
                  type: string
                  example: '014'
                name:
                  type: string
                  example: BCA
                llg:
                  type: string
                  example: '146789'
    SalaryPaymentSummaryResponse:
      type: object
      properties:
        accountNumber:
          type: string
        amount:
          type: number
        id:
          type: string
        numberOfProcessedEmployees:
          type: number
        numberOfTransferredEmployees:
          type: number
        paymentDate:
          type: string
        transferredAmount:
          type: number
        companyBankAccount:
          type: object
          properties:
            id:
              type: string
            accountNumber:
              type: string
              example: '98343411'
            bankBranch:
              type: object
              properties:
                id:
                  type: string
                bank:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                    code:
                      type: string
                      example: '014'
                    name:
                      type: string
                      example: BCA
                    llg:
                      type: string
                      example: '146789'
    SalaryPaymentSummaryPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                accountNumber:
                  type: string
                amount:
                  type: number
                id:
                  type: string
                numberOfProcessedEmployees:
                  type: number
                numberOfTransferredEmployees:
                  type: number
                paymentDate:
                  type: string
                transferredAmount:
                  type: number
                companyBankAccount:
                  type: object
                  properties:
                    id:
                      type: string
                    accountNumber:
                      type: string
                      example: '98343411'
                    bankBranch:
                      type: object
                      properties:
                        id:
                          type: string
                        bank:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              example: 8bf610cc-c83b-11e6-9d9d-cec0c932ce01
                            code:
                              type: string
                              example: '014'
                            name:
                              type: string
                              example: BCA
                            llg:
                              type: string
                              example: '146789'
    SalaryItemResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        code:
          type: string
        name:
          type: string
        payslipName:
          type: string
        salaryItemCategory:
          type: string
        pph21Method:
          type: string
        pph21Item:
          type: string
    SalaryTemplateDetailResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        salaryItem:
          type: object
          properties:
            id:
              type: string
              format: uuid
            code:
              type: string
            name:
              type: string
            payslipName:
              type: string
            salaryItemCategory:
              type: string
            pph21Method:
              type: string
            pph21Item:
              type: string
    SalaryTemplateResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        code:
          type: string
        name:
          type: string
        salaryTemplateDetails:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
              salaryItem:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  code:
                    type: string
                  name:
                    type: string
                  payslipName:
                    type: string
                  salaryItemCategory:
                    type: string
                  pph21Method:
                    type: string
                  pph21Item:
                    type: string
    SalaryTemplatePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
                salaryTemplateDetails:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      salaryItem:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          code:
                            type: string
                          name:
                            type: string
                          payslipName:
                            type: string
                          salaryItemCategory:
                            type: string
                          pph21Method:
                            type: string
                          pph21Item:
                            type: string
    SalaryItemPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                code:
                  type: string
                name:
                  type: string
                payslipName:
                  type: string
                salaryItemCategory:
                  type: string
                pph21Method:
                  type: string
                pph21Item:
                  type: string
    EditableSalaryPreprocessRequest:
      type: object
      properties:
        employeeIdentificationNumber:
          type: string
          description: Employee identification number
        salaryItemCode:
          type: string
          description: Salary item code
        amount:
          type: number
          format: double
          description: Amount
        period:
          type: integer
          description: Period
        year:
          type: integer
          description: Year
    EditableSalaryPreprocessListRequest:
      type: array
      minItems: 1
      maxItems: 50
      items:
        type: object
        properties:
          employeeIdentificationNumber:
            type: string
            description: Employee identification number
          salaryItemCode:
            type: string
            description: Salary item code
          amount:
            type: number
            format: double
            description: Amount
          period:
            type: integer
            description: Period
          year:
            type: integer
            description: Year
    EditableSalaryPreprocessSuccess:
      type: object
      properties:
        employeeIdentificationNumber:
          type: string
        salaryItemCode:
          type: string
        amount:
          type: number
          format: double
        period:
          type: integer
        year:
          type: integer
    EditableSalaryPreprocessResponse:
      type: object
      properties:
        successes:
          type: array
          items:
            type: object
            properties:
              employeeIdentificationNumber:
                type: string
              salaryItemCode:
                type: string
              amount:
                type: number
                format: double
              period:
                type: integer
              year:
                type: integer
        failures:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              message:
                type: string
              params:
                type: object
                properties:
                  id:
                    type: string
                  reason:
                    type: string
    SeverancePaymentPlanResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        terminationEntryId:
          type: string
          format: uuid
        terminationEntryCode:
          type: string
        employeeId:
          type: string
          format: uuid
        employeeIdentificationNumber:
          type: string
        employeeName:
          type: string
        terminationReasonId:
          type: string
          format: uuid
        terminationReasonName:
          type: string
        terminationDate:
          type: string
          format: date
        plannedDate:
          type: string
          format: date
        paymentDate:
          type: string
          format: date
        paymentMethod:
          type: string
          enum:
          - CASH
          - TRANSFER
          - NONE
        paymentOption:
          type: string
        amount:
          type: number
        nonTaxableAmount:
          type: number
        thpAmount:
          type: number
        pphAmount:
          type: number
        taxAllowance:
          type: number
    SeverancePaymentPlanPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                terminationEntryId:
                  type: string
                  format: uuid
                terminationEntryCode:
                  type: string
                employeeId:
                  type: string
                  format: uuid
                employeeIdentificationNumber:
                  type: string
                employeeName:
                  type: string
                terminationReasonId:
                  type: string
                  format: uuid
                terminationReasonName:
                  type: string
                terminationDate:
                  type: string
                  format: date
                plannedDate:
                  type: string
                  format: date
                paymentDate:
                  type: string
                  format: date
                paymentMethod:
                  type: string
                  enum:
                  - CASH
                  - TRANSFER
                  - NONE
                paymentOption:
                  type: string
                amount:
                  type: number
                nonTaxableAmount:
                  type: number
                thpAmount:
                  type: number
                pphAmount:
                  type: number
                taxAllowance:
                  type: number
    SeverancePlanResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        kpp:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        paymentMethod:
          type: string
          enum:
          - CASH
          - TRANSFER
          - NONE
        pph21Method:
          type: string
        paymentOption:
          type: string
        total:
          type: number
        totalThp:
          type: number
        totalPph:
          type: number
        taxAllowance:
          type: number
    SeverancePlanPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                kpp:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                paymentMethod:
                  type: string
                  enum:
                  - CASH
                  - TRANSFER
                  - NONE
                pph21Method:
                  type: string
                paymentOption:
                  type: string
                total:
                  type: number
                totalThp:
                  type: number
                totalPph:
                  type: number
                taxAllowance:
                  type: number
    SeverancePlanDetailResponse:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
        category:
          type: string
        amount:
          type: number
        pph21ItemMethod:
          type: string
    SeverancePlanResponseWithDetail:
      type: object
      properties:
        id:
          type: string
          format: uuid
        kpp:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        paymentMethod:
          type: string
          enum:
          - CASH
          - TRANSFER
          - NONE
        pph21Method:
          type: string
        paymentOption:
          type: string
        total:
          type: number
        totalThp:
          type: number
        totalPph:
          type: number
        taxAllowance:
          type: number
        details:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              name:
                type: string
              category:
                type: string
              amount:
                type: number
              pph21ItemMethod:
                type: string
        paymentPlans:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
              terminationEntryId:
                type: string
                format: uuid
              terminationEntryCode:
                type: string
              employeeId:
                type: string
                format: uuid
              employeeIdentificationNumber:
                type: string
              employeeName:
                type: string
              terminationReasonId:
                type: string
                format: uuid
              terminationReasonName:
                type: string
              terminationDate:
                type: string
                format: date
              plannedDate:
                type: string
                format: date
              paymentDate:
                type: string
                format: date
              paymentMethod:
                type: string
                enum:
                - CASH
                - TRANSFER
                - NONE
              paymentOption:
                type: string
              amount:
                type: number
              nonTaxableAmount:
                type: number
              thpAmount:
                type: number
              pphAmount:
                type: number
              taxAllowance:
                type: number
    TaxCalculationDetailResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        kpp:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        externalId:
          type: string
        year:
          type: number
        month:
          type: number
        pph21Method:
          type: string
        membershipNumber:
          type: string
        membershipAddress:
          type: string
        totalMonthlyGrossIncome:
          type: number
        totalTaxAndAllowance:
          type: object
          properties:
            original:
              type: number
            penalty:
              type: number
            tax:
              type: number
            allowance:
              type: number
        paidTaxAndAllowance:
          type: object
          properties:
            original:
              type: number
            penalty:
              type: number
            tax:
              type: number
            allowance:
              type: number
        type:
          type: string
        taxObject:
          type: string
          enum:
          - PERMANENT
          - TEMPORARY
          - MULTI_LEVEL_DISTRIBUTOR
          - INSURANCE_AGENT
          - MERCHANT_GOODS
          - EXPERT_CONTINUOUS
          - EXPERT_NON_CONTINUOUS
          - CONTINUOUS
          - NON_CONTINUOUS
          - COMMISSIONER
          - FORMER_EMPLOYEE
          - EVENT_PARTICIPANT
          - EXPATRIATE
          - EXPERT
          - MEETING_PARTICIPANT
          - COMMITTEE_PARTICIPANT
          - EDUCATION_PARTICIPANT
          - OTHER_PARTICIPANT
          - ADVISOR_LECTURER
          - AUTHOR_RESEARCHER
          - SERVICE_PROVIDER
          - ADVERTISING_AGENT
          - PROJECT_MANAGER
          - INTERMEDIARY
          - ARTIST
          - ATHLETE
          - TEMPORARY_MONTHLY
          - COMPETITION_PARTICIPANT
        referenceYear:
          type: number
        referenceMonth:
          type: number
        multiplier:
          type: number
        calculationType:
          type: string
        paymentMethod:
          type: string
          enum:
          - COMBINED
          - SEPARATED
        referenceDate:
          type: string
          format: date
        paymentDate:
          type: string
          format: date
    TaxCalculationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                kpp:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                externalId:
                  type: string
                year:
                  type: number
                month:
                  type: number
                pph21Method:
                  type: string
                membershipNumber:
                  type: string
                membershipAddress:
                  type: string
                totalMonthlyGrossIncome:
                  type: number
                totalTaxAndAllowance:
                  type: object
                  properties:
                    original:
                      type: number
                    penalty:
                      type: number
                    tax:
                      type: number
                    allowance:
                      type: number
                paidTaxAndAllowance:
                  type: object
                  properties:
                    original:
                      type: number
                    penalty:
                      type: number
                    tax:
                      type: number
                    allowance:
                      type: number
                type:
                  type: string
                taxObject:
                  type: string
                  enum:
                  - PERMANENT
                  - TEMPORARY
                  - MULTI_LEVEL_DISTRIBUTOR
                  - INSURANCE_AGENT
                  - MERCHANT_GOODS
                  - EXPERT_CONTINUOUS
                  - EXPERT_NON_CONTINUOUS
                  - CONTINUOUS
                  - NON_CONTINUOUS
                  - COMMISSIONER
                  - FORMER_EMPLOYEE
                  - EVENT_PARTICIPANT
                  - EXPATRIATE
                  - EXPERT
                  - MEETING_PARTICIPANT
                  - COMMITTEE_PARTICIPANT
                  - EDUCATION_PARTICIPANT
                  - OTHER_PARTICIPANT
                  - ADVISOR_LECTURER
                  - AUTHOR_RESEARCHER
                  - SERVICE_PROVIDER
                  - ADVERTISING_AGENT
                  - PROJECT_MANAGER
                  - INTERMEDIARY
                  - ARTIST
                  - ATHLETE
                  - TEMPORARY_MONTHLY
                  - COMPETITION_PARTICIPANT
                referenceYear:
                  type: number
                referenceMonth:
                  type: number
                multiplier:
                  type: number
                calculationType:
                  type: string
                paymentMethod:
                  type: string
                  enum:
                  - COMBINED
                  - SEPARATED
                referenceDate:
                  type: string
                  format: date
                paymentDate:
                  type: string
                  format: date
    TaxCalculationIncomeRequest:
      type: object
      properties:
        method:
          type: string
        amount:
          type: number
        item:
          type: string
      required:
      - method
      - amount
      - item
    TaxCalculationRequest:
      type: object
      properties:
        employeeId:
          type: string
        incomes:
          type: array
          items:
            type: object
            properties:
              method:
                type: string
              amount:
                type: number
              item:
                type: string
            required:
            - method
            - amount
            - item
        referenceDate:
          type: string
          format: date
        paymentMethod:
          type: string
          enum:
          - COMBINED
          - SEPARATED
        externalId:
          type: string
        multiplier:
          type: number
        paymentDate:
          type: string
          format: date
        calculationType:
          type: string
        workingDays:
          type: number
      required:
      - employeeId
      - incomes
      - referenceDate
      - paymentMethod
      - externalId
      - multiplier
      - paymentDate
      - calculationType
      - workingDays
    TaxReport1721A1Response:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        kpp:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        externalId:
          type: string
        year:
          type: number
        endMonth:
          type: number
        sequenceNumber:
          type: number
        membershipNumber:
          type: string
        ptkp:
          type: string
        jobTitle:
          type: string
        totalGrossIncome:
          type: number
        outstandingOriginalTax:
          type: number
        outstandingPenaltyTax:
          type: number
        outstandingTax:
          type: number
        paidOriginalTax:
          type: number
        paidPenaltyTax:
          type: number
        paidTax:
          type: number
        paidTaxAllowance:
          type: number
        basicSalary:
          type: number
        taxAllowance:
          type: number
        otherAllowance:
          type: number
        honorarium:
          type: number
        insurancePremium:
          type: number
        enjoymentRevenue:
          type: number
        bonus:
          type: number
        retirementContribution:
          type: number
        totalDeduction:
          type: number
        netIncome:
          type: number
        previousNetIncome:
          type: number
        totalNetIncome:
          type: number
        baseIncomeTaxDeduction:
          type: number
        baseIncomeTax:
          type: number
        yearlyOriginalTax:
          type: number
        yearlyPenaltyTax:
          type: number
        yearlyTax:
          type: number
        previousOriginalTax:
          type: number
        previousPenaltyTax:
          type: number
        previousTax:
          type: number
    TaxReport1721A1PageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                kpp:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                externalId:
                  type: string
                year:
                  type: number
                endMonth:
                  type: number
                sequenceNumber:
                  type: number
                membershipNumber:
                  type: string
                ptkp:
                  type: string
                jobTitle:
                  type: string
                totalGrossIncome:
                  type: number
                outstandingOriginalTax:
                  type: number
                outstandingPenaltyTax:
                  type: number
                outstandingTax:
                  type: number
                paidOriginalTax:
                  type: number
                paidPenaltyTax:
                  type: number
                paidTax:
                  type: number
                paidTaxAllowance:
                  type: number
                basicSalary:
                  type: number
                taxAllowance:
                  type: number
                otherAllowance:
                  type: number
                honorarium:
                  type: number
                insurancePremium:
                  type: number
                enjoymentRevenue:
                  type: number
                bonus:
                  type: number
                retirementContribution:
                  type: number
                totalDeduction:
                  type: number
                netIncome:
                  type: number
                previousNetIncome:
                  type: number
                totalNetIncome:
                  type: number
                baseIncomeTaxDeduction:
                  type: number
                baseIncomeTax:
                  type: number
                yearlyOriginalTax:
                  type: number
                yearlyPenaltyTax:
                  type: number
                yearlyTax:
                  type: number
                previousOriginalTax:
                  type: number
                previousPenaltyTax:
                  type: number
                previousTax:
                  type: number
    TaxCalculationResponse:
      type: object
      properties:
        original:
          type: number
          description: Original tax amount
        penalty:
          type: number
          description: Penalty tax amount
        total:
          type: number
          description: Total tax amount including penalty
    TaxReport1721VIResponse:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        kpp:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        year:
          type: number
          description: Tax report year
        month:
          type: number
          description: Tax report month
        sequenceNumber:
          type: number
          description: Report sequence number
        npwpNumber:
          type: string
          description: NPWP (Tax identification number)
        monthlyGrossIncome:
          type: number
          description: Monthly gross income amount
        tax:
          type: object
          properties:
            original:
              type: number
              description: Original tax amount
            penalty:
              type: number
              description: Penalty tax amount
            total:
              type: number
              description: Total tax amount including penalty
    TaxReport1721VIPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                kpp:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                year:
                  type: number
                  description: Tax report year
                month:
                  type: number
                  description: Tax report month
                sequenceNumber:
                  type: number
                  description: Report sequence number
                npwpNumber:
                  type: string
                  description: NPWP (Tax identification number)
                monthlyGrossIncome:
                  type: number
                  description: Monthly gross income amount
                tax:
                  type: object
                  properties:
                    original:
                      type: number
                      description: Original tax amount
                    penalty:
                      type: number
                      description: Penalty tax amount
                    total:
                      type: number
                      description: Total tax amount including penalty
    TaxReport1721VIDetailResponse:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        kpp:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        year:
          type: number
          description: Tax report year
        month:
          type: number
          description: Tax report month
        sequenceNumber:
          type: number
          description: Report sequence number
        npwpNumber:
          type: string
          description: NPWP (Tax identification number)
        monthlyGrossIncome:
          type: number
          description: Monthly gross income amount
        tax:
          type: object
          properties:
            original:
              type: number
              description: Original tax amount
            penalty:
              type: number
              description: Penalty tax amount
            total:
              type: number
              description: Total tax amount including penalty
        totalGrossIncome:
          type: number
          description: Total gross income amount
        pkp:
          type: number
          description: PKP (Penghasilan Kena Pajak) value
    TaxReport1721VIIResponse:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        kpp:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        year:
          type: number
          description: Tax report year
        month:
          type: number
          description: Tax report month
        sequenceNumber:
          type: number
          description: Report sequence number
        npwpNumber:
          type: string
          description: NPWP (Tax identification number)
        income:
          type: number
          description: Total income amount
        tax:
          type: number
          description: Tax amount
    TaxReport1721VIIPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                kpp:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                year:
                  type: number
                  description: Tax report year
                month:
                  type: number
                  description: Tax report month
                sequenceNumber:
                  type: number
                  description: Report sequence number
                npwpNumber:
                  type: string
                  description: NPWP (Tax identification number)
                income:
                  type: number
                  description: Total income amount
                tax:
                  type: number
                  description: Tax amount
    UnprocessableContentResponse:
      type: object
      properties:
        error:
          type: string
          description: Error message
        details:
          type: array
          items:
            type: string
          description: Business validation errors
    TaxReport1721VIIIResponse:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        kpp:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        year:
          type: number
        month:
          type: number
        sequenceNumber:
          type: number
        npwpNumber:
          type: string
        address:
          type: string
        monthlyGrossIncome:
          type: number
        monthlyTax:
          type: object
          properties:
            original:
              type: number
            penalty:
              type: number
    TaxReport1721VIIIPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                kpp:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                year:
                  type: number
                month:
                  type: number
                sequenceNumber:
                  type: number
                npwpNumber:
                  type: string
                address:
                  type: string
                monthlyGrossIncome:
                  type: number
                monthlyTax:
                  type: object
                  properties:
                    original:
                      type: number
                    penalty:
                      type: number
    SeverancePlanDetailItemRequest:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
        category:
          type: string
        amount:
          type: number
        pph21ItemMethod:
          type: string
      required:
      - code
      - name
      - category
      - amount
      - pph21ItemMethod
    SeverancePlanPaymentPlanItemRequest:
      type: object
      properties:
        plannedDate:
          type: string
        paymentDate:
          type: string
        amount:
          type: number
      required:
      - plannedDate
      - paymentDate
      - amount
    SeverancePlanRequest:
      type: object
      properties:
        pph21Method:
          type: string
        details:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              name:
                type: string
              category:
                type: string
              amount:
                type: number
              pph21ItemMethod:
                type: string
            required:
            - code
            - name
            - category
            - amount
            - pph21ItemMethod
        paymentPlans:
          type: array
          items:
            type: object
            properties:
              plannedDate:
                type: string
              paymentDate:
                type: string
              amount:
                type: number
            required:
            - plannedDate
            - paymentDate
            - amount
      required:
      - pph21Method
      - details
      - paymentPlans
    TerminationTaxReasonResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        taxAnnualized:
          type: boolean
    TerminationBPJSManpowerReasonResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    TerminationReasonCategoryResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    TerminationReasonDetailResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        terminationPph21Reason:
          type: string
          deprecated: true
          description: Use taxReason instead
        terminationBpjsManpowerReason:
          type: string
          deprecated: true
          description: Use bpjsManpowerReason instead
        terminationReasonCategory:
          type: string
          deprecated: true
          description: Use reasonCategory instead
        taxReason:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            taxAnnualized:
              type: boolean
        bpjsManpowerReason:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
        reasonCategory:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
        severance:
          type: boolean
    TerminationReasonPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                terminationPph21Reason:
                  type: string
                  deprecated: true
                  description: Use taxReason instead
                terminationBpjsManpowerReason:
                  type: string
                  deprecated: true
                  description: Use bpjsManpowerReason instead
                terminationReasonCategory:
                  type: string
                  deprecated: true
                  description: Use reasonCategory instead
                taxReason:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    taxAnnualized:
                      type: boolean
                bpjsManpowerReason:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                reasonCategory:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                severance:
                  type: boolean
    TerminationReasonRequest:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
        taxReason:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        bpjsManpowerReason:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        reasonCategory:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        severance:
          type: boolean
          default: false
      required:
      - name
      - reasonCategory
      - taxReason
      - bpjsManpowerReason
    TerminationReasonCategoryPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
    TerminationTaxReasonPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                taxAnnualized:
                  type: boolean
    TerminationBPJSManpowerReasonPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
    TransitionCalculationCountResponse:
      type: object
      properties:
        processedCount:
          type: number
        unprocessedCount:
          type: number
    TransitionCalculationEmployeeSalaryTemplateResponse:
      type: object
      properties:
        effectiveDate:
          type: string
        salaryDecreeNumber:
          type: string
        salaryTemplate:
          type: object
          properties:
            name:
              type: string
    UnprocessableMessage:
      type: object
      properties:
        code:
          type: string
        description:
          type: string
    ProcessedTransitionCalculationResponse:
      type: object
      properties:
        costCenter:
          type: object
          properties:
            name:
              type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        employeeSalaryTemplateHistory:
          type: object
          properties:
            effectiveDate:
              type: string
            salaryDecreeNumber:
              type: string
            salaryTemplate:
              type: object
              properties:
                name:
                  type: string
        employeeWorkday:
          type: number
        employmentType:
          type: object
          properties:
            name:
              type: string
        endDate:
          type: string
        id:
          type: string
        jobTitle:
          type: object
          properties:
            name:
              type: string
        location:
          type: object
          properties:
            name:
              type: string
        messages:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              description:
                type: string
        normalWorkday:
          type: number
        organization:
          type: object
          properties:
            name:
              type: string
        paymentProcess:
          type: boolean
        startDate:
          type: string
        totalThp:
          type: number
    ProcessedTransitionCalculationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                costCenter:
                  type: object
                  properties:
                    name:
                      type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                employeeSalaryTemplateHistory:
                  type: object
                  properties:
                    effectiveDate:
                      type: string
                    salaryDecreeNumber:
                      type: string
                    salaryTemplate:
                      type: object
                      properties:
                        name:
                          type: string
                employeeWorkday:
                  type: number
                employmentType:
                  type: object
                  properties:
                    name:
                      type: string
                endDate:
                  type: string
                id:
                  type: string
                jobTitle:
                  type: object
                  properties:
                    name:
                      type: string
                location:
                  type: object
                  properties:
                    name:
                      type: string
                messages:
                  type: array
                  items:
                    type: object
                    properties:
                      code:
                        type: string
                      description:
                        type: string
                normalWorkday:
                  type: number
                organization:
                  type: object
                  properties:
                    name:
                      type: string
                paymentProcess:
                  type: boolean
                startDate:
                  type: string
                totalThp:
                  type: number
    UnprocessedTransitionCalculationResponse:
      type: object
      properties:
        costCenter:
          type: object
          properties:
            name:
              type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        employeeSalaryTemplateHistory:
          type: object
          properties:
            effectiveDate:
              type: string
            salaryDecreeNumber:
              type: string
            salaryTemplate:
              type: object
              properties:
                name:
                  type: string
        employeeWorkday:
          type: number
        employmentType:
          type: object
          properties:
            name:
              type: string
        endDate:
          type: string
        id:
          type: string
        jobTitle:
          type: object
          properties:
            name:
              type: string
        location:
          type: object
          properties:
            name:
              type: string
        normalWorkday:
          type: number
        organization:
          type: object
          properties:
            name:
              type: string
        paymentProcess:
          type: boolean
        startDate:
          type: string
        totalThp:
          type: number
    UnprocessedTransitionCalculationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                costCenter:
                  type: object
                  properties:
                    name:
                      type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                employeeSalaryTemplateHistory:
                  type: object
                  properties:
                    effectiveDate:
                      type: string
                    salaryDecreeNumber:
                      type: string
                    salaryTemplate:
                      type: object
                      properties:
                        name:
                          type: string
                employeeWorkday:
                  type: number
                employmentType:
                  type: object
                  properties:
                    name:
                      type: string
                endDate:
                  type: string
                id:
                  type: string
                jobTitle:
                  type: object
                  properties:
                    name:
                      type: string
                location:
                  type: object
                  properties:
                    name:
                      type: string
                normalWorkday:
                  type: number
                organization:
                  type: object
                  properties:
                    name:
                      type: string
                paymentProcess:
                  type: boolean
                startDate:
                  type: string
                totalThp:
                  type: number
    ProcessableTimeAllowanceTransitionEmploymentStatusResponse:
      type: object
      properties:
        organization:
          type: object
          properties:
            name:
              type: string
        jobTitle:
          type: object
          properties:
            name:
              type: string
    ProcessableTimeAllowanceTransitionEmployeeResponse:
      type: object
      properties:
        id:
          type: string
        identificationNumber:
          type: string
        name:
          type: string
        employmentStatus:
          type: object
          properties:
            organization:
              type: object
              properties:
                name:
                  type: string
            jobTitle:
              type: object
              properties:
                name:
                  type: string
    ProcessableTimeAllowanceTransitionResponse:
      type: object
      properties:
        dailyEndDate:
          type: string
        dailyStartDate:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
            employmentStatus:
              type: object
              properties:
                organization:
                  type: object
                  properties:
                    name:
                      type: string
                jobTitle:
                  type: object
                  properties:
                    name:
                      type: string
        id:
          type: string
    ProcessableTimeAllowanceTransitionPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                dailyEndDate:
                  type: string
                dailyStartDate:
                  type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                    employmentStatus:
                      type: object
                      properties:
                        organization:
                          type: object
                          properties:
                            name:
                              type: string
                        jobTitle:
                          type: object
                          properties:
                            name:
                              type: string
                id:
                  type: string
    CalculationScenarioSalaryComponent:
      type: object
      properties:
        basicSalary:
          type: number
          format: double
          default: 0
        taxAllowance:
          type: number
          format: double
          default: 0
        otherAllowance:
          type: number
          format: double
          default: 0
        honorarium:
          type: number
          format: double
          default: 0
        insurancePremium:
          type: number
          format: double
          default: 0
        enjoymentRevenue:
          type: number
          format: double
          default: 0
        bonus:
          type: number
          format: double
          default: 0
        monthlyRetirementContribution:
          type: number
          format: double
          default: 0
        monthlyReligionAllowance:
          type: number
          format: double
          default: 0
    CalculationScenarioComponent:
      type: object
      properties:
        firstComponent:
          type: object
          properties:
            basicSalary:
              type: number
              format: double
              default: 0
            taxAllowance:
              type: number
              format: double
              default: 0
            otherAllowance:
              type: number
              format: double
              default: 0
            honorarium:
              type: number
              format: double
              default: 0
            insurancePremium:
              type: number
              format: double
              default: 0
            enjoymentRevenue:
              type: number
              format: double
              default: 0
            bonus:
              type: number
              format: double
              default: 0
            monthlyRetirementContribution:
              type: number
              format: double
              default: 0
            monthlyReligionAllowance:
              type: number
              format: double
              default: 0
        secondComponent:
          type: object
          properties:
            basicSalary:
              type: number
              format: double
              default: 0
            taxAllowance:
              type: number
              format: double
              default: 0
            otherAllowance:
              type: number
              format: double
              default: 0
            honorarium:
              type: number
              format: double
              default: 0
            insurancePremium:
              type: number
              format: double
              default: 0
            enjoymentRevenue:
              type: number
              format: double
              default: 0
            bonus:
              type: number
              format: double
              default: 0
            monthlyRetirementContribution:
              type: number
              format: double
              default: 0
            monthlyReligionAllowance:
              type: number
              format: double
              default: 0
    CalculationScenarioPreviousJobComponent:
      type: object
      properties:
        netIncome:
          type: number
          format: double
          default: 0
        tax:
          type: number
          format: double
          default: 0
    AnnualTaxCalculationSimulatorRequest:
      type: object
      required:
      - taxObject
      - taxMethod
      - ptkpCategory
      - startMonth
      - components
      properties:
        taxMethod:
          type: string
          enum:
          - GROSS
          - GROSS_UP
          - NETTO
          - MIX
        ptkpCategory:
          type: string
        taxObject:
          type: string
          enum:
          - PERMANENT
          - TEMPORARY
          - MULTI_LEVEL_DISTRIBUTOR
          - INSURANCE_AGENT
          - MERCHANT_GOODS
          - EXPERT_CONTINUOUS
          - EXPERT_NON_CONTINUOUS
          - CONTINUOUS
          - NON_CONTINUOUS
          - COMMISSIONER
          - FORMER_EMPLOYEE
          - EVENT_PARTICIPANT
          - EXPATRIATE
          - EXPERT
          - MEETING_PARTICIPANT
          - COMMITTEE_PARTICIPANT
          - EDUCATION_PARTICIPANT
          - OTHER_PARTICIPANT
          - ADVISOR_LECTURER
          - AUTHOR_RESEARCHER
          - SERVICE_PROVIDER
          - ADVERTISING_AGENT
          - PROJECT_MANAGER
          - INTERMEDIARY
          - ARTIST
          - ATHLETE
          - TEMPORARY_MONTHLY
          - COMPETITION_PARTICIPANT
        startMonth:
          type: integer
          format: int32
          minimum: 1
          maximum: 12
        components:
          type: array
          minItems: 1
          maxItems: 12
          description: List of monthly income components. The last component is the tax end month. For example, if startMonth is 1 and there are 6 components, then endMonth is 6.
          items:
            type: object
            properties:
              firstComponent:
                type: object
                properties:
                  basicSalary:
                    type: number
                    format: double
                    default: 0
                  taxAllowance:
                    type: number
                    format: double
                    default: 0
                  otherAllowance:
                    type: number
                    format: double
                    default: 0
                  honorarium:
                    type: number
                    format: double
                    default: 0
                  insurancePremium:
                    type: number
                    format: double
                    default: 0
                  enjoymentRevenue:
                    type: number
                    format: double
                    default: 0
                  bonus:
                    type: number
                    format: double
                    default: 0
                  monthlyRetirementContribution:
                    type: number
                    format: double
                    default: 0
                  monthlyReligionAllowance:
                    type: number
                    format: double
                    default: 0
              secondComponent:
                type: object
                properties:
                  basicSalary:
                    type: number
                    format: double
                    default: 0
                  taxAllowance:
                    type: number
                    format: double
                    default: 0
                  otherAllowance:
                    type: number
                    format: double
                    default: 0
                  honorarium:
                    type: number
                    format: double
                    default: 0
                  insurancePremium:
                    type: number
                    format: double
                    default: 0
                  enjoymentRevenue:
                    type: number
                    format: double
                    default: 0
                  bonus:
                    type: number
                    format: double
                    default: 0
                  monthlyRetirementContribution:
                    type: number
                    format: double
                    default: 0
                  monthlyReligionAllowance:
                    type: number
                    format: double
                    default: 0
        previousJobComponent:
          type: object
          properties:
            netIncome:
              type: number
              format: double
              default: 0
            tax:
              type: number
              format: double
              default: 0
    AnnualTaxCalculationSimulatorMonthlyTaxReportsResponse:
      type: object
      properties:
        monthlyGrossIncome:
          type: number
          format: double
        percentage:
          type: number
          format: double
        monthlyTax:
          type: number
          format: double
        nettoTax:
          type: number
          format: double
        type:
          type: string
        basicSalary:
          type: number
          format: double
          default: 0
        taxAllowance:
          type: number
          format: double
          default: 0
        otherAllowance:
          type: number
          format: double
          default: 0
        honorarium:
          type: number
          format: double
          default: 0
        insurancePremium:
          type: number
          format: double
          default: 0
        enjoymentRevenue:
          type: number
          format: double
          default: 0
        bonus:
          type: number
          format: double
          default: 0
        monthlyRetirementContribution:
          type: number
          format: double
          default: 0
        monthlyReligionAllowance:
          type: number
          format: double
          default: 0
    AnnualTaxCalculationSimulatorResultResponse:
      type: object
      properties:
        basicSalary:
          type: number
          format: double
        taxAllowance:
          type: number
          format: double
        otherAllowance:
          type: number
          format: double
        honorarium:
          type: number
          format: double
        insurancePremium:
          type: number
          format: double
        enjoymentRevenue:
          type: number
          format: double
        bonus:
          type: number
          format: double
        totalGrossIncome:
          type: number
          format: double
        positionalAllowance:
          type: number
          format: double
        retirementContribution:
          type: number
          format: double
        totalDeduction:
          type: number
          format: double
        netIncome:
          type: number
          format: double
        previousNetIncome:
          type: number
          format: double
        totalNetIncome:
          type: number
          format: double
        baseIncomeTaxDeduction:
          type: number
          format: double
        baseIncomeTax:
          type: number
          format: double
        yearlyOriginalTax:
          type: number
          format: double
        yearlyPenaltyTax:
          type: number
          format: double
        yearlyTax:
          type: number
          format: double
        previousOriginalTax:
          type: number
          format: double
        previousPenaltyTax:
          type: number
          format: double
        previousTax:
          type: number
          format: double
        outstandingOriginalTax:
          type: number
          format: double
        outstandingPenaltyTax:
          type: number
          format: double
        outstandingTax:
          type: number
          format: double
    AnnualTaxCalculationSimulatorResponse:
      type: object
      properties:
        monthlyTaxReports:
          type: array
          items:
            type: object
            properties:
              monthlyGrossIncome:
                type: number
                format: double
              percentage:
                type: number
                format: double
              monthlyTax:
                type: number
                format: double
              nettoTax:
                type: number
                format: double
              type:
                type: string
              basicSalary:
                type: number
                format: double
                default: 0
              taxAllowance:
                type: number
                format: double
                default: 0
              otherAllowance:
                type: number
                format: double
                default: 0
              honorarium:
                type: number
                format: double
                default: 0
              insurancePremium:
                type: number
                format: double
                default: 0
              enjoymentRevenue:
                type: number
                format: double
                default: 0
              bonus:
                type: number
                format: double
                default: 0
              monthlyRetirementContribution:
                type: number
                format: double
                default: 0
              monthlyReligionAllowance:
                type: number
                format: double
                default: 0
        annualTaxReport:
          type: object
          properties:
            basicSalary:
              type: number
              format: double
            taxAllowance:
              type: number
              format: double
            otherAllowance:
              type: number
              format: double
            honorarium:
              type: number
              format: double
            insurancePremium:
              type: number
              format: double
            enjoymentRevenue:
              type: number
              format: double
            bonus:
              type: number
              format: double
            totalGrossIncome:
              type: number
              format: double
            positionalAllowance:
              type: number
              format: double
            retirementContribution:
              type: number
              format: double
            totalDeduction:
              type: number
              format: double
            netIncome:
              type: number
              format: double
            previousNetIncome:
              type: number
              format: double
            totalNetIncome:
              type: number
              format: double
            baseIncomeTaxDeduction:
              type: number
              format: double
            baseIncomeTax:
              type: number
              format: double
            yearlyOriginalTax:
              type: number
              format: double
            yearlyPenaltyTax:
              type: number
              format: double
            yearlyTax:
              type: number
              format: double
            previousOriginalTax:
              type: number
              format: double
            previousPenaltyTax:
              type: number
              format: double
            previousTax:
              type: number
              format: double
            outstandingOriginalTax:
              type: number
              format: double
            outstandingPenaltyTax:
              type: number
              format: double
            outstandingTax:
              type: number
              format: double
    MonthlyTaxCalculationSimulatorRequest:
      type: object
      required:
      - taxObject
      - taxMethod
      - ptkpCategory
      - component
      properties:
        taxObject:
          type: string
          enum:
          - PERMANENT
          - TEMPORARY
          - EXPERT_CONTINUOUS
          - EXPERT_NON_CONTINUOUS
          - CONTINUOUS
          - NON_CONTINUOUS
          - COMMISSIONER
          - EVENT_PARTICIPANT
          - EXPATRIATE
        taxMethod:
          type: string
          enum:
          - GROSS
          - GROSS_UP
          - NETTO
          - MIX
        ptkpCategory:
          type: string
        component:
          type: object
          properties:
            firstComponent:
              type: object
              properties:
                basicSalary:
                  type: number
                  format: double
                  default: 0
                taxAllowance:
                  type: number
                  format: double
                  default: 0
                otherAllowance:
                  type: number
                  format: double
                  default: 0
                honorarium:
                  type: number
                  format: double
                  default: 0
                insurancePremium:
                  type: number
                  format: double
                  default: 0
                enjoymentRevenue:
                  type: number
                  format: double
                  default: 0
                bonus:
                  type: number
                  format: double
                  default: 0
                monthlyRetirementContribution:
                  type: number
                  format: double
                  default: 0
                monthlyReligionAllowance:
                  type: number
                  format: double
                  default: 0
            secondComponent:
              type: object
              properties:
                basicSalary:
                  type: number
                  format: double
                  default: 0
                taxAllowance:
                  type: number
                  format: double
                  default: 0
                otherAllowance:
                  type: number
                  format: double
                  default: 0
                honorarium:
                  type: number
                  format: double
                  default: 0
                insurancePremium:
                  type: number
                  format: double
                  default: 0
                enjoymentRevenue:
                  type: number
                  format: double
                  default: 0
                bonus:
                  type: number
                  format: double
                  default: 0
                monthlyRetirementContribution:
                  type: number
                  format: double
                  default: 0
                monthlyReligionAllowance:
                  type: number
                  format: double
                  default: 0
    MonthlyTaxCalculationSimulatorResponse:
      type: object
      properties:
        monthlyGrossIncome:
          type: number
          format: double
        percentage:
          type: number
          format: double
        monthlyTax:
          type: number
          format: double
        nettoTax:
          type: number
          format: double
        type:
          type: string
    PermanentMonthlyTaxCalculationSimulatorResponse:
      allOf:
      - type: object
        properties:
          monthlyGrossIncome:
            type: number
            format: double
          percentage:
            type: number
            format: double
          monthlyTax:
            type: number
            format: double
          nettoTax:
            type: number
            format: double
          type:
            type: string
      - type: object
        properties:
          type:
            type: string
            enum:
            - PERMANENT
          basicSalary:
            type: number
            format: double
            default: 0
          taxAllowance:
            type: number
            format: double
            default: 0
          otherAllowance:
            type: number
            format: double
            default: 0
          honorarium:
            type: number
            format: double
            default: 0
          insurancePremium:
            type: number
            format: double
            default: 0
          enjoymentRevenue:
            type: number
            format: double
            default: 0
          bonus:
            type: number
            format: double
            default: 0
          monthlyRetirementContribution:
            type: number
            format: double
            default: 0
          monthlyReligionAllowance:
            type: number
            format: double
            default: 0
    TemporaryMonthlyTaxCalculationSimulatorResponse:
      allOf:
      - type: object
        properties:
          monthlyGrossIncome:
            type: number
            format: double
          percentage:
            type: number
            format: double
          monthlyTax:
            type: number
            format: double
          nettoTax:
            type: number
            format: double
          type:
            type: string
      - type: object
        properties:
          type:
            type: string
            enum:
            - TEMPORARY
          basicSalary:
            type: number
            format: double
          taxAllowance:
            type: number
            format: double
          bonus:
            type: number
            format: double
    NonEmployeeMonthlyTaxCalculationSimulatorResponse:
      allOf:
      - type: object
        properties:
          monthlyGrossIncome:
            type: number
            format: double
          percentage:
            type: number
            format: double
          monthlyTax:
            type: number
            format: double
          nettoTax:
            type: number
            format: double
          type:
            type: string
      - type: object
        properties:
          type:
            type: string
            enum:
            - NON_EMPLOYEE
          basicSalary:
            type: number
            format: double
          taxAllowance:
            type: number
            format: double
          baseIncome:
            type: number
            format: double
          baseIncomeTaxDeduction:
            type: number
            format: double
          baseIncomeTax:
            type: number
            format: double
    CustomTableColumnResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the column
        columnName:
          type: string
          description: Technical name of the column
        fieldName:
          type: string
          description: CamelCase version of columnName
        displayName:
          type: string
          description: Display name of the column
        fieldOrder:
          type: integer
          description: Order of the field in the table
        dataType:
          type: string
          description: Data type of the column
        isRequired:
          type: boolean
          description: Whether the column is required
        isReference:
          type: boolean
          description: Whether the column is a reference to another entity
        columnMetadata:
          type: object
          description: Additional metadata for the column
          additionalProperties: true
        tooltip:
          type: string
          description: Optional custom tooltip to be shown to the user
    CustomTableResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the custom table
        tableName:
          type: string
          description: Technical name of the custom table
        displayName:
          type: string
          description: Display name of the custom table
        menuLocation:
          type: string
          description: Location of the table in menu hierarchy
        historicalType:
          type: string
          description: Type of historical tracking for the table
        parentEntity:
          type: string
          description: Parent entity reference
        parentReferenceField:
          type: string
          description: Field used for parent entity reference
        columns:
          type: array
          description: List of columns in the table
          items:
            type: object
            properties:
              id:
                type: string
                description: Unique identifier of the column
              columnName:
                type: string
                description: Technical name of the column
              fieldName:
                type: string
                description: CamelCase version of columnName
              displayName:
                type: string
                description: Display name of the column
              fieldOrder:
                type: integer
                description: Order of the field in the table
              dataType:
                type: string
                description: Data type of the column
              isRequired:
                type: boolean
                description: Whether the column is required
              isReference:
                type: boolean
                description: Whether the column is a reference to another entity
              columnMetadata:
                type: object
                description: Additional metadata for the column
                additionalProperties: true
              tooltip:
                type: string
                description: Optional custom tooltip to be shown to the user
    CustomTablePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier of the custom table
                tableName:
                  type: string
                  description: Technical name of the custom table
                displayName:
                  type: string
                  description: Display name of the custom table
                menuLocation:
                  type: string
                  description: Location of the table in menu hierarchy
                historicalType:
                  type: string
                  description: Type of historical tracking for the table
                parentEntity:
                  type: string
                  description: Parent entity reference
                parentReferenceField:
                  type: string
                  description: Field used for parent entity reference
                columns:
                  type: array
                  description: List of columns in the table
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: Unique identifier of the column
                      columnName:
                        type: string
                        description: Technical name of the column
                      fieldName:
                        type: string
                        description: CamelCase version of columnName
                      displayName:
                        type: string
                        description: Display name of the column
                      fieldOrder:
                        type: integer
                        description: Order of the field in the table
                      dataType:
                        type: string
                        description: Data type of the column
                      isRequired:
                        type: boolean
                        description: Whether the column is required
                      isReference:
                        type: boolean
                        description: Whether the column is a reference to another entity
                      columnMetadata:
                        type: object
                        description: Additional metadata for the column
                        additionalProperties: true
                      tooltip:
                        type: string
                        description: Optional custom tooltip to be shown to the user
    CustomTableEntryResponse:
      type: object
      additionalProperties: true
    CustomTableEntryPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              additionalProperties: true
    CustomTableEntryRequest:
      type: object
      additionalProperties: true
    WorkflowTemplateResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
        context:
          type: string
    WorkflowReasonCategoryResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        restrictDuplicateEffectiveDate:
          type: boolean
    WorkflowReasonResponse:
      type: object
      properties:
        id:
          type: string
        createdDate:
          type: number
        updatedDate:
          type: number
        code:
          type: string
        name:
          type: string
        category:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            restrictDuplicateEffectiveDate:
              type: boolean
    WorkflowActivityResponse:
      type: object
      properties:
        id:
          type: string
        createdDate:
          type: number
        updatedDate:
          type: number
        workflowTemplate:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            type:
              type: string
            context:
              type: string
        effectiveDate:
          type: string
        workflowReason:
          type: object
          properties:
            id:
              type: string
            createdDate:
              type: number
            updatedDate:
              type: number
            code:
              type: string
            name:
              type: string
            category:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                restrictDuplicateEffectiveDate:
                  type: boolean
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
    WorkflowActivityPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                createdDate:
                  type: number
                updatedDate:
                  type: number
                workflowTemplate:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    type:
                      type: string
                    context:
                      type: string
                effectiveDate:
                  type: string
                workflowReason:
                  type: object
                  properties:
                    id:
                      type: string
                    createdDate:
                      type: number
                    updatedDate:
                      type: number
                    code:
                      type: string
                    name:
                      type: string
                    category:
                      type: object
                      properties:
                        id:
                          type: string
                        code:
                          type: string
                        name:
                          type: string
                        restrictDuplicateEffectiveDate:
                          type: boolean
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
    WorkflowReasonPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                createdDate:
                  type: number
                updatedDate:
                  type: number
                code:
                  type: string
                name:
                  type: string
                category:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    restrictDuplicateEffectiveDate:
                      type: boolean
    WorkflowReasonRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        name:
          type: string
          minLength: 1
          maxLength: 255
        category:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
      required:
      - code
      - name
      - category
    WorkflowReasonCategoryPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                code:
                  type: string
                name:
                  type: string
                restrictDuplicateEffectiveDate:
                  type: boolean
    WorkflowReasonCategoryRequest:
      type: object
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 255
        name:
          type: string
          minLength: 1
          maxLength: 255
      required:
      - code
      - name
    VendorResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        createdBy:
          type: string
        createdDate:
          type: number
        updatedBy:
          type: string
        updatedDate:
          type: number
    VendorPageResponse:
      type: object
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                createdBy:
                  type: string
                createdDate:
                  type: number
                updatedBy:
                  type: string
                updatedDate:
                  type: number
    ShiftResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        timeIn:
          type: string
        timeOut:
          type: string
        timeInUtc:
          type: number
        timeOutUtc:
          type: number
        breakStartUtc:
          type: number
        breakEndUtc:
          type: number
        color:
          type: string
    AttendanceRecapitulationDetailOvertimeResponse:
      type: object
      properties:
        requested:
          type: number
        paid:
          type: number
        description:
          type: string
    AttendanceRecapitulationDetailAttendanceItemResponse:
      type: object
      properties:
        type:
          type: string
        code:
          type: string
        timeIn:
          type: string
        timeOut:
          type: string
        description:
          type: string
    AttendanceRecapitulationDetailItemResponse:
      type: object
      properties:
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        date:
          type: string
        shift:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            timeIn:
              type: string
            timeOut:
              type: string
            timeInUtc:
              type: number
            timeOutUtc:
              type: number
            breakStartUtc:
              type: number
            breakEndUtc:
              type: number
            color:
              type: string
        overtime:
          type: object
          properties:
            requested:
              type: number
            paid:
              type: number
            description:
              type: string
        attendances:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
              code:
                type: string
              timeIn:
                type: string
              timeOut:
                type: string
              description:
                type: string
    AttendanceRecapitulationDetailPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                date:
                  type: string
                shift:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    timeIn:
                      type: string
                    timeOut:
                      type: string
                    timeInUtc:
                      type: number
                    timeOutUtc:
                      type: number
                    breakStartUtc:
                      type: number
                    breakEndUtc:
                      type: number
                    color:
                      type: string
                overtime:
                  type: object
                  properties:
                    requested:
                      type: number
                    paid:
                      type: number
                    description:
                      type: string
                attendances:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      timeIn:
                        type: string
                      timeOut:
                        type: string
                      description:
                        type: string
    AttendanceStatusResponse:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        attendanceType:
          type: string
    AttendanceItemResponse:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        date:
          type: string
        timeIn:
          type: string
        timeOut:
          type: string
        attendanceStatusIn:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            attendanceType:
              type: string
    AttendancePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                date:
                  type: string
                timeIn:
                  type: string
                timeOut:
                  type: string
                attendanceStatusIn:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    attendanceType:
                      type: string
    AbsenceEntryResponse:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        startDate:
          type: string
        endDate:
          type: string
        description:
          type: string
        approvalStatus:
          type: string
        rejectionReason:
          type: string
        attendanceStatus:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            attendanceType:
              type: string
    AbsenceEntryPageResponse:
      type: object
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                startDate:
                  type: string
                endDate:
                  type: string
                description:
                  type: string
                approvalStatus:
                  type: string
                rejectionReason:
                  type: string
                attendanceStatus:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    attendanceType:
                      type: string
    AttendanceCancellationResponse:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        createdDate:
          type: string
        startDate:
          type: string
        endDate:
          type: string
        description:
          type: string
        approvalStatus:
          type: string
        rejectionReason:
          type: string
        attendanceStatus:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            attendanceType:
              type: string
    AttendanceCancellationPageResponse:
      type: object
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                createdDate:
                  type: string
                startDate:
                  type: string
                endDate:
                  type: string
                description:
                  type: string
                approvalStatus:
                  type: string
                rejectionReason:
                  type: string
                attendanceStatus:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    attendanceType:
                      type: string
    ShiftPatternTemplateSimpleResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    WorkdayConfigurationDetailResponse:
      type: object
      properties:
        shift:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            timeIn:
              type: string
            timeOut:
              type: string
            timeInUtc:
              type: number
            timeOutUtc:
              type: number
            breakStartUtc:
              type: number
            breakEndUtc:
              type: number
            color:
              type: string
        sequence:
          type: number
    EmployeeWorkdayConfigurationResponse:
      type: object
      properties:
        id:
          type: string
        startDate:
          type: string
        endDate:
          type: string
        shiftPatternTemplate:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
        workdayConfigurationDetails:
          type: array
          items:
            type: object
            properties:
              shift:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  timeIn:
                    type: string
                  timeOut:
                    type: string
                  timeInUtc:
                    type: number
                  timeOutUtc:
                    type: number
                  breakStartUtc:
                    type: number
                  breakEndUtc:
                    type: number
                  color:
                    type: string
              sequence:
                type: number
        startSequence:
          type: number
        startShift:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            timeIn:
              type: string
            timeOut:
              type: string
            timeInUtc:
              type: number
            timeOutUtc:
              type: number
            breakStartUtc:
              type: number
            breakEndUtc:
              type: number
            color:
              type: string
        includeHoliday:
          type: boolean
        includeMissingShift:
          type: boolean
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
    EmployeeWorkdayConfigurationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                startDate:
                  type: string
                endDate:
                  type: string
                shiftPatternTemplate:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                workdayConfigurationDetails:
                  type: array
                  items:
                    type: object
                    properties:
                      shift:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          timeIn:
                            type: string
                          timeOut:
                            type: string
                          timeInUtc:
                            type: number
                          timeOutUtc:
                            type: number
                          breakStartUtc:
                            type: number
                          breakEndUtc:
                            type: number
                          color:
                            type: string
                      sequence:
                        type: number
                startSequence:
                  type: number
                startShift:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    timeIn:
                      type: string
                    timeOut:
                      type: string
                    timeInUtc:
                      type: number
                    timeOutUtc:
                      type: number
                    breakStartUtc:
                      type: number
                    breakEndUtc:
                      type: number
                    color:
                      type: string
                includeHoliday:
                  type: boolean
                includeMissingShift:
                  type: boolean
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
    EmployeeWorkdayConfigurationRequest:
      type: object
      properties:
        startDate:
          type: string
        endDate:
          type: string
        shiftPatternTemplate:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        startSequence:
          type: number
        includeHoliday:
          type: boolean
        includeMissingShift:
          type: boolean
        employee:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
      required:
      - startDate
      - endDate
      - shiftPatternTemplate
      - startSequence
      - includeHoliday
      - includeMissingShift
      - employee
    FingerprintItemRequest:
      type: object
      properties:
        identificationNumber:
          type: string
        time:
          type: string
      required:
      - identificationNumber
      - time
    FingerprintListRequest:
      type: array
      items:
        type: object
        properties:
          identificationNumber:
            type: string
          time:
            type: string
        required:
        - identificationNumber
        - time
    FingerprintSuccessItemResponse:
      type: object
      properties:
        identificationNumber:
          type: string
        time:
          type: string
        date:
          type: string
    EmployeeIdentificationNumberResponse:
      type: object
      properties:
        identificationNumber:
          type: string
    FingerprintFailureItemResponse:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        params:
          type: object
          properties:
            identificationNumber:
              type: string
    FingerprintResponse:
      type: object
      properties:
        successes:
          type: array
          items:
            type: object
            properties:
              identificationNumber:
                type: string
              time:
                type: string
              date:
                type: string
        failures:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              message:
                type: string
              params:
                type: object
                properties:
                  identificationNumber:
                    type: string
    HolidayItemResponse:
      type: object
      properties:
        holidayDate:
          type: string
          format: date
          description: Date of the holiday
        name:
          type: string
          description: Name of the holiday
    HolidayPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                holidayDate:
                  type: string
                  format: date
                  description: Date of the holiday
                name:
                  type: string
                  description: Name of the holiday
    LeaveBalanceItemResponse:
      type: object
      properties:
        id:
          type: string
        year:
          type: number
        accrualFrequencyType:
          type: string
        monthlyAccrualIncludeBonus:
          type: boolean
        givenDate:
          type: string
        startDate:
          type: string
        endDate:
          type: string
        expectedBalance:
          type: number
        balance:
          type: number
        bonus:
          type: number
        debt:
          type: number
        extended:
          type: boolean
        maximumExtendedDuration:
          type: number
        maximumExtendedBalance:
          type: number
        extendedBalanceIncludeBonus:
          type: boolean
        totalBalance:
          type: number
        usedLeave:
          type: number
        active:
          type: boolean
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        approvedLeave:
          type: number
        pendingLeave:
          type: number
        collectiveLeave:
          type: number
        remaining:
          type: number
        extendedDate:
          type: string
        extendedBalance:
          type: number
        extendedUsedLeave:
          type: number
        extendedCollectiveLeave:
          type: number
        extendedAvailable:
          type: number
        extendedRemaining:
          type: number
        extendedApprovedLeave:
          type: number
        extendedPendingLeave:
          type: number
    LeaveBalancePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                year:
                  type: number
                accrualFrequencyType:
                  type: string
                monthlyAccrualIncludeBonus:
                  type: boolean
                givenDate:
                  type: string
                startDate:
                  type: string
                endDate:
                  type: string
                expectedBalance:
                  type: number
                balance:
                  type: number
                bonus:
                  type: number
                debt:
                  type: number
                extended:
                  type: boolean
                maximumExtendedDuration:
                  type: number
                maximumExtendedBalance:
                  type: number
                extendedBalanceIncludeBonus:
                  type: boolean
                totalBalance:
                  type: number
                usedLeave:
                  type: number
                active:
                  type: boolean
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                approvedLeave:
                  type: number
                pendingLeave:
                  type: number
                collectiveLeave:
                  type: number
                remaining:
                  type: number
                extendedDate:
                  type: string
                extendedBalance:
                  type: number
                extendedUsedLeave:
                  type: number
                extendedCollectiveLeave:
                  type: number
                extendedAvailable:
                  type: number
                extendedRemaining:
                  type: number
                extendedApprovedLeave:
                  type: number
                extendedPendingLeave:
                  type: number
    LeaveBalanceRequest:
      type: object
      properties:
        identificationNumber:
          type: string
        year:
          type: number
        accrualFrequencyType:
          type: string
        monthlyAccrualIncludeBonus:
          type: boolean
        givenDate:
          type: string
        startDate:
          type: string
        endDate:
          type: string
        balance:
          type: number
        bonus:
          type: number
        debt:
          type: number
        extended:
          type: boolean
        maximumExtendedDuration:
          type: number
        maximumExtendedBalance:
          type: number
        extendedBalanceIncludeBonus:
          type: boolean
      required:
      - identificationNumber
      - year
      - accrualFrequencyType
      - monthlyAccrualIncludeBonus
      - givenDate
      - startDate
      - endDate
      - balance
      - bonus
      - debt
      - extended
      - maximumExtendedDuration
      - maximumExtendedBalance
      - extendedBalanceIncludeBonus
    OtherLeaveStatusResponse:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
        description:
          type: string
    OtherLeaveBalanceItemResponse:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        otherLeaveStatus:
          type: object
          properties:
            code:
              type: string
            name:
              type: string
            description:
              type: string
        year:
          type: number
        givenDate:
          type: string
        startDate:
          type: string
        endDate:
          type: string
        balance:
          type: number
        usedBalance:
          type: number
        pendingBalance:
          type: number
        approvedBalance:
          type: number
        remaining:
          type: number
        minLeaveDate:
          type: string
        maxLeaveDate:
          type: string
        active:
          type: boolean
    OtherLeaveBalancePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                employee:
                  type: object
                  properties:
                    id:
                      type: string
                    identificationNumber:
                      type: string
                    name:
                      type: string
                otherLeaveStatus:
                  type: object
                  properties:
                    code:
                      type: string
                    name:
                      type: string
                    description:
                      type: string
                year:
                  type: number
                givenDate:
                  type: string
                startDate:
                  type: string
                endDate:
                  type: string
                balance:
                  type: number
                usedBalance:
                  type: number
                pendingBalance:
                  type: number
                approvedBalance:
                  type: number
                remaining:
                  type: number
                minLeaveDate:
                  type: string
                maxLeaveDate:
                  type: string
                active:
                  type: boolean
    OtherLeaveBalanceRequest:
      type: object
      properties:
        identificationNumber:
          type: string
        otherLeaveStatusCode:
          type: string
        year:
          type: number
        balance:
          type: number
        givenDate:
          type: string
        startDate:
          type: string
        endDate:
          type: string
      required:
      - identificationNumber
      - otherLeaveStatusCode
      - year
      - balance
      - givenDate
      - startDate
      - endDate
    OtherLeaveBalanceCreateResponse:
      type: object
      properties:
        id:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            identificationNumber:
              type: string
            name:
              type: string
        otherLeaveStatus:
          type: object
          properties:
            code:
              type: string
            name:
              type: string
            description:
              type: string
        year:
          type: number
        givenDate:
          type: string
        startDate:
          type: string
        endDate:
          type: string
        balance:
          type: number
    ShiftPatternTemplateDetailResponse:
      type: object
      properties:
        shift:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            timeIn:
              type: string
            timeOut:
              type: string
            timeInUtc:
              type: number
            timeOutUtc:
              type: number
            breakStartUtc:
              type: number
            breakEndUtc:
              type: number
            color:
              type: string
        sequence:
          type: number
    ShiftPatternTemplateListItemResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        shiftPatternTemplateDetails:
          type: array
          items:
            type: object
            properties:
              shift:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  timeIn:
                    type: string
                  timeOut:
                    type: string
                  timeInUtc:
                    type: number
                  timeOutUtc:
                    type: number
                  breakStartUtc:
                    type: number
                  breakEndUtc:
                    type: number
                  color:
                    type: string
              sequence:
                type: number
    ShiftPatternTemplatePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                shiftPatternTemplateDetails:
                  type: array
                  items:
                    type: object
                    properties:
                      shift:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          timeIn:
                            type: string
                          timeOut:
                            type: string
                          timeInUtc:
                            type: number
                          timeOutUtc:
                            type: number
                          breakStartUtc:
                            type: number
                          breakEndUtc:
                            type: number
                          color:
                            type: string
                      sequence:
                        type: number
    ShiftPatternTemplateDetailItemRequest:
      type: object
      properties:
        shift:
          anyOf:
          - type: object
            nullable: true
          - type: object
            properties:
              id:
                type: string
                description: Unique identifier
            required:
            - id
        sequence:
          type: number
      required:
      - shift
      - sequence
    ShiftPatternTemplateRequest:
      type: object
      properties:
        name:
          type: string
        shiftPatternTemplateDetails:
          type: array
          items:
            type: object
            properties:
              shift:
                anyOf:
                - type: object
                  nullable: true
                - type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier
                  required:
                  - id
              sequence:
                type: number
            required:
            - shift
            - sequence
      required:
      - name
      - shiftPatternTemplateDetails
    ShiftPatternTemplateItemResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        shiftPatternTemplateDetails:
          type: array
          items:
            type: object
            properties:
              shift:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  timeIn:
                    type: string
                  timeOut:
                    type: string
                  timeInUtc:
                    type: number
                  timeOutUtc:
                    type: number
                  breakStartUtc:
                    type: number
                  breakEndUtc:
                    type: number
                  color:
                    type: string
              sequence:
                type: number
    WorkgroupWorkdayConfigurationResponse:
      type: object
      properties:
        id:
          type: string
        startDate:
          type: string
        endDate:
          type: string
        shiftPatternTemplate:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
        workdayConfigurationDetails:
          type: array
          items:
            type: object
            properties:
              shift:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  name:
                    type: string
                  timeIn:
                    type: string
                  timeOut:
                    type: string
                  timeInUtc:
                    type: number
                  timeOutUtc:
                    type: number
                  breakStartUtc:
                    type: number
                  breakEndUtc:
                    type: number
                  color:
                    type: string
              sequence:
                type: number
        startSequence:
          type: number
        startShift:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
            timeIn:
              type: string
            timeOut:
              type: string
            timeInUtc:
              type: number
            timeOutUtc:
              type: number
            breakStartUtc:
              type: number
            breakEndUtc:
              type: number
            color:
              type: string
        includeHoliday:
          type: boolean
        workgroup:
          type: object
          properties:
            id:
              type: string
            code:
              type: string
            name:
              type: string
    WorkgroupWorkdayConfigurationPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                startDate:
                  type: string
                endDate:
                  type: string
                shiftPatternTemplate:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                workdayConfigurationDetails:
                  type: array
                  items:
                    type: object
                    properties:
                      shift:
                        type: object
                        properties:
                          id:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                          timeIn:
                            type: string
                          timeOut:
                            type: string
                          timeInUtc:
                            type: number
                          timeOutUtc:
                            type: number
                          breakStartUtc:
                            type: number
                          breakEndUtc:
                            type: number
                          color:
                            type: string
                      sequence:
                        type: number
                startSequence:
                  type: number
                startShift:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
                    timeIn:
                      type: string
                    timeOut:
                      type: string
                    timeInUtc:
                      type: number
                    timeOutUtc:
                      type: number
                    breakStartUtc:
                      type: number
                    breakEndUtc:
                      type: number
                    color:
                      type: string
                includeHoliday:
                  type: boolean
                workgroup:
                  type: object
                  properties:
                    id:
                      type: string
                    code:
                      type: string
                    name:
                      type: string
    WorkgroupWorkdayConfigurationRequest:
      type: object
      properties:
        shiftPatternTemplate:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
        startDate:
          type: string
        endDate:
          type: string
        includeHoliday:
          type: boolean
        startSequence:
          type: number
        workgroup:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier
          required:
          - id
      required:
      - shiftPatternTemplate
      - startDate
      - endDate
      - includeHoliday
      - startSequence
      - workgroup
    AnomalySuspectFileResponse:
      type: object
      properties:
        filename:
          type: string
          description: Name of the file
        path:
          type: string
          description: File path
        url:
          type: string
          description: URL to access the file
    AnomalySuspectAttributeResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the attribute
        attributeKey:
          type: string
          description: Key/name of the attribute
    AnomalySuspectAttributeValueChildResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the child attribute value
        attributeValue:
          type: string
          description: Value of the child attribute
        anomalySuspectAttribute:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier for the attribute
            attributeKey:
              type: string
              description: Key/name of the attribute
    AnomalySuspectAttributeValueResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the attribute value
        attributeValue:
          type: string
          description: Value of the attribute
        score:
          type: number
          description: Score associated with the attribute value
        inputSource:
          type: string
          description: Source of the input data
          enum:
          - USER
          - OCR
        anomalySuspectAttribute:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier for the attribute
            attributeKey:
              type: string
              description: Key/name of the attribute
        child:
          type: array
          description: Child attribute values
          items:
            type: object
            properties:
              id:
                type: string
                description: Unique identifier for the child attribute value
              attributeValue:
                type: string
                description: Value of the child attribute
              anomalySuspectAttribute:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier for the attribute
                  attributeKey:
                    type: string
                    description: Key/name of the attribute
    AnomalySuspectResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the anomaly suspect
        identifier:
          type: string
          description: Anomaly suspect identifier
        file:
          type: object
          properties:
            filename:
              type: string
              description: Name of the file
            path:
              type: string
              description: File path
            url:
              type: string
              description: URL to access the file
        anomalySuspectAttributeValues:
          type: array
          description: List of anomaly suspect attribute values
          items:
            type: object
            properties:
              id:
                type: string
                description: Unique identifier for the attribute value
              attributeValue:
                type: string
                description: Value of the attribute
              score:
                type: number
                description: Score associated with the attribute value
              inputSource:
                type: string
                description: Source of the input data
                enum:
                - USER
                - OCR
              anomalySuspectAttribute:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier for the attribute
                  attributeKey:
                    type: string
                    description: Key/name of the attribute
              child:
                type: array
                description: Child attribute values
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier for the child attribute value
                    attributeValue:
                      type: string
                      description: Value of the child attribute
                    anomalySuspectAttribute:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Unique identifier for the attribute
                        attributeKey:
                          type: string
                          description: Key/name of the attribute
    AnomalySuspectPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            description: List of anomaly suspects
            items:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the anomaly suspect
                identifier:
                  type: string
                  description: Anomaly suspect identifier
                file:
                  type: object
                  properties:
                    filename:
                      type: string
                      description: Name of the file
                    path:
                      type: string
                      description: File path
                    url:
                      type: string
                      description: URL to access the file
                anomalySuspectAttributeValues:
                  type: array
                  description: List of anomaly suspect attribute values
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: Unique identifier for the attribute value
                      attributeValue:
                        type: string
                        description: Value of the attribute
                      score:
                        type: number
                        description: Score associated with the attribute value
                      inputSource:
                        type: string
                        description: Source of the input data
                        enum:
                        - USER
                        - OCR
                      anomalySuspectAttribute:
                        type: object
                        properties:
                          id:
                            type: string
                            description: Unique identifier for the attribute
                          attributeKey:
                            type: string
                            description: Key/name of the attribute
                      child:
                        type: array
                        description: Child attribute values
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: Unique identifier for the child attribute value
                            attributeValue:
                              type: string
                              description: Value of the child attribute
                            anomalySuspectAttribute:
                              type: object
                              properties:
                                id:
                                  type: string
                                  description: Unique identifier for the attribute
                                attributeKey:
                                  type: string
                                  description: Key/name of the attribute
    OAuthClientResponse:
      type: object
      properties:
        id:
          type: string
          description: OAuth client unique identifier
        clientId:
          type: string
          description: OAuth client ID used for authentication
        scope:
          type: string
          description: OAuth scopes granted to this client
        authorizedGrantTypes:
          type: string
          description: Comma-separated list of authorized grant types (e.g., client_credentials, authorization_code, refresh_token)
        authorities:
          type: string
          description: Authorities granted to this client
        webServerRedirectUri:
          type: string
          description: Redirect URI for web server flow
        authorizeAllEndpoints:
          type: boolean
          description: Whether this client is authorized to access all endpoints
    OAuthClientPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  description: OAuth client unique identifier
                clientId:
                  type: string
                  description: OAuth client ID used for authentication
                scope:
                  type: string
                  description: OAuth scopes granted to this client
                authorizedGrantTypes:
                  type: string
                  description: Comma-separated list of authorized grant types (e.g., client_credentials, authorization_code, refresh_token)
                authorities:
                  type: string
                  description: Authorities granted to this client
                webServerRedirectUri:
                  type: string
                  description: Redirect URI for web server flow
                authorizeAllEndpoints:
                  type: boolean
                  description: Whether this client is authorized to access all endpoints
            description: List of OAuth clients
    RoleIdNameResponse:
      type: object
      properties:
        id:
          type: string
          description: Role ID
        name:
          type: string
          description: Role Name
    RolePageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  description: Role ID
                name:
                  type: string
                  description: Role Name
            description: List of roles
    AuthorityDetailResponse:
      type: object
      properties:
        id:
          type: string
          description: Authority identifier
        code:
          type: string
          description: Authority code
        name:
          type: string
          description: Authority name
        description:
          type: string
          description: Authority description
        moduleName:
          type: string
          description: Module name this authority belongs to
    RoleDetailResponse:
      type: object
      properties:
        id:
          type: string
          description: Role identifier
        name:
          type: string
          description: Role name
        description:
          type: string
          description: Role description
        roleType:
          type: string
          enum:
          - ADMIN
          - DEFAULT
          - OTHERS
          description: Type of role
        cascadeOrganizationPermission:
          type: boolean
          description: Whether organization permissions cascade to child organizations
        authorities:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Authority identifier
              code:
                type: string
                description: Authority code
              name:
                type: string
                description: Authority name
              description:
                type: string
                description: Authority description
              moduleName:
                type: string
                description: Module name this authority belongs to
          description: List of authorities assigned to this role
    RoleAuthorityResponse:
      type: object
      properties:
        code:
          type: string
          description: Authority code
    RoleAuthorityPageResponse:
      allOf:
      - type: object
        required:
        - totalPages
        - last
        - totalElements
        - numberOfElements
        - first
        - size
        - number
        properties:
          totalPages:
            type: integer
            description: Total number of pages available
          last:
            type: boolean
            description: Indicates whether this is the last page
          totalElements:
            type: integer
            description: Total number of elements across all pages
          numberOfElements:
            type: integer
            description: Number of elements in the current page
          sort:
            allOf:
            - type: array
              items:
                type: object
                required:
                - direction
                - property
                properties:
                  direction:
                    type: string
                  property:
                    type: string
                  ignoreCase:
                    type: boolean
                  nullHandling:
                    type: string
                  ascending:
                    type: boolean
                  descending:
                    type: boolean
            description: Sorting information for the page. Will be present when the request includes a sort parameter.
          first:
            type: boolean
            description: Indicates whether this is the first page
          size:
            type: integer
            description: Size of the page (number of elements per page)
          number:
            type: integer
            description: Current page number (zero-indexed)
      - type: object
        properties:
          content:
            type: array
            items:
              type: object
              properties:
                code:
                  type: string
                  description: Authority code
            description: List of role authorities
    RolePermissionResponse:
      type: object
      properties:
        id:
          type: string
          description: Permission identifier
        dataId:
          type: string
          description: Data identifier (e.g., organization ID, location ID, or "ALL")
        dataType:
          type: string
          enum:
          - JOB_LEVEL
          - ORGANIZATION
          - LOCATION
          - OPERATIONAL_GROUP
          description: Type of data this permission applies to
        role:
          allOf:
          - type: object
            properties:
              id:
                type: string
                description: Role ID
              name:
                type: string
                description: Role Name
          description: Role associated with this permission
    RolePermissionContentResponse:
      type: object
      properties:
        content:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Permission identifier
              dataId:
                type: string
                description: Data identifier (e.g., organization ID, location ID, or "ALL")
              dataType:
                type: string
                enum:
                - JOB_LEVEL
                - ORGANIZATION
                - LOCATION
                - OPERATIONAL_GROUP
                description: Type of data this permission applies to
              role:
                allOf:
                - type: object
                  properties:
                    id:
                      type: string
                      description: Role ID
                    name:
                      type: string
                      description: Role Name
                description: Role associated with this permission
    EmployeeIdNameResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    RoleResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        active:
          type: boolean
    UserAndRoleResponse:
      type: object
      properties:
        id:
          type: string
        username:
          type: string
        email:
          type: string
        employee:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
        roles:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              active:
                type: boolean
  responses:
    FileDownloadResponse:
      description: OK - File download response
      headers:
        Content-Disposition:
          schema:
            type: string
            example: attachment; filename=filename.xlsx
