{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/eightfold-ai/main/json-schema/eightfold-ai-hrisemployee-schema-schema.json",
  "title": "HRISEmployeeSchema",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/eightfold-ai-api-server-v2-service-service-openapi.yml#/components/schemas/HRISEmployeeSchema",
  "type": "object",
  "properties": {
    "employeeType": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Type of the employee"
    },
    "locationCountry": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The location country of the employee"
    },
    "bonusAmount": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32",
      "readOnly": true,
      "description": "The amount of the bonus of the employee"
    },
    "middleName": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Middle name of the employee"
    },
    "employmentStatus": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Current employment status"
    },
    "managerEmail": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The email of the manager"
    },
    "positionCriticality": {
      "type": [
        "array",
        "null"
      ],
      "readOnly": true,
      "description": "The criticality of the position of the employee",
      "items": {
        "type": "string"
      }
    },
    "isContingent": {
      "type": [
        "boolean",
        "null"
      ],
      "readOnly": true,
      "description": "Is contingent"
    },
    "bonusAmountCurrency": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The currency of the bonus given to the employee"
    },
    "location": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The location of the employee"
    },
    "badges": {
      "readOnly": true,
      "description": "The badges of the employee",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/EmployeeBadge"
      }
    },
    "firstName": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "First Name of employee"
    },
    "mobility": {
      "readOnly": true,
      "nullable": true,
      "description": "The mobility of the employee",
      "allOf": [
        {
          "$ref": "#/$defs/EmployeeMobility"
        }
      ]
    },
    "bu": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The Business unit of the employee"
    },
    "email": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "List of Emails of the employee comma seperated"
    },
    "bonusAmountFrequency": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The frequency of the bonus pay to the employee"
    },
    "basePayCurrency": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The currency of the base pay of the employee"
    },
    "basePay": {
      "readOnly": true,
      "nullable": true,
      "description": "The base pay of the employee",
      "allOf": [
        {
          "$ref": "#/$defs/Pay"
        }
      ]
    },
    "level": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The job level of the employee"
    },
    "maritalStatus": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Marital status of the employee"
    },
    "terminationType": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Type of termination (voluntary / involuntary)"
    },
    "userId": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The userId of the employee"
    },
    "lastReviewRating": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The last review rating of the employee"
    },
    "externalJobId": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "External job id of the employee"
    },
    "additionalManagers": {
      "readOnly": true,
      "description": "The additional managers of the employee",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/AdditionalManager"
      }
    },
    "customInfo": {
      "type": [
        "object",
        "null"
      ],
      "readOnly": true,
      "description": "The custom info captured for the employee by custom fields"
    },
    "employmentDates": {
      "readOnly": true,
      "description": "Employee lifecycle dates not covered by hiringDate / roleChangeDate / terminationDate, as a typed list of {type, date}",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/EmployeeEmploymentDate"
      }
    },
    "tenureYears": {
      "type": [
        "number",
        "null"
      ],
      "format": "float",
      "readOnly": true,
      "description": "The total tenure years of the employee"
    },
    "systemId": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The system id of the HRIS system in EF"
    },
    "employeeCriticality": {
      "readOnly": true,
      "nullable": true,
      "description": "The criticality information of the employee",
      "allOf": [
        {
          "$ref": "#/$defs/EmployeeCriticality"
        }
      ]
    },
    "salutation": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Salutation / title prefix (Mr, Ms, Dr, etc.)"
    },
    "companyName": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The company name of the employee"
    },
    "phone": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The phone number of the employee"
    },
    "employmentBasis": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Employment basis (full-time / part-time)"
    },
    "performanceRatings": {
      "readOnly": true,
      "description": "The performance rating of the employee",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/EmployeePerformanceRating"
      }
    },
    "languages": {
      "readOnly": true,
      "description": "The employee language proficiencies",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/EmployeeLanguageProficiency"
      }
    },
    "title": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The title of the employee"
    },
    "pronouns": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Preferred pronouns of the employee"
    },
    "externalSystemIds": {
      "readOnly": true,
      "description": "The employee's identifier in each external system (payroll vendor, etc.), as a typed list of {type, value}",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/EmployeeExternalSystemId"
      }
    },
    "id": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The unique id of the Employee in the HRIS system"
    },
    "terminationDate": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The termination date of the employee"
    },
    "hiringDate": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The hiring date of the employee"
    },
    "managerUserId": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The user id of the manager in HRIS system"
    },
    "citizenship": {
      "type": [
        "array",
        "null"
      ],
      "readOnly": true,
      "description": "Citizenships held by the employee (a list, to carry dual citizenship)",
      "items": {
        "type": "string"
      }
    },
    "preferredLastName": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Last name the employee goes by"
    },
    "terminationRegrettable": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Whether the termination was regrettable"
    },
    "successionPlan": {
      "readOnly": true,
      "nullable": true,
      "description": "The succession plan of the employee",
      "allOf": [
        {
          "$ref": "#/$defs/EmployeeSuccessionPlan"
        }
      ]
    },
    "bonus": {
      "readOnly": true,
      "nullable": true,
      "description": "The bonus given to the employee",
      "allOf": [
        {
          "$ref": "#/$defs/Pay"
        }
      ]
    },
    "lastActivityTs": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32",
      "readOnly": true,
      "description": "The last activity timestamp"
    },
    "managerFullname": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The full name of the manager"
    },
    "rehireEligibility": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Rehire eligibility status of the employee"
    },
    "jobCode": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The job code of the employee"
    },
    "timezone": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Working time zone"
    },
    "tenureCurrentRoleYears": {
      "type": [
        "number",
        "null"
      ],
      "format": "float",
      "readOnly": true,
      "description": "The no of years the employee is in current role"
    },
    "basePayFrequency": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The frequency of the base pay of the employee"
    },
    "shift": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Shift label (morning / evening / night / general)"
    },
    "lob": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The lob of the employee"
    },
    "roleChangeDate": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The last role change date of the employee"
    },
    "preferredFirstName": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "First name the employee goes by"
    },
    "role": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "The role of the employee"
    },
    "eligibleForTransfer": {
      "type": [
        "boolean",
        "null"
      ],
      "readOnly": true,
      "description": "Is the employee eligible for transfer or not"
    },
    "workplaceModel": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Workplace model (office / hybrid / remote)"
    },
    "lastName": {
      "type": [
        "string",
        "null"
      ],
      "readOnly": true,
      "description": "Last Name of employee"
    }
  },
  "$defs": {
    "AdditionalManager": {
      "type": "object",
      "properties": {
        "capacityManagerEmail": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true,
          "description": "The email of the capacity manager"
        },
        "employeeId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Employee id of the additional manager in the HRIS system"
        },
        "type": {
          "type": [
            "string",
            "null"
          ],
          "description": "Type of the additional manager (e.g. capacity)"
        },
        "email": {
          "type": [
            "string",
            "null"
          ],
          "description": "Email of the additional manager"
        }
      }
    },
    "EmployeeBadge": {
      "type": "object",
      "properties": {
        "badgeId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The id of the badge"
        },
        "userId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The user id the badge belongs to."
        },
        "creator": {
          "type": [
            "string",
            "null"
          ],
          "description": "The creator of the badge"
        },
        "photoUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "The photo url"
        },
        "lastModifiedTs": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32",
          "description": "The last modified timestamp of the badge"
        },
        "photoContent": {
          "nullable": true,
          "description": "The photo content",
          "allOf": [
            {
              "$ref": "#/$defs/PhotoContent"
            }
          ]
        },
        "comment": {
          "type": [
            "string",
            "null"
          ],
          "description": "comment on the badge"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "description": "The title of the badge"
        }
      }
    },
    "EmployeeCriticality": {
      "type": "object",
      "properties": {
        "riskOfLoss": {
          "type": [
            "string",
            "null"
          ],
          "description": "The risk of looking the employee"
        },
        "impactOfLoss": {
          "type": [
            "string",
            "null"
          ],
          "description": "The impact of loss of the employee"
        }
      }
    },
    "EmployeeEmploymentDate": {
      "type": "object",
      "properties": {
        "date": {
          "type": [
            "string",
            "null"
          ],
          "description": "The date itself, as YYYY-MM-DD"
        },
        "type": {
          "type": "string",
          "enum": [
            "original_hire",
            "continuous_service",
            "internal_transfer",
            "probation_end",
            "employment_confirmation",
            "last_working_day",
            "resignation"
          ],
          "description": "Type of lifecycle date. One of ats.base.EmploymentDateType"
        }
      },
      "required": [
        "type"
      ]
    },
    "EmployeeExternalSystemId": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "paylocity",
            "greythr"
          ],
          "description": "External system holding the id. One of ats.base.ExternalSystemType"
        },
        "value": {
          "type": [
            "string",
            "null"
          ],
          "description": "Identifier of the employee in that system"
        }
      },
      "required": [
        "type"
      ]
    },
    "EmployeeLanguageProficiency": {
      "type": "object",
      "properties": {
        "read": {
          "type": [
            "string",
            "null"
          ],
          "description": "The reading proficiency"
        },
        "speak": {
          "type": [
            "string",
            "null"
          ],
          "description": "The speaking proficiency"
        },
        "overall": {
          "type": [
            "string",
            "null"
          ],
          "description": "The overall proficiency"
        },
        "language": {
          "type": [
            "string",
            "null"
          ],
          "description": "The language string"
        },
        "write": {
          "type": [
            "string",
            "null"
          ],
          "description": "The writing proficiency"
        }
      }
    },
    "EmployeeMobility": {
      "type": "object",
      "properties": {
        "comments": {
          "type": [
            "string",
            "null"
          ],
          "description": "The comments"
        },
        "travelPercentageMin": {
          "type": [
            "number",
            "null"
          ],
          "format": "float",
          "description": "The min travel percentage"
        },
        "relocationLocations": {
          "type": [
            "array",
            "null"
          ],
          "description": "The relocation locations",
          "items": {
            "type": "string"
          }
        },
        "relocation": {
          "type": [
            "string",
            "null"
          ],
          "description": "The relocation information"
        },
        "travel": {
          "type": [
            "string",
            "null"
          ],
          "description": "The travel detail"
        },
        "travelPercentageMax": {
          "type": [
            "number",
            "null"
          ],
          "format": "float",
          "description": "The max travel percentage"
        }
      }
    },
    "EmployeePerformanceRating": {
      "type": "object",
      "properties": {
        "periodEndDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "The performance period end date"
        },
        "rating": {
          "type": [
            "number",
            "null"
          ],
          "format": "float",
          "description": "The rating given"
        },
        "reviewedBy": {
          "nullable": true,
          "description": "The reviewer info",
          "allOf": [
            {
              "$ref": "#/$defs/User"
            }
          ]
        },
        "ratingLabel": {
          "type": [
            "string",
            "null"
          ],
          "description": "The rating level"
        },
        "reviewComments": {
          "type": [
            "string",
            "null"
          ],
          "description": "The review comments"
        },
        "periodStartDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "The performance period start date"
        },
        "reviewType": {
          "type": [
            "string",
            "null"
          ],
          "description": "The review type"
        }
      }
    },
    "EmployeeSuccessionPlan": {
      "type": "object",
      "properties": {
        "comments": {
          "type": [
            "string",
            "null"
          ],
          "description": "The comments"
        },
        "planDate": {
          "type": [
            "string",
            "null"
          ],
          "description": "The date of the plan"
        },
        "planName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the plan"
        },
        "successors": {
          "description": "The successors of an employee",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/EmployeeSuccessor"
          }
        }
      }
    },
    "EmployeeSuccessor": {
      "type": "object",
      "properties": {
        "employeeDetails": {
          "nullable": true,
          "description": "The employee details",
          "allOf": [
            {
              "$ref": "#/$defs/User"
            }
          ]
        },
        "readiness": {
          "type": [
            "string",
            "null"
          ],
          "description": "The readiness of the successor"
        },
        "rank": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32",
          "description": "The rank"
        },
        "comments": {
          "type": [
            "string",
            "null"
          ],
          "description": "The comments"
        }
      }
    },
    "Pay": {
      "type": "object",
      "properties": {
        "frequency": {
          "type": [
            "string",
            "null"
          ],
          "description": "The frequency of pay"
        },
        "amount": {
          "type": [
            "number",
            "null"
          ],
          "format": "float",
          "description": "The amount of pay"
        },
        "currency": {
          "type": [
            "string",
            "null"
          ],
          "description": "The currency of pay in ISO format"
        }
      }
    },
    "PhotoContent": {
      "type": "object",
      "properties": {
        "extension": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true,
          "description": "The extension of the photo"
        },
        "content": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true,
          "description": "The actual string content"
        },
        "isBase64": {
          "type": [
            "boolean",
            "null"
          ],
          "readOnly": true,
          "description": "Is the content base 64 encoded"
        }
      }
    },
    "User": {
      "type": "object",
      "properties": {
        "atsUserGroups": {
          "description": "The user groups",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/UserGroup"
          }
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the user"
        },
        "atsRoles": {
          "type": [
            "array",
            "null"
          ],
          "description": "The ats roles",
          "items": {
            "type": "string"
          }
        },
        "userId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The user id of the user"
        },
        "firstName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The first name of the user"
        },
        "lastName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The last name of the user"
        },
        "email": {
          "type": [
            "string",
            "null"
          ],
          "format": "email",
          "description": "The email of the user"
        }
      }
    },
    "UserGroup": {
      "type": "object",
      "properties": {
        "userGroupId": {
          "type": [
            "string",
            "null"
          ],
          "format": "email",
          "description": ""
        }
      }
    }
  }
}