generated: '2026-08-04' method: derived source: openapi/harri-employee-openapi.yml, openapi/harri-employer-openapi.json description: Entity-relationship graph derived from the component schemas of Harri's two published OpenAPI documents. Relationships come from schema $ref links (has_one / has_many) and from id-reference fields whose name matches another schema (belongs_to). Harri publishes no separate object reference, and no id-prefix scheme is documented — identifiers are plain numeric or string ids. root_entities: - Employee - Location - Position - JobTitle - PayType - HourlyRate - AnnualRate - EmploymentPeriod - LocationPeriod - Absence - Tronc - MaxWeeklyHours - CostCenter - Event path_scoping: corporate: /api/v{n}/... — scoped to the corporate account bound to the API credentials franchisee: /api/v{n}/franchisees/{franchiseeId}/... — the same resource graph re-rooted at a franchisee counts: entities: 105 relationships: 44 entities: - name: AbsenceReasonOptionsList source: openapi/harri-employee-openapi.yml type: object fields: 1 - name: AbsenceRequest source: openapi/harri-employee-openapi.yml type: object fields: 0 - name: AbsenceRequestDay source: openapi/harri-employee-openapi.yml type: object fields: 6 - name: AbsenceRequestFull source: openapi/harri-employee-openapi.yml type: object fields: 0 - name: AbsenceRequestList source: openapi/harri-employee-openapi.yml type: object fields: 1 - name: AbsenceRequestNoId source: openapi/harri-employee-openapi.yml type: object fields: 9 - name: AbsenceRequestUpdate source: openapi/harri-employee-openapi.yml type: object fields: 8 - name: Address source: openapi/harri-employee-openapi.yml type: object fields: 6 - name: AnnualRate source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: BankAccount source: openapi/harri-employee-openapi.yml type: object fields: 14 - name: BasicEmployeePositionRelatedInfo source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: CorporateUser source: openapi/harri-employee-openapi.yml type: object fields: 7 - name: CostCenter source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: CreatedEmployee source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: CreatedEmployeeV7 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedAnnualPayRate source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: DeprecatedAnnualPayRateV2 source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: DeprecatedAnnualRate source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: DeprecatedBankAccount source: openapi/harri-employee-openapi.yml type: object fields: 7 - name: DeprecatedCreatedEmployee source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedCreatedEmployeeV2 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedEmployee source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedEmployeeAggregatedInfo source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedEmployeePosition source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedEmployeePositionRelatedInfo source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedEmployeePositionRelatedInfoV2 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedEmployeePositionV2 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedEmployeeProfile source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedEmployeeProfileV2 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedEmployeeProfileV3 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedEmployeeV1 source: openapi/harri-employee-openapi.yml type: object fields: 24 - name: DeprecatedEmployeeV2 source: openapi/harri-employee-openapi.yml type: object fields: 22 - name: DeprecatedEmployeeV3 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedEmployeesListV1 source: openapi/harri-employee-openapi.yml type: object fields: 12 - name: DeprecatedEmployeesListV2 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: DeprecatedHourlyRate source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: DeprecatedHourlyRateV2 source: openapi/harri-employee-openapi.yml type: object fields: 6 - name: DeprecatedMaxWeeklyHours source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: DeprecatedMaxWeeklyHoursV2 source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: DeprecatedPayRate source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: DeprecatedPayRateV2 source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: DeprecatedPayType source: openapi/harri-employee-openapi.yml type: object fields: 6 - name: DeprecatedPayTypeV2 source: openapi/harri-employee-openapi.yml type: object fields: 7 - name: DeprecatedTippedStatus source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: DeprecatedTronc source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: DeprecatedTroncAmount source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: DeprecatedTroncPoint source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: EmployeeAggregatedInfo source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: EmployeeAggregatedInfoV6 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: EmployeeBasicInfo source: openapi/harri-employee-openapi.yml type: object fields: 11 - name: EmployeeCustomFieldsCityWithholdingDetails source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: EmployeeCustomFieldsEmergencyContact source: openapi/harri-employee-openapi.yml type: object fields: 6 - name: EmployeeCustomFieldsEmploymentInfoAdditionalInfo source: openapi/harri-employee-openapi.yml type: object fields: 17 - name: EmployeeCustomFieldsEqualOpportunityInformation source: openapi/harri-employee-openapi.yml type: object fields: 14 - name: EmployeeCustomFieldsFederalWithholdingDetails source: openapi/harri-employee-openapi.yml type: object fields: 17 - name: EmployeeCustomFieldsLocalWithholdingDetails source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: EmployeeCustomFieldsPayrollTaxesAdditionalInfo source: openapi/harri-employee-openapi.yml type: object fields: 7 - name: EmployeeCustomFieldsPayrollTaxesPensionInformation source: openapi/harri-employee-openapi.yml type: object fields: 9 - name: EmployeeCustomFieldsPersonalInfoAdditionalInfo source: openapi/harri-employee-openapi.yml type: object fields: 21 - name: EmployeeCustomFieldsStateWithholdingDetails source: openapi/harri-employee-openapi.yml type: object fields: 11 - name: EmployeeJobTitle source: openapi/harri-employee-openapi.yml type: object fields: 0 - name: EmployeePosition source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: EmployeePositionRelatedInfo source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: EmployeeProfile source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: EmployeeProfileV2 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: EmployeesListV2 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: EmployeesListV3 source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: EmploymentPeriod source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: Event source: openapi/harri-employee-openapi.yml type: object fields: 7 - name: HourlyRate source: openapi/harri-employee-openapi.yml type: object fields: 6 - name: JobTitle source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: Location source: openapi/harri-employee-openapi.yml type: object fields: 5 - name: LocationPeriod source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: MapperData source: openapi/harri-employee-openapi.yml type: object fields: 1 - name: Mapping source: openapi/harri-employee-openapi.yml type: object fields: 2 - name: MaxWeeklyHours source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: MaxWeeklyHoursV2 source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: MaxWeeklyHoursV4 source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: MaxWeeklyHoursWorkingPatternRequest source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: MaxWeeklyHoursWorkingPatternUpdateRequest source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: Pagination source: openapi/harri-employee-openapi.yml type: object fields: 1 - name: PayType source: openapi/harri-employee-openapi.yml type: object fields: 4 - name: Position source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: PostEmployeePayTypeResponseV1 source: openapi/harri-employee-openapi.yml type: object fields: 5 - name: PostEmployeePayTypeResponseV2 source: openapi/harri-employee-openapi.yml type: object fields: 6 - name: PostEmployeePayTypeResponseV3 source: openapi/harri-employee-openapi.yml type: object fields: 5 - name: RehireEmployeeV4Response source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: RehireEmployeeV5Response source: openapi/harri-employee-openapi.yml type: null fields: 0 - name: TerminationReason source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: TerminationReasonGroup source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: TerminationReasonV2 source: openapi/harri-employee-openapi.yml type: object fields: 2 - name: TippedStatus source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: TroncAmount source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: TroncPoint source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: UpdateMapper source: openapi/harri-employee-openapi.yml type: object fields: 1 - name: UserOperationFailed_400 source: openapi/harri-employer-openapi.json type: object fields: 1 - name: UserOperationFailed_403 source: openapi/harri-employer-openapi.json type: object fields: 1 - name: UserOperationFailed_404 source: openapi/harri-employer-openapi.json type: object fields: 2 - name: UserOperationSuccessful source: openapi/harri-employer-openapi.json type: object fields: 3 - name: UserRetrievedSuccessful source: openapi/harri-employer-openapi.json type: object fields: 1 - name: WorkingPattern source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: WorkingPatternDays source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: WorkingPatternDaysV2 source: openapi/harri-employee-openapi.yml type: object fields: 3 - name: WorkingPatternV2 source: openapi/harri-employee-openapi.yml type: object fields: 5 - name: WorkingPatternV4 source: openapi/harri-employee-openapi.yml type: object fields: 5 relationships: - from: AbsenceRequestList to: AbsenceRequest kind: has_many via: requests evidence: $ref - from: AbsenceRequestNoId to: AbsenceRequestDay kind: has_many via: days evidence: $ref - from: DeprecatedEmployeeV1 to: Address kind: has_one via: address evidence: $ref - from: DeprecatedEmployeeV1 to: EmploymentPeriod kind: has_one via: employment_period evidence: $ref - from: DeprecatedEmployeeV1 to: EmployeeJobTitle kind: has_many via: job_titles evidence: $ref - from: DeprecatedEmployeeV1 to: Location kind: has_many via: locations evidence: $ref - from: DeprecatedEmployeeV1 to: DeprecatedAnnualPayRate kind: has_one via: pay_type evidence: $ref - from: DeprecatedEmployeeV1 to: DeprecatedEmployeePosition kind: has_one via: pay_type evidence: $ref - from: DeprecatedEmployeeV1 to: DeprecatedEmployeePosition kind: has_many via: positions evidence: $ref - from: DeprecatedEmployeeV2 to: Address kind: has_one via: address evidence: $ref - from: DeprecatedEmployeeV2 to: EmploymentPeriod kind: has_one via: employment_period evidence: $ref - from: DeprecatedEmployeeV2 to: EmployeeJobTitle kind: has_many via: job_titles evidence: $ref - from: DeprecatedEmployeeV2 to: Location kind: has_many via: locations evidence: $ref - from: DeprecatedEmployeeV2 to: DeprecatedAnnualPayRate kind: has_one via: pay_type evidence: $ref - from: DeprecatedEmployeeV2 to: DeprecatedEmployeePosition kind: has_one via: pay_type evidence: $ref - from: DeprecatedEmployeeV2 to: DeprecatedEmployeePosition kind: has_many via: positions evidence: $ref - from: DeprecatedMaxWeeklyHours to: WorkingPattern kind: has_one via: working_pattern evidence: $ref - from: DeprecatedMaxWeeklyHoursV2 to: WorkingPattern kind: has_one via: working_pattern evidence: $ref - from: DeprecatedPayType to: DeprecatedAnnualPayRate kind: has_one via: annual_pay_rate evidence: $ref - from: DeprecatedPayTypeV2 to: DeprecatedAnnualPayRateV2 kind: has_many via: annual_pay_rates evidence: $ref - from: Event to: Location kind: belongs_to via: location_id evidence: id-reference-field - from: MaxWeeklyHours to: WorkingPattern kind: has_one via: working_pattern evidence: $ref - from: MaxWeeklyHoursV2 to: WorkingPatternV2 kind: has_many via: working_patterns evidence: $ref - from: MaxWeeklyHoursV4 to: WorkingPatternV4 kind: has_many via: working_patterns evidence: $ref - from: PostEmployeePayTypeResponseV1 to: AnnualRate kind: has_one via: annual_rate evidence: $ref - from: PostEmployeePayTypeResponseV1 to: DeprecatedMaxWeeklyHours kind: has_one via: max_weekly_hours evidence: $ref - from: PostEmployeePayTypeResponseV1 to: DeprecatedHourlyRate kind: has_many via: positions evidence: $ref - from: PostEmployeePayTypeResponseV1 to: TippedStatus kind: has_many via: positions evidence: $ref - from: PostEmployeePayTypeResponseV1 to: DeprecatedTronc kind: has_one via: tronc evidence: $ref - from: PostEmployeePayTypeResponseV2 to: AnnualRate kind: has_one via: annual_rate evidence: $ref - from: PostEmployeePayTypeResponseV2 to: DeprecatedMaxWeeklyHours kind: has_one via: max_weekly_hours evidence: $ref - from: PostEmployeePayTypeResponseV2 to: HourlyRate kind: has_many via: positions evidence: $ref - from: PostEmployeePayTypeResponseV2 to: TippedStatus kind: has_many via: positions evidence: $ref - from: PostEmployeePayTypeResponseV2 to: TroncAmount kind: has_one via: tronc_amount evidence: $ref - from: PostEmployeePayTypeResponseV2 to: TroncPoint kind: has_one via: tronc_point evidence: $ref - from: PostEmployeePayTypeResponseV3 to: AnnualRate kind: has_one via: annual_rate evidence: $ref - from: PostEmployeePayTypeResponseV3 to: HourlyRate kind: has_many via: positions evidence: $ref - from: PostEmployeePayTypeResponseV3 to: TippedStatus kind: has_many via: positions evidence: $ref - from: PostEmployeePayTypeResponseV3 to: TroncAmount kind: has_one via: tronc_amount evidence: $ref - from: PostEmployeePayTypeResponseV3 to: TroncPoint kind: has_one via: tronc_point evidence: $ref - from: TerminationReasonGroup to: TerminationReasonV2 kind: has_many via: termination_reasons evidence: $ref - from: WorkingPattern to: WorkingPatternDays kind: has_many via: working_pattern_days evidence: $ref - from: WorkingPatternV2 to: WorkingPatternDaysV2 kind: has_many via: working_pattern_days evidence: $ref - from: WorkingPatternV4 to: WorkingPatternDays kind: has_many via: working_pattern_days evidence: $ref