HR & People · Schema
Employee
A portable Employee record aligned with the common surface area of HRIS, unified-HRIS, payroll, and ATS APIs (Workday, BambooHR, Rippling, Gusto, ADP, UKG, Personio, HiBob, Merge, Finch, Kombo, Greenhouse, Lever, Ashby).
HRHRISPeople OperationsPayrollTalent AcquisitionPerformance ManagementEmployee EngagementPeople DataWorkforce ManagementUnified API
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Provider-assigned unique identifier for the employee. |
| remoteId | stringnull | The employee identifier in the source HRIS or payroll system when this record is exposed via a unified API. |
| employeeNumber | stringnull | Human-facing employee number assigned by the employer. |
| givenName | string | Given (first) name of the employee. |
| familyName | string | Family (last) name of the employee. |
| preferredName | stringnull | Name the employee prefers to be known by at work. |
| displayName | stringnull | Full name as displayed in the HRIS. |
| personalEmail | stringnull | Personal email address of the employee. |
| workEmail | stringnull | Work email address assigned to the employee. |
| workPhone | stringnull | Work phone number in E.164 form when available. |
| personalPhone | stringnull | Personal phone number in E.164 form when available. |
| dateOfBirth | stringnull | Employee's date of birth (sensitive, often restricted). |
| gender | stringnull | Self-reported gender of the employee. |
| ethnicity | stringnull | Self-reported ethnicity, where collected for equal-employment reporting. |
| maritalStatus | stringnull | Marital status, where collected for benefits administration. |
| homeAddress | object | Home address of the employee. |
| workLocation | objectnull | Office or work location assigned to the employee. |
| employmentStatus | string | Current employment status. |
| employmentType | stringnull | Type of employment relationship. |
| workerType | stringnull | Worker classification (employee vs. contingent worker). |
| jobTitle | stringnull | Job title of the employee. |
| department | stringnull | Department or organizational unit the employee belongs to. |
| team | stringnull | Team within the department. |
| businessUnit | stringnull | Business unit or division. |
| managerId | stringnull | Employee id of the direct manager. |
| directReportIds | array | Employee ids of direct reports. |
| startDate | stringnull | Date the employee started or is scheduled to start at the company. |
| originalHireDate | stringnull | Original hire date when the employee was first employed (may differ from startDate for rehires). |
| terminationDate | stringnull | Date the employee was or will be terminated. |
| terminationReason | stringnull | Reason associated with the employee's termination. |
| compensation | array | Active and historical compensation records for the employee. |
| employments | array | Employment records (position history) for the employee. |
| ssn | stringnull | Tax identifier (SSN/SIN/national id), masked or restricted by most APIs. |
| nationality | stringnull | Nationality of the employee (ISO 3166-1 alpha-2 country code). |
| preferredLanguage | stringnull | Preferred language as a BCP 47 tag. |
| avatarUrl | stringnull | URL to the employee's profile photo. |
| customFields | object | Employer- or provider-specific custom fields, keyed by field name. |
| remoteData | array | Raw, provider-native payload(s) from the source HRIS for round-trip and audit (used by unified APIs). |
| createdAt | stringnull | Timestamp the employee record was created in the source system. |
| updatedAt | stringnull | Timestamp the employee record was last modified in the source system. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/hr-and-people/refs/heads/main/json-schema/hr-and-people-employee-schema.json",
"title": "Employee",
"description": "A portable Employee record aligned with the common surface area of HRIS, unified-HRIS, payroll, and ATS APIs (Workday, BambooHR, Rippling, Gusto, ADP, UKG, Personio, HiBob, Merge, Finch, Kombo, Greenhouse, Lever, Ashby).",
"type": "object",
"required": ["id", "givenName", "familyName"],
"properties": {
"id": {
"type": "string",
"description": "Provider-assigned unique identifier for the employee.",
"example": "emp_8c2a4d31"
},
"remoteId": {
"type": ["string", "null"],
"description": "The employee identifier in the source HRIS or payroll system when this record is exposed via a unified API.",
"example": "WD-00012345"
},
"employeeNumber": {
"type": ["string", "null"],
"description": "Human-facing employee number assigned by the employer.",
"example": "E-00427"
},
"givenName": {
"type": "string",
"description": "Given (first) name of the employee.",
"example": "Avery"
},
"familyName": {
"type": "string",
"description": "Family (last) name of the employee.",
"example": "Okafor"
},
"preferredName": {
"type": ["string", "null"],
"description": "Name the employee prefers to be known by at work.",
"example": "Av"
},
"displayName": {
"type": ["string", "null"],
"description": "Full name as displayed in the HRIS.",
"example": "Avery Okafor"
},
"personalEmail": {
"type": ["string", "null"],
"format": "email",
"description": "Personal email address of the employee."
},
"workEmail": {
"type": ["string", "null"],
"format": "email",
"description": "Work email address assigned to the employee.",
"example": "[email protected]"
},
"workPhone": {
"type": ["string", "null"],
"description": "Work phone number in E.164 form when available.",
"example": "+14155550123"
},
"personalPhone": {
"type": ["string", "null"],
"description": "Personal phone number in E.164 form when available."
},
"dateOfBirth": {
"type": ["string", "null"],
"format": "date",
"description": "Employee's date of birth (sensitive, often restricted)."
},
"gender": {
"type": ["string", "null"],
"description": "Self-reported gender of the employee.",
"enum": [null, "female", "male", "non_binary", "other", "prefer_not_to_disclose"]
},
"ethnicity": {
"type": ["string", "null"],
"description": "Self-reported ethnicity, where collected for equal-employment reporting."
},
"maritalStatus": {
"type": ["string", "null"],
"description": "Marital status, where collected for benefits administration."
},
"homeAddress": {
"$ref": "#/$defs/Address",
"description": "Home address of the employee."
},
"workLocation": {
"type": ["object", "null"],
"description": "Office or work location assigned to the employee.",
"properties": {
"id": { "type": ["string", "null"] },
"name": { "type": ["string", "null"], "example": "San Francisco HQ" },
"address": { "$ref": "#/$defs/Address" }
}
},
"employmentStatus": {
"type": "string",
"description": "Current employment status.",
"enum": ["active", "pending", "leave", "terminated", "inactive"],
"example": "active"
},
"employmentType": {
"type": ["string", "null"],
"description": "Type of employment relationship.",
"enum": [null, "full_time", "part_time", "contractor", "intern", "temporary", "freelance", "other"]
},
"workerType": {
"type": ["string", "null"],
"description": "Worker classification (employee vs. contingent worker).",
"enum": [null, "employee", "contractor", "contingent", "intern"]
},
"jobTitle": {
"type": ["string", "null"],
"description": "Job title of the employee.",
"example": "Senior Software Engineer"
},
"department": {
"type": ["string", "null"],
"description": "Department or organizational unit the employee belongs to.",
"example": "Engineering"
},
"team": {
"type": ["string", "null"],
"description": "Team within the department.",
"example": "Platform"
},
"businessUnit": {
"type": ["string", "null"],
"description": "Business unit or division.",
"example": "Product"
},
"managerId": {
"type": ["string", "null"],
"description": "Employee id of the direct manager.",
"example": "emp_1f9a0c12"
},
"directReportIds": {
"type": "array",
"description": "Employee ids of direct reports.",
"items": { "type": "string" }
},
"startDate": {
"type": ["string", "null"],
"format": "date",
"description": "Date the employee started or is scheduled to start at the company.",
"example": "2024-03-04"
},
"originalHireDate": {
"type": ["string", "null"],
"format": "date",
"description": "Original hire date when the employee was first employed (may differ from startDate for rehires)."
},
"terminationDate": {
"type": ["string", "null"],
"format": "date",
"description": "Date the employee was or will be terminated."
},
"terminationReason": {
"type": ["string", "null"],
"description": "Reason associated with the employee's termination."
},
"compensation": {
"type": "array",
"description": "Active and historical compensation records for the employee.",
"items": { "$ref": "#/$defs/Compensation" }
},
"employments": {
"type": "array",
"description": "Employment records (position history) for the employee.",
"items": { "$ref": "#/$defs/Employment" }
},
"ssn": {
"type": ["string", "null"],
"description": "Tax identifier (SSN/SIN/national id), masked or restricted by most APIs."
},
"nationality": {
"type": ["string", "null"],
"description": "Nationality of the employee (ISO 3166-1 alpha-2 country code).",
"example": "US"
},
"preferredLanguage": {
"type": ["string", "null"],
"description": "Preferred language as a BCP 47 tag.",
"example": "en-US"
},
"avatarUrl": {
"type": ["string", "null"],
"format": "uri",
"description": "URL to the employee's profile photo."
},
"customFields": {
"type": "object",
"description": "Employer- or provider-specific custom fields, keyed by field name.",
"additionalProperties": true
},
"remoteData": {
"type": "array",
"description": "Raw, provider-native payload(s) from the source HRIS for round-trip and audit (used by unified APIs).",
"items": {
"type": "object",
"properties": {
"path": { "type": "string" },
"data": {}
}
}
},
"createdAt": {
"type": ["string", "null"],
"format": "date-time",
"description": "Timestamp the employee record was created in the source system."
},
"updatedAt": {
"type": ["string", "null"],
"format": "date-time",
"description": "Timestamp the employee record was last modified in the source system."
}
},
"$defs": {
"Address": {
"type": ["object", "null"],
"properties": {
"line1": { "type": ["string", "null"], "example": "123 Market Street" },
"line2": { "type": ["string", "null"] },
"city": { "type": ["string", "null"], "example": "San Francisco" },
"region": { "type": ["string", "null"], "description": "State, province, or region.", "example": "CA" },
"postalCode": { "type": ["string", "null"], "example": "94103" },
"country": { "type": ["string", "null"], "description": "ISO 3166-1 alpha-2 country code.", "example": "US" }
}
},
"Compensation": {
"type": "object",
"properties": {
"id": { "type": ["string", "null"] },
"rate": { "type": ["number", "null"], "description": "Compensation rate amount.", "example": 175000 },
"currency": { "type": ["string", "null"], "description": "ISO 4217 currency code.", "example": "USD" },
"paymentFrequency": {
"type": ["string", "null"],
"enum": [null, "hour", "day", "week", "biweekly", "semimonthly", "month", "quarter", "year"],
"example": "year"
},
"paymentUnit": {
"type": ["string", "null"],
"enum": [null, "salary", "hourly", "commission", "bonus", "equity"],
"example": "salary"
},
"effectiveDate": { "type": ["string", "null"], "format": "date" },
"endDate": { "type": ["string", "null"], "format": "date" }
}
},
"Employment": {
"type": "object",
"properties": {
"id": { "type": ["string", "null"] },
"jobTitle": { "type": ["string", "null"] },
"payRate": { "type": ["number", "null"] },
"payCurrency": { "type": ["string", "null"] },
"payPeriod": {
"type": ["string", "null"],
"enum": [null, "hour", "day", "week", "biweekly", "semimonthly", "month", "quarter", "year"]
},
"employmentType": {
"type": ["string", "null"],
"enum": [null, "full_time", "part_time", "contractor", "intern", "temporary", "freelance", "other"]
},
"effectiveDate": { "type": ["string", "null"], "format": "date" }
}
}
}
}