brynq-sdk-zenegy 1.3.3__tar.gz → 1.3.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/PKG-INFO +1 -1
  2. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/employees.py +35 -0
  3. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/absences.py +10 -10
  4. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/companies.py +2 -2
  5. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/company_cost_centers.py +2 -2
  6. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/company_departments.py +7 -7
  7. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/employee_documents.py +2 -2
  8. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/employee_pay_checks.py +2 -2
  9. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/employee_pensions.py +4 -4
  10. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/employees.py +55 -49
  11. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/global_value_sets.py +9 -9
  12. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/global_values.py +10 -10
  13. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/payrolls.py +4 -4
  14. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/payslips.py +2 -2
  15. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/supplements_and_deductions_rates.py +5 -5
  16. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/zenegy.py +13 -9
  17. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy.egg-info/PKG-INFO +1 -1
  18. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/setup.py +1 -1
  19. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/__init__.py +0 -0
  20. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/absence.py +0 -0
  21. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/companies.py +0 -0
  22. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/cost_center.py +0 -0
  23. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/departments.py +0 -0
  24. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/employee_documents.py +0 -0
  25. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/global_value_sets.py +0 -0
  26. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/global_values.py +0 -0
  27. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/paychecks.py +0 -0
  28. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/payroll.py +0 -0
  29. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/payslips.py +0 -0
  30. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/pensions.py +0 -0
  31. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/schemas/__init__.py +0 -0
  32. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy/supplements_and_deductions_rates.py +0 -0
  33. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy.egg-info/SOURCES.txt +0 -0
  34. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy.egg-info/dependency_links.txt +0 -0
  35. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy.egg-info/not-zip-safe +0 -0
  36. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy.egg-info/requires.txt +0 -0
  37. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/brynq_sdk_zenegy.egg-info/top_level.txt +0 -0
  38. {brynq_sdk_zenegy-1.3.3 → brynq_sdk_zenegy-1.3.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brynq_sdk_zenegy
3
- Version: 1.3.3
3
+ Version: 1.3.5
4
4
  Summary: Zenegy wrapper from BrynQ
5
5
  Author: BrynQ
6
6
  Author-email: support@brynq.com
@@ -133,6 +133,41 @@ class Employees:
133
133
  except Exception as e:
134
134
  raise Exception(f"Failed to create employee: {str(e)}")
135
135
 
136
+ def create_and_patch(self, data: Dict[str, Any]) -> requests.Response:
137
+ """
138
+ PostEmployeeAsync
139
+
140
+ This method handles employee creation in two steps due to Zenegy API limitations:
141
+ 1. Create the employee via POST with a limited set of required fields.
142
+ 2. Patch the newly created employee with the full dataset to update remaining fields
143
+ (some fields are read-only during creation but writable during updates).
144
+
145
+ Args:
146
+ data (Dict[str, Any]): The full employee data dictionary.
147
+
148
+ Returns:
149
+ requests.Response: The response from the initial POST creation request.
150
+ """
151
+ try:
152
+ req_data = EmployeeCreate(**data)
153
+ req_body = req_data.model_dump(by_alias=True, mode='json', exclude_none=True)
154
+ response = self.zenegy.post(endpoint=self.endpoint.lstrip('/'), json=req_body)
155
+ self.zenegy.raise_for_status_with_details(response)
156
+
157
+ # Get the uid of the created employee
158
+ response_data = response.json()
159
+ if isinstance(response_data, str):
160
+ uid = response_data
161
+ elif isinstance(response_data, dict):
162
+ uid = response_data['data']['uid']
163
+
164
+ # Patch the employee with the fields (patch what was created is okay, overwrite with same value)
165
+ self.patch(uid, data)
166
+
167
+ return response
168
+ except Exception as e:
169
+ raise Exception(f"Failed to create employee: {str(e)}")
170
+
136
171
  def upsert(self, data: Dict[str, Any]) -> requests.Response:
137
172
  """
138
173
  UpsertEmployeeAsync
@@ -12,7 +12,7 @@ class Department(BaseModel):
12
12
  number: Optional[str] = Field(default=None)
13
13
  has_work_schema: Optional[bool] = Field(alias="hasWorkSchema", default=None)
14
14
  id: Optional[int] = Field(default=None)
15
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
15
+ department_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
16
16
 
17
17
  class Config:
18
18
  populate_by_name = True
@@ -21,7 +21,7 @@ class Department(BaseModel):
21
21
  class Center(BaseModel):
22
22
  """Schema for cost center or profit center information."""
23
23
  id: Optional[int] = Field(default=None)
24
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
24
+ center_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
25
25
  name: Optional[str] = Field(default=None)
26
26
  number: Optional[str] = Field(default=None)
27
27
  type: Optional[str] = Field(default=None)
@@ -53,7 +53,7 @@ class Employee(BaseModel):
53
53
  employee_number: Optional[str] = Field(alias="employeeNumber", default=None)
54
54
  extra_employee_number: Optional[str] = Field(alias="extraEmployeeNumber", default=None)
55
55
  id: Optional[int] = Field(default=None)
56
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
56
+ employee_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
57
57
 
58
58
  class Config:
59
59
  populate_by_name = True
@@ -68,7 +68,7 @@ class CompanyAbsenceType(BaseModel):
68
68
  is_custom_absence_type: Optional[bool] = Field(alias="isCustomAbsenceType", default=None)
69
69
  search_name: Optional[str] = Field(alias="searchName", default=None)
70
70
  id: Optional[int] = Field(default=None)
71
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
71
+ company_absence_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
72
72
 
73
73
  class Config:
74
74
  populate_by_name = True
@@ -89,7 +89,7 @@ class AbsenceData(BaseModel):
89
89
  company_absence_type: Optional[CompanyAbsenceType] = Field(alias="companyAbsenceType", default=None)
90
90
  employee_payroll_fk: Optional[int] = Field(alias="employeePayrollFk", default=None)
91
91
  id: Optional[int] = Field(default=None)
92
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
92
+ abscence_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
93
93
 
94
94
  class Config:
95
95
  populate_by_name = True
@@ -111,7 +111,7 @@ class CreateAbsenceRequest(BaseModel):
111
111
  """
112
112
  Schema for creating absence request.
113
113
  """
114
- uid: Optional[UUID] = Field(
114
+ absence_uid: Optional[UUID] = Field(
115
115
  default=None,
116
116
  description="Absence UID (server-assigned on creation)",
117
117
  example="00000000-0000-0000-0000-000000000000",
@@ -188,7 +188,7 @@ class GetAbsenceAsyncResponse(BaseModel):
188
188
  company_absence_type: Optional[CompanyAbsenceType] = Field(alias="companyAbsenceType", default=None)
189
189
  employee_payroll_fk: Optional[int] = Field(alias="employeePayrollFk", default=None)
190
190
  id: Optional[int] = Field(default=None)
191
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
191
+ absence_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None)
192
192
  class Config:
193
193
  populate_by_name = True
194
194
 
@@ -196,7 +196,7 @@ class UpdateAbsenceRequest(BaseModel):
196
196
  """
197
197
  Schema for updating absence request.
198
198
  """
199
- uid: Optional[UUID] = Field(
199
+ absence_uid: Optional[UUID] = Field(
200
200
  example="00000000-0000-0000-0000-000000000000", default=None,
201
201
  description="Absence UID to update",
202
202
  )
@@ -376,7 +376,7 @@ class AbsenceGet(BrynQPanderaDataFrameModel):
376
376
  absence_type_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Absence type name", alias="absenceTypeName")
377
377
  employee_payroll_fk: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee payroll foreign key", alias="employeePayrollFk")
378
378
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Absence ID", alias="id")
379
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Absence UID", alias="uid")
379
+ absence_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Absence UID", alias="uid")
380
380
 
381
381
  # Company Absence Type fields
382
382
  company_absence_type_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company absence type name", alias="companyAbsenceType__name")
@@ -389,5 +389,5 @@ class AbsenceGet(BrynQPanderaDataFrameModel):
389
389
  company_absence_type_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company absence type UID", alias="companyAbsenceType__uid")
390
390
 
391
391
  class _Annotation:
392
- primary_key = "uid"
392
+ primary_key = "absence_uid"
393
393
  foreign_keys = {}
@@ -22,7 +22,7 @@ class CompaniesGet(BrynQPanderaDataFrameModel):
22
22
  source: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Source", alias="source")
23
23
  area: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Area", alias="area")
24
24
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Company ID", alias="id")
25
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company UID", alias="uid")
25
+ company_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company UID", alias="uid")
26
26
  name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company name", alias="name")
27
27
  logo_url: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Logo URL", alias="logoUrl")
28
28
 
@@ -38,5 +38,5 @@ class CompaniesGet(BrynQPanderaDataFrameModel):
38
38
  identity_providers: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Identity providers", alias="identityProviders")
39
39
 
40
40
  class _Annotation:
41
- primary_key = "uid"
41
+ primary_key = "company_uid"
42
42
  foreign_keys = {}
@@ -41,8 +41,8 @@ class CostCentersGet(BrynQPanderaDataFrameModel):
41
41
  cost_center_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center code", alias="costCenterCode")
42
42
  type: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center type", alias="type")
43
43
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Cost center ID", alias="id")
44
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center UID", alias="uid")
44
+ cost_center_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center UID", alias="uid")
45
45
 
46
46
  class _Annotation:
47
- primary_key = "uid"
47
+ primary_key = "cost_center_uid"
48
48
  foreign_keys = {}
@@ -14,7 +14,7 @@ class ResponsiblePerson(BaseModel):
14
14
  employee_number: Optional[str] = Field(alias="employeeNumber", default=None, description="Employee number", example="E-2001")
15
15
  extra_employee_number: Optional[str] = Field(alias="extraEmployeeNumber", default=None, description="Secondary employee number", example="EXT-10")
16
16
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=12)
17
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Responsible person UID")
17
+ reponsible_person_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Responsible person UID")
18
18
 
19
19
  class Config:
20
20
  populate_by_name = True
@@ -26,7 +26,7 @@ class CompanyWorkSchema(BaseModel):
26
26
  working_hours_per_day: Optional[float] = Field(alias="workingHoursPerDay", default=None, description="Working hours per day", example=7.4)
27
27
  can_be_deleted: Optional[bool] = Field(alias="canBeDeleted", default=None, description="Whether this work schema can be deleted", example=True)
28
28
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=3)
29
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Work schema UID")
29
+ work_schema_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Work schema UID")
30
30
 
31
31
  class Config:
32
32
  populate_by_name = True
@@ -41,7 +41,7 @@ class CompanyDepartmentData(BaseModel):
41
41
  number: Optional[str] = Field(default=None, description="Department number/code", example="D-100")
42
42
  has_work_schema: Optional[bool] = Field(alias="hasWorkSchema", default=None, description="Whether department has a work schema", example=True)
43
43
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=15)
44
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Department UID")
44
+ department_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Department UID")
45
45
 
46
46
  class Config:
47
47
  populate_by_name = True
@@ -72,7 +72,7 @@ class GetCompanyDepartmentResponse(BaseModel):
72
72
  number: Optional[str] = Field(default=None, description="Department number/code", example="D-100")
73
73
  has_work_schema: Optional[bool] = Field(alias="hasWorkSchema", default=None, description="Whether department has a work schema", example=True)
74
74
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=15)
75
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Department UID")
75
+ department_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Department UID")
76
76
  class Config:
77
77
  populate_by_name = True
78
78
 
@@ -86,7 +86,7 @@ class GetWholeCompanyDepartmentResponse(BaseModel):
86
86
  number: Optional[str] = Field(default=None, description="Department number/code", example="D-100")
87
87
  has_work_schema: Optional[bool] = Field(alias="hasWorkSchema", default=None, description="Whether department has a work schema", example=True)
88
88
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=15)
89
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Department UID")
89
+ department_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Department UID")
90
90
  class Config:
91
91
  populate_by_name = True
92
92
 
@@ -124,7 +124,7 @@ class DepartmentsGet(BrynQPanderaDataFrameModel):
124
124
  number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department number", alias="number")
125
125
  has_work_schema: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has work schema", alias="hasWorkSchema")
126
126
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Department ID", alias="id")
127
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department UID", alias="uid")
127
+ department_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department UID", alias="uid")
128
128
 
129
129
  # Responsible persons (as JSON string since it's a list of objects)
130
130
  responsible_persons: Optional[Series[object]] = pa.Field(coerce=True, nullable=True, description="Responsible persons list", alias="responsiblePersons")
@@ -143,5 +143,5 @@ class DepartmentsGet(BrynQPanderaDataFrameModel):
143
143
  work_schema_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Work schema UID", alias="workSchema__uid")
144
144
 
145
145
  class _Annotation:
146
- primary_key = "uid"
146
+ primary_key = "department_uid"
147
147
  foreign_keys = {}
@@ -20,11 +20,11 @@ class EmployeeDocumentsGet(BrynQPanderaDataFrameModel):
20
20
  extension: Optional[Series[pd.Int64Dtype]] = pa.Field(nullable=True, description="File extension enum", alias="extension", isin=[0, 1, 2, 3, 4, 5])
21
21
  is_document_owner: Optional[Series[pd.BooleanDtype]] = pa.Field(nullable=True, description="Whether the employee owns the document", alias="isDocumentOwner")
22
22
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(nullable=True, description="Numeric document ID", alias="id")
23
- uid: Optional[Series[pd.StringDtype]] = pa.Field(nullable=True,description="Document UID", alias="uid")
23
+ document_uid: Optional[Series[pd.StringDtype]] = pa.Field(nullable=True,description="Document UID", alias="uid")
24
24
 
25
25
  class Config:
26
26
  coerce = True
27
27
 
28
28
  class _Annotation:
29
- primary_key = "uid"
29
+ primary_key = "document_uid"
30
30
  foreign_keys = {}
@@ -81,7 +81,7 @@ class PayChecksGet(BrynQPanderaDataFrameModel):
81
81
  percentage: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Percentage", alias="percentage")
82
82
  is_included_in_holiday_entitlement_salary_reduction: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is included in holiday entitlement salary reduction", alias="isIncludedInHolidayEntitlementSalaryReduction")
83
83
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Pay check ID", alias="id")
84
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pay check UID", alias="uid")
84
+ pay_check_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pay check UID", alias="uid")
85
85
 
86
86
  # Raw nested objects (if API returns unflattened objects as-is)
87
87
  rate: Optional[Series[object]] = pa.Field(coerce=True, nullable=True, description="Raw rate object", alias="rate")
@@ -165,5 +165,5 @@ class PayChecksGet(BrynQPanderaDataFrameModel):
165
165
  profit_center_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Profit center UID", alias="profitCenter__uid")
166
166
 
167
167
  class _Annotation:
168
- primary_key = "uid"
168
+ primary_key = "pay_check_uid"
169
169
  foreign_keys = {}
@@ -16,7 +16,7 @@ class Pension(BaseModel):
16
16
  pbs_number: Optional[str] = Field(alias="pbsNumber", default=None, description="PBS number", example="1234")
17
17
  type: Optional[int] = Field(default=None, description="Pension type code", example=1)
18
18
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=10)
19
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Pension UID")
19
+ pension_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Pension UID")
20
20
 
21
21
  class Config:
22
22
  populate_by_name = True
@@ -87,7 +87,7 @@ class EmployeePensionCreate(BaseModel):
87
87
  alias="calculateFromAmPension", default=None,
88
88
  description="Calculate contributions from AM pension base", example=True
89
89
  )
90
- uid: Optional[UUID] = Field(
90
+ employee_pension_uid: Optional[UUID] = Field(
91
91
  example="00000000-0000-0000-0000-000000000000", default=None,
92
92
  description="Inserted employee pension UID"
93
93
  )
@@ -121,7 +121,7 @@ class PensionGet(BrynQPanderaDataFrameModel):
121
121
  group_life_agreement_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Group life agreement number", alias="groupLifeAgreementNumber")
122
122
  calculate_from_am_pension: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Calculate from AM pension", alias="calculateFromAmPension")
123
123
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Pension ID", alias="id")
124
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pension UID", alias="uid")
124
+ pension_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pension UID", alias="uid")
125
125
 
126
126
  # Pension fields (nested object)
127
127
  pension_identifier: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pension identifier", alias="pension__identifier")
@@ -136,5 +136,5 @@ class PensionGet(BrynQPanderaDataFrameModel):
136
136
  pension_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Pension UID", alias="pension__uid")
137
137
 
138
138
  class _Annotation:
139
- primary_key = "uid"
139
+ primary_key = "pension_uid"
140
140
  foreign_keys = {}
@@ -21,7 +21,7 @@ class User(BaseModel):
21
21
  is_active: Optional[bool] = Field(alias="isActive", default=None, description="Whether the user is active", example=True)
22
22
  name: Optional[str] = Field(default=None, description="User display name", example="John Doe")
23
23
  photo_url: Optional[str] = Field(alias="photoUrl", default=None, description="URL to user's profile photo", example="https://example.com/photo.jpg")
24
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="User UID")
24
+ user_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="User UID")
25
25
 
26
26
  class Config:
27
27
  populate_by_name = True
@@ -35,7 +35,7 @@ class Center(BaseModel):
35
35
  cost_center_code: Optional[str] = Field(alias="costCenterCode", default=None, description="Cost center code", example="SALES")
36
36
  type: Optional[str] = Field(default=None, description="Center type (cost/profit)", example="cost")
37
37
  id: Optional[int] = Field(default=None, description="Center ID (internal numeric)", example=7)
38
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Center UID")
38
+ center_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Center UID")
39
39
 
40
40
  class Config:
41
41
  populate_by_name = True
@@ -47,7 +47,7 @@ class Department(BaseModel):
47
47
  number: Optional[str] = Field(default=None, description="Department code/number", example="D-100")
48
48
  has_work_schema: Optional[bool] = Field(alias="hasWorkSchema", default=None, description="Whether department has a work schema", example=True)
49
49
  id: Optional[int] = Field(default=None, description="Department ID (internal numeric)", example=15)
50
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Department UID")
50
+ department_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Department UID")
51
51
 
52
52
  class Config:
53
53
  populate_by_name = True
@@ -73,7 +73,7 @@ class Company(BaseModel):
73
73
  is_extra_holiday_entitlement_in_hours_enabled_l: Optional[bool] = Field(alias="isExtraHolidayEntitlementInHoursEnabled", default=None, description="Extra holiday entitlement in hours enabled", example=False)
74
74
  extra_holiday_entitlement_in_hours: Optional[bool] = Field(alias="extraHolidayEntitlementInHours", default=None, description="Extra holiday entitlement applies in hours", example=False)
75
75
  id: Optional[int] = Field(default=None, description="Company ID (internal numeric)", example=5)
76
- uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Company UID")
76
+ company_uid: Optional[UUID] = Field(example="00000000-0000-0000-0000-000000000000", default=None, description="Company UID")
77
77
  name: Optional[str] = Field(default=None, description="Company name", example="Acme A/S")
78
78
  logo_url: Optional[str] = Field(alias="logoUrl", default=None, description="Company logo URL", example="https://example.com/logo.png")
79
79
 
@@ -106,7 +106,7 @@ class EmployeeBase(BaseModel):
106
106
  is_resigned: Optional[bool] = Field(None, alias="isResigned", description="Resigned status", example=False)
107
107
  cpr: Optional[str] = None
108
108
  salary_type: Optional[int] = Field(None, alias="salaryType", description="Salary type code", example=1)
109
- contact_phone: Optional[str] = Field(None, alias="contactPhone", description="Contact phone number", example="+45 12 34 56 78")
109
+ mobile_phone: Optional[str] = Field(None, alias="contactPhone", description="Contact phone number", example="+45 12 34 56 78")
110
110
  email: Optional[str] = Field(None, alias="contactEmail", description="Contact email address", example="john.doe@example.com")
111
111
  department: Optional[Department] = None
112
112
  cost_center: Optional[Center] = Field(None, alias="costCenter", description="Employee cost center object")
@@ -122,7 +122,7 @@ class EmployeeBase(BaseModel):
122
122
  employee_number: Optional[str] = Field(None, alias="employeeNumber", description="Internal employee number", example="E-1001")
123
123
  extra_employee_number: Optional[str] = Field(None, alias="extraEmployeeNumber", description="Secondary employee number", example="EXT-55")
124
124
  id: Optional[int] = None
125
- uid: Optional[UUID] = Field(None, example="00000000-0000-0000-0000-000000000000", description="Employee UID")
125
+ employee_uid: Optional[UUID] = Field(None, example="00000000-0000-0000-0000-000000000000", description="Employee UID")
126
126
 
127
127
  class Config:
128
128
  populate_by_name = True
@@ -516,6 +516,7 @@ class EmployeeCreate(BaseModel):
516
516
 
517
517
  class Config:
518
518
  populate_by_name = True
519
+ extra = 'ignore'
519
520
 
520
521
 
521
522
  class EmployeeUpdate(BaseModel):
@@ -616,11 +617,11 @@ class EmployeeUpdate(BaseModel):
616
617
  None, alias='extraEmployeeNumber',
617
618
  description="Secondary employee number", example="EXT-55"
618
619
  )
619
- # department_id: Optional[int] = Field(
620
- # None, alias='departmentId',
621
- # description="Department numeric identifier", example=10
622
- # )
623
- company_department_uid: Optional[UUID] = Field(
620
+ department_id: Optional[int] = Field(
621
+ None, alias='departmentId',
622
+ description="Department numeric identifier", example=10
623
+ )
624
+ department_uid: Optional[UUID] = Field(
624
625
  None,
625
626
  alias='companyDepartmentUid',
626
627
  description="Target department UID", example="00000000-0000-0000-0000-000000000000"
@@ -747,7 +748,7 @@ class EmployeeEmploymentUpdate(BaseModel):
747
748
  ancinity_date: Optional[datetime] = Field(None, alias='ancinityDate', description="Seniority date", example="2023-06-01T00:00:00Z")
748
749
  is_active: Optional[bool] = Field(None, alias='isActive', description="Active status", example=True)
749
750
  job_description: Optional[str] = Field(None, alias='jobDescription', description="Job description text", example="Backend developer")
750
- company_department_uid: Optional[UUID] = Field(None, alias='companyDepartmentUid', description="Target department UID", example="00000000-0000-0000-0000-000000000000")
751
+ department_uid: Optional[UUID] = Field(None, alias='companyDepartmentUid', description="Target department UID", example="00000000-0000-0000-0000-000000000000")
751
752
  company_cost_center_uid: Optional[UUID] = Field(None, alias='companyCostCenterUid', description="Company cost center UID", example="00000000-0000-0000-0000-000000000000")
752
753
  company_profit_center_uid: Optional[UUID] = Field(None, alias='companyProfitCenterUid', description="Company profit center UID", example="00000000-0000-0000-0000-000000000000")
753
754
  booking_group_uid: Optional[UUID] = Field(None, alias='bookingGroupUid', description="Booking group UID", example="00000000-0000-0000-0000-000000000000")
@@ -821,7 +822,7 @@ class HolidayPayReceiver(BaseModel):
821
822
  id: int = Field(description="Receiver ID (internal numeric)", example=1)
822
823
  name: str = Field(description="Receiver name", example="Feriekonto")
823
824
  type: int = Field(description="Receiver type code", example=0)
824
- uid: UUID = Field(description="Receiver UID", example="00000000-0000-0000-0000-000000000000")
825
+ holiday_pay_receiver_uid: UUID = Field(description="Receiver UID", example="00000000-0000-0000-0000-000000000000")
825
826
 
826
827
 
827
828
  class Company(BaseModel):
@@ -845,7 +846,7 @@ class Company(BaseModel):
845
846
  logo_url: Optional[str] = Field(default=None, description="Company logo URL", example="https://example.com/logo.png")
846
847
  name: str = Field(description="Company name", example="Acme A/S")
847
848
  p_number: str = Field(description="Company P-number", example="P12345")
848
- uid: UUID = Field(description="Company UID", example="00000000-0000-0000-0000-000000000000")
849
+ company_uid: UUID = Field(description="Company UID", example="00000000-0000-0000-0000-000000000000")
849
850
 
850
851
 
851
852
  class CostCenter(BaseModel):
@@ -855,7 +856,7 @@ class CostCenter(BaseModel):
855
856
  id: int = Field(description="Cost center ID (internal numeric)", example=10)
856
857
  number_of_employees: int = Field(description="Number of employees in cost center", example=42)
857
858
  type: Optional[str] = Field(default=None, description="Dimension type (cost/profit)", example="cost")
858
- uid: UUID = Field(description="Cost center UID", example="00000000-0000-0000-0000-000000000000")
859
+ cost_center_uid: UUID = Field(description="Cost center UID", example="00000000-0000-0000-0000-000000000000")
859
860
 
860
861
 
861
862
  class Department(BaseModel):
@@ -863,7 +864,7 @@ class Department(BaseModel):
863
864
  id: int = Field(description="Department ID (internal numeric)", example=15)
864
865
  name: str = Field(description="Department name", example="Sales")
865
866
  number: str = Field(description="Department number/code", example="D-100")
866
- uid: UUID = Field(description="Department UID", example="00000000-0000-0000-0000-000000000000")
867
+ department_uid: UUID = Field(description="Department UID", example="00000000-0000-0000-0000-000000000000")
867
868
 
868
869
 
869
870
  class EmployeeDepartmentIncomeSplit(BaseModel):
@@ -873,7 +874,7 @@ class EmployeeDepartmentIncomeSplit(BaseModel):
873
874
  id: int
874
875
  percentage: float
875
876
  type: str
876
- uid: UUID
877
+ employee_uid: UUID
877
878
 
878
879
 
879
880
  class CompanyGlobalValueReferenceUidsPair(BaseModel):
@@ -966,7 +967,7 @@ class EmployeePatch(BaseModel):
966
967
  employee_number: Optional[str] = Field(default=None, alias='EmployeeNumber')
967
968
  extra_employee_number: Optional[str] = Field(default=None, alias='ExtraEmployeeNumber')
968
969
  department_id: Optional[int] = Field(default=None, alias='DepartmentId')
969
- company_department_uid: Optional[str] = Field(default=None, alias='CompanyDepartmentUid')
970
+ department_uid: Optional[str] = Field(default=None, alias='CompanyDepartmentUid')
970
971
 
971
972
  # Start saldo (subset; extend as needed)
972
973
  start_g_days: Optional[float] = Field(default=None, alias='StartGDays')
@@ -1188,10 +1189,11 @@ class EmployeePatch(BaseModel):
1188
1189
  labour_benefits_package_for_pension: Optional[float] = Field(default=None, alias='LabourBenefitsPackageForPension')
1189
1190
  labour_agreement_code: Optional[str] = Field(default=None, alias='LabourAgreementCode')
1190
1191
  extra_holiday_entitlement_per_payroll: Optional[float] = Field(default=None, alias='ExtraHolidayEntitlementPerPayroll')
1192
+ global_value_set_uid: Optional[str] = Field(default=None, alias='GlobalValueSetUid')
1191
1193
 
1192
1194
  class Config:
1193
1195
  populate_by_name = True
1194
- extra = 'allow'
1196
+ extra = 'ignore'
1195
1197
 
1196
1198
  class PensionBase(BaseModel):
1197
1199
  name: Optional[str] = Field(default=None, description="Pension name", example="ATP Pension")
@@ -1199,7 +1201,7 @@ class PensionBase(BaseModel):
1199
1201
  pbs_number: Optional[str] = Field(default=None, description="PBS number", example="1234")
1200
1202
  type: Optional[int] = Field(default=None, description="Pension type code", example=1)
1201
1203
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=10)
1202
- uid: Optional[UUID] = Field(default=None, description="Pension UID", example="00000000-0000-0000-0000-000000000000")
1204
+ pension_uid: Optional[UUID] = Field(default=None, description="Pension UID", example="00000000-0000-0000-0000-000000000000")
1203
1205
 
1204
1206
  class Config:
1205
1207
  populate_by_name = True
@@ -1213,7 +1215,7 @@ class BenefitBase(BaseModel):
1213
1215
  included_in_am_pension_base: Optional[bool] = Field(default=None, description="Included in AM pension base", example=True)
1214
1216
  included_in_holiday_entitlement_salary_base: Optional[bool] = Field(default=None, description="Included in holiday entitlement salary base", example=False)
1215
1217
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=20)
1216
- uid: Optional[UUID] = Field(default=None, description="Benefit UID", example="00000000-0000-0000-0000-000000000000")
1218
+ benefit_uid: Optional[UUID] = Field(default=None, description="Benefit UID", example="00000000-0000-0000-0000-000000000000")
1217
1219
 
1218
1220
  class Config:
1219
1221
  populate_by_name = True
@@ -1224,7 +1226,7 @@ class CompanyDepartmentBase(BaseModel):
1224
1226
  number: Optional[str] = Field(default=None, description="Department number/code", example="D-100")
1225
1227
  has_work_schema: Optional[bool] = Field(default=None, description="Whether department has a work schema", example=True)
1226
1228
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=15)
1227
- uid: Optional[UUID] = Field(default=None, description="Department UID", example="00000000-0000-0000-0000-000000000000")
1229
+ department_uid: Optional[UUID] = Field(default=None, description="Department UID", example="00000000-0000-0000-0000-000000000000")
1228
1230
 
1229
1231
  class Config:
1230
1232
  populate_by_name = True
@@ -1232,7 +1234,7 @@ class CompanyDepartmentBase(BaseModel):
1232
1234
 
1233
1235
  class Dimension(BaseModel):
1234
1236
  id: Optional[int] = Field(default=None, description="Dimension ID", example=1)
1235
- uid: Optional[UUID] = Field(default=None, description="Dimension UID", example="00000000-0000-0000-0000-000000000000")
1237
+ dimension_uid: Optional[UUID] = Field(default=None, description="Dimension UID", example="00000000-0000-0000-0000-000000000000")
1236
1238
  name: Optional[str] = Field(default=None, description="Dimension name", example="Profit Center")
1237
1239
  number: Optional[str] = Field(default=None, description="Dimension number/code", example="PC-01")
1238
1240
  type: Optional[str] = Field(default=None, description="Dimension type", example="profit")
@@ -1248,7 +1250,7 @@ class CompanyCostCenter(BaseModel):
1248
1250
  cost_center_code: Optional[str] = Field(default=None, description="Cost center code", example="FIN")
1249
1251
  type: Optional[str] = Field(default=None, description="Type (cost/profit)", example="cost")
1250
1252
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=10)
1251
- uid: Optional[UUID] = Field(default=None, description="Cost center UID", example="00000000-0000-0000-0000-000000000000")
1253
+ cost_center_uid: Optional[UUID] = Field(default=None, description="Cost center UID", example="00000000-0000-0000-0000-000000000000")
1252
1254
 
1253
1255
  class Config:
1254
1256
  populate_by_name = True
@@ -1263,7 +1265,7 @@ class EmployeeResignation(BaseModel):
1263
1265
  is_processed: Optional[bool] = Field(default=None, description="Resignation processed flag", example=False)
1264
1266
  last_work_day: Optional[datetime] = Field(default=None, description="Last working day (ISO 8601)", example="2024-05-30T00:00:00Z")
1265
1267
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=1)
1266
- uid: Optional[UUID] = Field(default=None, description="Resignation UID", example="00000000-0000-0000-0000-000000000000")
1268
+ resignation_uid: Optional[UUID] = Field(default=None, description="Resignation UID", example="00000000-0000-0000-0000-000000000000")
1267
1269
 
1268
1270
  class Config:
1269
1271
  populate_by_name = True
@@ -1286,7 +1288,7 @@ class EmployeeAmPension(BaseModel):
1286
1288
  insurance_amount: Optional[float] = Field(default=None, description="Insurance amount", example=250.0)
1287
1289
  insurance_union_code: Optional[str] = Field(default=None, description="Insurance union code", example="IU-1")
1288
1290
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=1)
1289
- uid: Optional[UUID] = Field(default=None, description="AM pension UID", example="00000000-0000-0000-0000-000000000000")
1291
+ am_pension_uid: Optional[UUID] = Field(default=None, description="AM pension UID", example="00000000-0000-0000-0000-000000000000")
1290
1292
 
1291
1293
  class Config:
1292
1294
  populate_by_name = True
@@ -1303,7 +1305,7 @@ class EmployeeBenefitBase(BaseModel):
1303
1305
  included_in_am_pension_base: Optional[bool] = None
1304
1306
  included_in_holiday_entitlement_salary_base: Optional[bool] = None
1305
1307
  id: Optional[int] = None
1306
- uid: Optional[UUID] = None
1308
+ benefit_base_uid: Optional[UUID] = None
1307
1309
 
1308
1310
  class Config:
1309
1311
  populate_by_name = True
@@ -1325,7 +1327,7 @@ class EmployeeTaxCard(BaseModel):
1325
1327
  date_of_received_skat_message_response: Optional[datetime] = Field(default=None, description="Date of received SKAT message response", example="2024-01-22T00:00:00Z")
1326
1328
  skat_message: Optional[str] = Field(default=None, description="SKAT message", example="OK")
1327
1329
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=1)
1328
- uid: Optional[UUID] = Field(default=None, description="Tax card UID", example="00000000-0000-0000-0000-000000000000")
1330
+ tax_card_uid: Optional[UUID] = Field(default=None, description="Tax card UID", example="00000000-0000-0000-0000-000000000000")
1329
1331
 
1330
1332
  class Config:
1331
1333
  populate_by_name = True
@@ -1351,7 +1353,7 @@ class EmployeePension(BaseModel):
1351
1353
  additional_contribution_amount_type: Optional[int] = Field(default=None, description="Additional contribution amount type", example=0)
1352
1354
  additional_contribution_amount: Optional[float] = Field(default=None, description="Additional contribution amount", example=100.0)
1353
1355
  id: Optional[int] = Field(default=None, description="Internal numeric identifier", example=1)
1354
- uid: Optional[UUID] = Field(default=None, description="Employee pension UID", example="00000000-0000-0000-0000-000000000000")
1356
+ pension_uid: Optional[UUID] = Field(default=None, description="Employee pension UID", example="00000000-0000-0000-0000-000000000000")
1355
1357
 
1356
1358
  class Config:
1357
1359
  populate_by_name = True
@@ -1364,7 +1366,7 @@ class RelativeBase(BaseModel):
1364
1366
  email: Optional[str] = None
1365
1367
  relation: Optional[str] = None
1366
1368
  id: Optional[int] = None
1367
- uid: Optional[UUID] = None
1369
+ relative_base_uid: Optional[UUID] = None
1368
1370
 
1369
1371
  class Config:
1370
1372
  populate_by_name = True
@@ -1375,7 +1377,7 @@ class HolidayPayReceiverBase(BaseModel):
1375
1377
  type: Optional[int] = None
1376
1378
  cvr: Optional[str] = None
1377
1379
  id: Optional[int] = None
1378
- uid: Optional[UUID] = None
1380
+ holiday_pay_receiver_uid: Optional[UUID] = None
1379
1381
 
1380
1382
  class Config:
1381
1383
  populate_by_name = True
@@ -1410,7 +1412,7 @@ class CompanyModel(BaseModel):
1410
1412
  is_holiday_hindrance_enabled: Optional[bool] = None
1411
1413
  extra_holiday_entitlement_in_hours: Optional[bool] = None
1412
1414
  id: Optional[int] = None
1413
- uid: Optional[UUID] = None
1415
+ company_model_uid: Optional[UUID] = None
1414
1416
  name: Optional[str] = None
1415
1417
  logo_url: Optional[str] = None
1416
1418
 
@@ -1424,7 +1426,7 @@ class User(BaseModel):
1424
1426
  name: Optional[str] = None
1425
1427
  photo_url: Optional[str] = None
1426
1428
  id: Optional[int] = None
1427
- uid: Optional[UUID] = None
1429
+ user_uid: Optional[UUID] = None
1428
1430
 
1429
1431
  class Config:
1430
1432
  populate_by_name = True
@@ -1778,7 +1780,7 @@ class GetEmployeeAsyncResponse(BaseModel):
1778
1780
  is_resigned: Optional[bool] = None
1779
1781
  cpr: Optional[str] = None
1780
1782
  salary_type: Optional[int] = None
1781
- contact_phone: Optional[str] = None
1783
+ mobile_phone: Optional[str] = None
1782
1784
  email: Optional[str] = None
1783
1785
  department: Optional[CompanyDepartmentBase] = None
1784
1786
  cost_center: Optional[Dimension] = None
@@ -1794,14 +1796,14 @@ class GetEmployeeAsyncResponse(BaseModel):
1794
1796
  employee_number: Optional[str] = None
1795
1797
  extra_employee_number: Optional[str] = None
1796
1798
  id: Optional[int] = None
1797
- uid: Optional[UUID] = None
1799
+ employee_uid: Optional[UUID] = None
1798
1800
 
1799
1801
 
1800
1802
  class EmployeesGet(BrynQPanderaDataFrameModel):
1801
1803
  """Flattened schema for Zenegy Employees Output data"""
1802
1804
 
1803
1805
  # Employee Identification
1804
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee unique identifier", alias="uid")
1806
+ employee_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee unique identifier", alias="uid")
1805
1807
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee ID", alias="id")
1806
1808
  employee_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee number", alias="employeeNumber")
1807
1809
  extra_employee_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Extra employee number", alias="extraEmployeeNumber")
@@ -1813,11 +1815,11 @@ class EmployeesGet(BrynQPanderaDataFrameModel):
1813
1815
 
1814
1816
  # Contact Information
1815
1817
  email: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Contact email", alias="contactEmail")
1816
- contact_phone: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Contact phone", alias="contactPhone")
1818
+ mobile_phone: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Contact phone", alias="contactPhone")
1817
1819
  address: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Address", alias="address")
1818
1820
  city: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="City", alias="city")
1819
1821
  postal_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Postal number", alias="postalNumber")
1820
- mobile_phone: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Mobile phone", alias="mobilePhone")
1822
+ #mobile_phone: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Mobile phone", alias="mobilePhone")
1821
1823
 
1822
1824
  # Employment Information
1823
1825
  employment_date: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employment date", alias="employmentDate")
@@ -1938,36 +1940,36 @@ class EmployeesGet(BrynQPanderaDataFrameModel):
1938
1940
  company_cost_center: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Raw company cost center object", alias="companyCostCenter")
1939
1941
 
1940
1942
  class _Annotation:
1941
- primary_key = "uid"
1943
+ primary_key = "employee_uid"
1942
1944
  foreign_keys = {
1943
1945
  "company_uid": {
1944
1946
  "parent_schema": "CompaniesGet",
1945
- "parent_column": "uid",
1947
+ "parent_column": "company_uid",
1946
1948
  "cardinality": "N:1",
1947
1949
  },
1948
1950
  "department_uid": {
1949
1951
  "parent_schema": "DepartmentsGet",
1950
- "parent_column": "uid",
1952
+ "parent_column": "department_uid",
1951
1953
  "cardinality": "N:1",
1952
1954
  },
1953
1955
  "cost_center_uid": {
1954
1956
  "parent_schema": "CostCentersGet",
1955
- "parent_column": "uid",
1957
+ "parent_column": "cost_center_uid",
1956
1958
  "cardinality": "N:1",
1957
1959
  },
1958
1960
  "profit_center_uid": {
1959
1961
  "parent_schema": "CostCentersGet",
1960
- "parent_column": "uid",
1962
+ "parent_column": "cost_center_uid",
1961
1963
  "cardinality": "N:1",
1962
1964
  },
1963
1965
  "company_cost_center_uid": {
1964
1966
  "parent_schema": "CostCentersGet",
1965
- "parent_column": "uid",
1967
+ "parent_column": "cost_center_uid",
1966
1968
  "cardinality": "N:1",
1967
1969
  },
1968
1970
  "company_profit_center_uid": {
1969
1971
  "parent_schema": "CostCentersGet",
1970
- "parent_column": "uid",
1972
+ "parent_column": "cost_center_uid",
1971
1973
  "cardinality": "N:1",
1972
1974
  },
1973
1975
  }
@@ -1977,7 +1979,7 @@ class EmployeesGetById(BrynQPanderaDataFrameModel):
1977
1979
  """Detailed flattened schema for Zenegy Employee (get_by_id) output data"""
1978
1980
 
1979
1981
  # Reuse base identification and common fields from EmployeesGet
1980
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee unique identifier", alias="uid")
1982
+ employee_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee unique identifier", alias="uid")
1981
1983
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee ID", alias="id")
1982
1984
  employee_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee number", alias="employeeNumber")
1983
1985
  extra_employee_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Extra employee number", alias="extraEmployeeNumber")
@@ -1985,11 +1987,11 @@ class EmployeesGetById(BrynQPanderaDataFrameModel):
1985
1987
  title: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee title", alias="title")
1986
1988
  cpr: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="CPR number", alias="cpr")
1987
1989
  email: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Contact email", alias="contactEmail")
1988
- contact_phone: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Contact phone", alias="contactPhone")
1990
+ mobile_phone: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Contact phone", alias="contactPhone")
1989
1991
  address: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Address", alias="address")
1990
1992
  city: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="City", alias="city")
1991
1993
  postal_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Postal number", alias="postalNumber")
1992
- mobile_phone: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Mobile phone", alias="mobilePhone")
1994
+ #mobile_phone: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Mobile phone", alias="mobilePhone")
1993
1995
  employment_date: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employment date", alias="employmentDate")
1994
1996
  date_of_resignation: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Date of resignation", alias="dateOfResignation")
1995
1997
  last_work_day: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Last work day", alias="lastWorkDay")
@@ -2005,6 +2007,10 @@ class EmployeesGetById(BrynQPanderaDataFrameModel):
2005
2007
  has_profile_image: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Has profile image", alias="hasProfileImage")
2006
2008
  is_resigned_within_last_year: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is resigned within last year", alias="isResignedWithinLastyear")
2007
2009
  is_resigned_with_registrations: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is resigned with registrations", alias="isResignedWithRegistrations")
2010
+ konto_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Konto number", alias="kontoNumber")
2011
+ reg_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Registration number", alias="regNumber")
2012
+ country_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Country code", alias="country")
2013
+
2008
2014
 
2009
2015
  # Nested: company
2010
2016
  company_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company UID", alias="company__uid")
@@ -2368,5 +2374,5 @@ class EmployeesGetById(BrynQPanderaDataFrameModel):
2368
2374
  # but the above covers additional detailed fields present in get_by_id responses.
2369
2375
 
2370
2376
  class _Annotation:
2371
- primary_key = "uid"
2377
+ primary_key = "employee_uid"
2372
2378
  foreign_keys = {}
@@ -25,7 +25,7 @@ class GlobalValueSetCreate(BaseModel):
25
25
 
26
26
  class GlobalValueSetUpdate(BaseModel):
27
27
  """Schema for updating global value sets - Based on Zalary.Models.GlobalValueSets.GlobalValueSetUpdateRequest."""
28
- uid: Optional[str] = Field(default=None, description="Global value set UID", example="00000000-0000-0000-0000-000000000000")
28
+ global_value_set_uid: Optional[str] = Field(default=None, description="Global value set UID", example="00000000-0000-0000-0000-000000000000")
29
29
  name: str = Field(description="Global value set name", example="Updated Overtime Set")
30
30
  number: str = Field(description="Global value set number/code", example="GVS-001-UPD")
31
31
 
@@ -84,7 +84,7 @@ class CompanyDepartmentBaseDto(BaseModel):
84
84
  number: Optional[str] = Field(default=None, description="Department number/code", example="DEPT-001")
85
85
  has_work_schema: Optional[bool] = Field(alias="hasWorkSchema", default=None, description="Whether department has work schema", example=True)
86
86
  id: Optional[int] = Field(default=None, description="Department ID", example=1)
87
- uid: Optional[str] = Field(default=None, description="Department UID", example="00000000-0000-0000-0000-000000000000")
87
+ department_uid: Optional[str] = Field(default=None, description="Department UID", example="00000000-0000-0000-0000-000000000000")
88
88
 
89
89
  class Config:
90
90
  allow_population_by_field_name = True
@@ -100,7 +100,7 @@ class EmployeesGlobalValueSetDto(BaseModel):
100
100
  name: Optional[str] = Field(default=None, description="Employee name", example="John Doe")
101
101
  employee_number: Optional[str] = Field(alias="employeeNumber", default=None, description="Employee number", example="EMP-001")
102
102
  id: Optional[int] = Field(default=None, description="Employee ID", example=1)
103
- uid: Optional[str] = Field(default=None, description="Employee UID", example="00000000-0000-0000-0000-000000000000")
103
+ employee_uid: Optional[str] = Field(default=None, description="Employee UID", example="00000000-0000-0000-0000-000000000000")
104
104
 
105
105
  class Config:
106
106
  allow_population_by_field_name = True
@@ -127,14 +127,14 @@ class AddCompanyGlobalValueRequest(BaseModel):
127
127
  class GlobalValueSetsGet(BrynQPanderaDataFrameModel):
128
128
  """Flattened schema for Zenegy Global Value Sets Output data"""
129
129
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Global value set ID", alias="id")
130
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value set UID", alias="uid")
130
+ global_value_set_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value set UID", alias="uid")
131
131
  name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value set name", alias="name")
132
132
  number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value set number", alias="number")
133
133
  number_of_employees: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Number of employees", alias="numberOfEmployees")
134
134
  number_of_global_values: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Number of global values", alias="numberOfGlobalValues")
135
135
 
136
136
  class _Annotation:
137
- primary_key = "uid"
137
+ primary_key = "global_value_set_uid"
138
138
  foreign_keys = {}
139
139
 
140
140
 
@@ -142,7 +142,7 @@ class AssignedEmployeesGet(BrynQPanderaDataFrameModel):
142
142
  """Flattened schema for assigned employees in global value set context"""
143
143
  # Employee fields
144
144
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee ID", alias="id")
145
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee UID", alias="uid")
145
+ employee_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee UID", alias="uid")
146
146
  name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee name", alias="name")
147
147
  employee_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee number", alias="employeeNumber")
148
148
  salary_type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee salary type", alias="salaryType")
@@ -158,7 +158,7 @@ class AssignedEmployeesGet(BrynQPanderaDataFrameModel):
158
158
  department_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Department UID", alias="department__uid")
159
159
 
160
160
  class _Annotation:
161
- primary_key = "uid"
161
+ primary_key = "employee_uid"
162
162
  foreign_keys = {}
163
163
 
164
164
 
@@ -166,7 +166,7 @@ class CompanyGlobalValuesGet(BrynQPanderaDataFrameModel):
166
166
  """Flattened schema for company global values in global value set context"""
167
167
  # Basic global value fields
168
168
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Global value ID", alias="id")
169
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value UID", alias="uid")
169
+ global_value_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value UID", alias="uid")
170
170
  name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value name", alias="name")
171
171
  number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value number", alias="number")
172
172
  type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Global value type", alias="type")
@@ -181,5 +181,5 @@ class CompanyGlobalValuesGet(BrynQPanderaDataFrameModel):
181
181
  effective_to: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Effective to", alias="effectiveTo")
182
182
 
183
183
  class _Annotation:
184
- primary_key = "uid"
184
+ primary_key = "global_value_uid"
185
185
  foreign_keys = {}
@@ -98,7 +98,7 @@ class CompanyGlobalValueCreate(BaseModel):
98
98
  class CompanyGlobalValueResponse(BaseModel):
99
99
  """Schema for global values response with all fields."""
100
100
  id: Optional[int] = Field(default=None, description="Global value ID", example=0)
101
- uid: Optional[UUID] = Field(default=None, description="Global value UID", example="00000000-0000-0000-0000-000000000000")
101
+ global_value_uid: Optional[UUID] = Field(default=None, description="Global value UID", example="00000000-0000-0000-0000-000000000000")
102
102
  name: Optional[str] = Field(default=None, description="Global value name", example="Overtime Rate")
103
103
  number: Optional[str] = Field(default=None, description="Global value number/code", example="GV-001")
104
104
  type: Optional[int] = Field(default=None, description="Global value type", example=1)
@@ -116,7 +116,7 @@ class CompanyGlobalValueResponse(BaseModel):
116
116
 
117
117
  class CompanyGlobalValueUpdate(BaseModel):
118
118
  """Schema for updating global values - Based on Zalary.Models.GlobalValues.CompanyGlobalValueUpdateRequest."""
119
- uid: Optional[str] = Field(default=None, description="Global value UID", example="00000000-0000-0000-0000-000000000000")
119
+ global_value_uid: Optional[str] = Field(default=None, description="Global value UID", example="00000000-0000-0000-0000-000000000000")
120
120
  name: str = Field(description="Global value name", example="Overtime Rate")
121
121
  number: str = Field(description="Global value number/code", example="GV-001")
122
122
  global_value_type: int = Field(alias="type", description="Global value type", example=1)
@@ -306,7 +306,7 @@ class GlobalValuesGet(BrynQPanderaDataFrameModel):
306
306
  """Flattened schema for Zenegy Global Values Output data"""
307
307
  # Basic global value fields
308
308
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Global value ID", alias="id")
309
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value UID", alias="uid")
309
+ global_value_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value UID", alias="uid")
310
310
  name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value name", alias="name")
311
311
  number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value number", alias="number")
312
312
  type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Global value type", alias="type")
@@ -335,7 +335,7 @@ class GlobalValuesGet(BrynQPanderaDataFrameModel):
335
335
  effective_to_condition_amount: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Effective to condition amount", alias="effectiveTo__conditionAmount")
336
336
 
337
337
  class _Annotation:
338
- primary_key = "uid"
338
+ primary_key = "global_value_uid"
339
339
  foreign_keys = {}
340
340
 
341
341
  class GlobalValueSetsGet(BrynQPanderaDataFrameModel):
@@ -343,7 +343,7 @@ class GlobalValueSetsGet(BrynQPanderaDataFrameModel):
343
343
  # Global value set fields
344
344
  number_of_employees: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Number of employees", alias="numberOfEmployees")
345
345
  number_of_global_values: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Number of global values", alias="numberOfGlobalValues")
346
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value set UID", alias="uid")
346
+ global_value_set_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value set UID", alias="uid")
347
347
  name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value set name", alias="name")
348
348
  number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Global value set number", alias="number")
349
349
 
@@ -371,7 +371,7 @@ class GlobalValueSetsGet(BrynQPanderaDataFrameModel):
371
371
  effective_to_condition_amount: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Effective to condition amount", alias="effectiveTo__conditionAmount")
372
372
 
373
373
  class _Annotation:
374
- primary_key = "uid"
374
+ primary_key = "global_value_set_uid"
375
375
  foreign_keys = {}
376
376
 
377
377
  class AssignedGlobalValuesGet(BrynQPanderaDataFrameModel):
@@ -381,11 +381,11 @@ class AssignedGlobalValuesGet(BrynQPanderaDataFrameModel):
381
381
  is_employee_assigned: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Is employee assigned", alias="isEmployeeAssigned")
382
382
 
383
383
  # CompanyGlobalValueReferenceUidsPairs fields (normalized)
384
- company_global_value_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company global value UID", alias="companyGlobalValueReferenceUidsPairs__companyGlobalValueUid")
384
+ global_value_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company global value UID", alias="companyGlobalValueReferenceUidsPairs__companyGlobalValueUid")
385
385
  reference_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Reference UID", alias="companyGlobalValueReferenceUidsPairs__referenceUid")
386
386
 
387
387
  class _Annotation:
388
- primary_key = "company_global_value_uid"
388
+ primary_key = "global_value_uid"
389
389
  foreign_keys = {}
390
390
 
391
391
 
@@ -393,7 +393,7 @@ class AssignedEmployeesToGlobalValueGet(BrynQPanderaDataFrameModel):
393
393
  """Flattened schema for employees assigned to a global value"""
394
394
  # Basic employee fields
395
395
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Employee ID", alias="id")
396
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee UID", alias="uid")
396
+ employee_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee UID", alias="uid")
397
397
  name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee name", alias="name")
398
398
  employee_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Employee number", alias="employeeNumber")
399
399
  extra_employee_number: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Extra employee number", alias="extraEmployeeNumber")
@@ -429,5 +429,5 @@ class AssignedEmployeesToGlobalValueGet(BrynQPanderaDataFrameModel):
429
429
  user_photo_url: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="User photo URL", alias="user__photoUrl")
430
430
 
431
431
  class _Annotation:
432
- primary_key = "uid"
432
+ primary_key = "employee_uid"
433
433
  foreign_keys = {}
@@ -14,7 +14,7 @@ from brynq_sdk_functions import BrynQPanderaDataFrameModel
14
14
  class PayrollsGet(BrynQPanderaDataFrameModel):
15
15
  """Flattened schema for Zenegy Payrolls Output data"""
16
16
  # Basic payroll fields
17
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payroll UID", alias="uid")
17
+ payroll_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payroll UID", alias="uid")
18
18
  type: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payroll type", alias="type")
19
19
  period_from: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Period from", alias="periodFrom")
20
20
  period_to: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Period to", alias="periodTo")
@@ -119,16 +119,16 @@ class PayrollsGet(BrynQPanderaDataFrameModel):
119
119
  payroll_registration_periods: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payroll registration periods", alias="payrollRegistrationPeriods")
120
120
 
121
121
  class _Annotation:
122
- primary_key = "uid"
122
+ primary_key = "payroll_uid"
123
123
  foreign_keys = {
124
124
  "company_uid": {
125
125
  "parent_schema": "CompaniesGet",
126
- "parent_column": "uid",
126
+ "parent_column": "company_uid",
127
127
  "cardinality": "N:1",
128
128
  },
129
129
  "employee_uid": {
130
130
  "parent_schema": "EmployeesGet",
131
- "parent_column": "uid",
131
+ "parent_column": "employee_uid",
132
132
  "cardinality": "N:1",
133
133
  },
134
134
  }
@@ -18,7 +18,7 @@ class PayslipsGet(BrynQPanderaDataFrameModel):
18
18
  payslip_calculation_status: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payslip calculation status", alias="payslipCalculationStatus")
19
19
  extra_payroll_run: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Extra payroll run", alias="extraPayrollRun")
20
20
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Payslip ID", alias="id")
21
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payslip UID", alias="uid")
21
+ payslip_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payslip UID", alias="uid")
22
22
 
23
23
  # Payroll base fields (nested object)
24
24
  payroll_base_period_from: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payroll base period from", alias="payrollBase__periodFrom")
@@ -28,5 +28,5 @@ class PayslipsGet(BrynQPanderaDataFrameModel):
28
28
  payroll_base_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Payroll base UID", alias="payrollBase__uid")
29
29
 
30
30
  class _Annotation:
31
- primary_key = "uid"
31
+ primary_key = "payslip_uid"
32
32
  foreign_keys = {}
@@ -13,7 +13,7 @@ class SupplementRatesGet(BrynQPanderaDataFrameModel):
13
13
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(
14
14
  coerce=True, nullable=True, description="Supplement rate ID", alias="id"
15
15
  )
16
- uid: Optional[Series[pd.StringDtype]] = pa.Field(
16
+ supplement_rate_uid: Optional[Series[pd.StringDtype]] = pa.Field(
17
17
  coerce=True, nullable=True, description="Supplement rate UID", alias="uid"
18
18
  )
19
19
  created_on: Optional[Series[pd.StringDtype]] = pa.Field(
@@ -105,7 +105,7 @@ class SupplementRatesGet(BrynQPanderaDataFrameModel):
105
105
  )
106
106
 
107
107
  class _Annotation:
108
- primary_key = "uid"
108
+ primary_key = "supplement_rate_uid"
109
109
  foreign_keys = {}
110
110
 
111
111
 
@@ -114,7 +114,7 @@ class SupplementRegistrationsGet(BrynQPanderaDataFrameModel):
114
114
  """Flattened schema for Zenegy Supplement Registrations Output data"""
115
115
  # Basic registration fields
116
116
  id: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Registration ID", alias="id")
117
- uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Registration UID", alias="uid")
117
+ registration_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Registration UID", alias="uid")
118
118
  date: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Date", alias="date")
119
119
  units: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Units", alias="units")
120
120
  rate: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Rate", alias="rate")
@@ -134,7 +134,7 @@ class SupplementRegistrationsGet(BrynQPanderaDataFrameModel):
134
134
  cost_center_name: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center name", alias="costCenterName")
135
135
  cost_center_code: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Cost center code", alias="costCenterCode")
136
136
  trigger_retro: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Trigger retro", alias="triggerRetro")
137
- company_department_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company department UID", alias="companyDepartmentUid")
137
+ department_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company department UID", alias="companyDepartmentUid")
138
138
  company_profit_center_uid: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Company profit center UID", alias="companyProfitCenterUid")
139
139
  percentage: Optional[Series[pd.Float64Dtype]] = pa.Field(coerce=True, nullable=True, description="Percentage", alias="percentage")
140
140
  reference_id: Optional[Series[pd.StringDtype]] = pa.Field(coerce=True, nullable=True, description="Reference ID", alias="referenceId")
@@ -185,5 +185,5 @@ class SupplementRegistrationsGet(BrynQPanderaDataFrameModel):
185
185
  supplement_rate_is_included_in_holiday_entitlement_salary_reduction: Optional[Series[pd.BooleanDtype]] = pa.Field(coerce=True, nullable=True, description="Supplement rate is included in holiday entitlement salary reduction", alias="supplementRate__isIncludedInHolidayEntitlementSalaryReduction")
186
186
 
187
187
  class _Annotation:
188
- primary_key = "uid"
188
+ primary_key = "registration_uid"
189
189
  foreign_keys = {}
@@ -28,7 +28,7 @@ class Zenegy(BrynQ):
28
28
  TIMEOUT = 30
29
29
 
30
30
  def __init__(self, system_type: str,
31
- debug: bool = False, test_environment: bool = False, test_environment_id: str = None):
31
+ debug: bool = False, test_environment: bool = False, data_interface_id: str = None):
32
32
  """
33
33
  Initialize the Zenegy API client.
34
34
 
@@ -39,17 +39,21 @@ class Zenegy(BrynQ):
39
39
  """
40
40
  super().__init__()
41
41
 
42
- if not test_environment and test_environment_id is None:
43
- self.base_url = "https://api.zenegy.com"
44
- system = "zenegy"
45
- elif test_environment_id:
42
+ # Determine base URL and system
43
+ if test_environment:
44
+ if not data_interface_id:
45
+ raise ValueError("Test environment ID is required, please set up interface for test enviromnent of Zenegy")
46
46
  self.base_url = "https://api-gateway.beta.zalary.com"
47
47
  system = "zenegy-development"
48
- self.data_interface_id = test_environment_id
49
- self.interfaces._brynq.data_interface_id = test_environment_id
50
- self.interfaces.credentials._brynq.data_interface_id = test_environment_id
51
48
  else:
52
- raise ValueError("Test environment ID is required, please set up interface for test enviromnent of Zenegy")
49
+ self.base_url = "https://api.zenegy.com"
50
+ system = "zenegy"
51
+
52
+ # Set data_interface_id if provided
53
+ if data_interface_id:
54
+ self.data_interface_id = data_interface_id
55
+ self.interfaces._brynq.data_interface_id = data_interface_id
56
+ self.interfaces.credentials._brynq.data_interface_id = data_interface_id
53
57
 
54
58
  # Get credentials
55
59
  credentials = self.interfaces.credentials.get(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brynq_sdk_zenegy
3
- Version: 1.3.3
3
+ Version: 1.3.5
4
4
  Summary: Zenegy wrapper from BrynQ
5
5
  Author: BrynQ
6
6
  Author-email: support@brynq.com
@@ -2,7 +2,7 @@ from setuptools import setup, find_namespace_packages
2
2
 
3
3
  setup(
4
4
  name='brynq_sdk_zenegy',
5
- version='1.3.3',
5
+ version='1.3.5',
6
6
  description='Zenegy wrapper from BrynQ',
7
7
  long_description='Zenegy wrapper from BrynQ',
8
8
  author='BrynQ',