brynq-sdk-factorial 2.3.0__py3-none-any.whl

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 (41) hide show
  1. brynq_sdk_factorial/__init__.py +60 -0
  2. brynq_sdk_factorial/companies.py +76 -0
  3. brynq_sdk_factorial/compensations.py +80 -0
  4. brynq_sdk_factorial/contracts.py +50 -0
  5. brynq_sdk_factorial/costcenter.py +80 -0
  6. brynq_sdk_factorial/custom_fields.py +76 -0
  7. brynq_sdk_factorial/employees.py +57 -0
  8. brynq_sdk_factorial/family_situation.py +50 -0
  9. brynq_sdk_factorial/files.py +22 -0
  10. brynq_sdk_factorial/locations.py +49 -0
  11. brynq_sdk_factorial/payroll.py +54 -0
  12. brynq_sdk_factorial/schemas/attendance_schemas.py +264 -0
  13. brynq_sdk_factorial/schemas/banking_schemas.py +87 -0
  14. brynq_sdk_factorial/schemas/companies_schemas.py +29 -0
  15. brynq_sdk_factorial/schemas/contracts_schemas.py +395 -0
  16. brynq_sdk_factorial/schemas/documents_schemas.py +95 -0
  17. brynq_sdk_factorial/schemas/employee_updates_schemas.py +300 -0
  18. brynq_sdk_factorial/schemas/employees_schemas.py +187 -0
  19. brynq_sdk_factorial/schemas/expenses_schemas.py +144 -0
  20. brynq_sdk_factorial/schemas/family_situation.py +33 -0
  21. brynq_sdk_factorial/schemas/finance_schemas.py +433 -0
  22. brynq_sdk_factorial/schemas/holidays_schemas.py +21 -0
  23. brynq_sdk_factorial/schemas/job_catalog_schemas.py +35 -0
  24. brynq_sdk_factorial/schemas/locations_schemas.py +85 -0
  25. brynq_sdk_factorial/schemas/payroll_employees_schemas.py +33 -0
  26. brynq_sdk_factorial/schemas/payroll_integrations_base_schemas.py +27 -0
  27. brynq_sdk_factorial/schemas/payroll_schemas.py +92 -0
  28. brynq_sdk_factorial/schemas/project_management_schemas.py +192 -0
  29. brynq_sdk_factorial/schemas/shift_management_schemas.py +40 -0
  30. brynq_sdk_factorial/schemas/teams_schemas.py +57 -0
  31. brynq_sdk_factorial/schemas/time_planning_schemas.py +28 -0
  32. brynq_sdk_factorial/schemas/time_settings_schemas.py +29 -0
  33. brynq_sdk_factorial/schemas/timeoff_schemas.py +386 -0
  34. brynq_sdk_factorial/schemas/trainings_schemas.py +215 -0
  35. brynq_sdk_factorial/schemas/work_schedule_schemas.py +82 -0
  36. brynq_sdk_factorial/teams.py +76 -0
  37. brynq_sdk_factorial/workschedules.py +50 -0
  38. brynq_sdk_factorial-2.3.0.dist-info/METADATA +17 -0
  39. brynq_sdk_factorial-2.3.0.dist-info/RECORD +41 -0
  40. brynq_sdk_factorial-2.3.0.dist-info/WHEEL +5 -0
  41. brynq_sdk_factorial-2.3.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,215 @@
1
+ # Auto-generated schemas for category: trainings
2
+
3
+ import pandas as pd
4
+ import pandera as pa
5
+ from pandera.typing import Series, String, Int, Float, Bool, DateTime
6
+ import pandera.extensions as extensions
7
+ from brynq_sdk_functions import BrynQPanderaDataFrameModel
8
+ from typing import Optional, Annotated
9
+ from pydantic import BaseModel, Field, StringConstraints
10
+
11
+ class CategoriesGet(BrynQPanderaDataFrameModel):
12
+ id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="id")
13
+ name: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="name")
14
+ company_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="company_id")
15
+ created_at: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="created_at")
16
+ updated_at: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="updated_at")
17
+
18
+ class Session_access_membershipsGet(BrynQPanderaDataFrameModel):
19
+ id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="id")
20
+ access_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="access_id")
21
+ employee_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="", alias="employee_id")
22
+ session_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="session_id")
23
+ first_name: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="first_name")
24
+ last_name: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="last_name")
25
+ job_title: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="job_title")
26
+ session_attendance_status: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="session_attendance_status")
27
+ team_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="team_id")
28
+
29
+ class Session_attendancesGet(BrynQPanderaDataFrameModel):
30
+ id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="id")
31
+ status: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="status")
32
+ session_access_membership_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="session_access_membership_id")
33
+ access_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="access_id")
34
+ employee_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="", alias="employee_id")
35
+
36
+ class SessionsGet(BrynQPanderaDataFrameModel):
37
+ id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="id")
38
+ name: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="name")
39
+ training_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="training_id")
40
+ description: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="description")
41
+ training_class_id: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="training_class_id")
42
+ starts_at: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="starts_at")
43
+ ends_at: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="ends_at")
44
+ due_date: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="due_date")
45
+ duration: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="duration")
46
+ modality: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="modality")
47
+ link: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="link")
48
+ location: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="location")
49
+ session_attendance_ids: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="session_attendance_ids")
50
+ session_feedback_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="", alias="session_feedback_id")
51
+ subsidized: Series[Bool] = pa.Field(coerce=True, nullable=False, description="", alias="subsidized")
52
+ status: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="status")
53
+ session_attendances_status: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="session_attendances_status")
54
+
55
+ class Training_membershipsGet(BrynQPanderaDataFrameModel):
56
+ id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="Unique identifier for the training membership.", alias="id")
57
+ access_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="Access_id associated to the employee, refers to employees/employees endpoint.", alias="access_id")
58
+ training_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="This field is used to filter those trainings memberships that belongs to this training.", alias="training_id")
59
+ status: Series[String] = pa.Field(coerce=True, nullable=False, description="This field is used to filter those trainings memberships whose attendance status is the given.", alias="status")
60
+ training_due_date: Series[String] = pa.Field(coerce=True, nullable=True, description="This field is used for those trainings with an expiry date.", alias="training_due_date")
61
+ training_completed_at: Series[String] = pa.Field(coerce=True, nullable=True, description="This field is used to record the date a training was completed for trainings that have an expiry date.", alias="training_completed_at")
62
+
63
+ class TrainingsGet(BrynQPanderaDataFrameModel):
64
+ id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="Identifier of the course", alias="id")
65
+ company_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="Company identifier", alias="company_id")
66
+ author_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="The person that creates the training", alias="author_id")
67
+ name: Series[String] = pa.Field(coerce=True, nullable=False, description="Name of the training", alias="name")
68
+ code: Series[String] = pa.Field(coerce=True, nullable=True, description="Code of the training", alias="code")
69
+ description: Series[String] = pa.Field(coerce=True, nullable=False, description="Description of the training", alias="description")
70
+ created_at: Series[String] = pa.Field(coerce=True, nullable=True, description="Creation date of the course", alias="created_at")
71
+ updated_at: Series[String] = pa.Field(coerce=True, nullable=True, description="Last modification date of the course", alias="updated_at")
72
+ external_provider: Series[String] = pa.Field(coerce=True, nullable=True, description="The name of the provider if any", alias="external_provider")
73
+ external: Series[Bool] = pa.Field(coerce=True, nullable=False, description="External training", alias="external")
74
+ total_cost: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="", alias="total_cost")
75
+ fundae_subsidized: Series[Bool] = pa.Field(coerce=True, nullable=False, description="Subsidized by Fundae", alias="fundae_subsidized")
76
+ subsidized: Series[Bool] = pa.Field(coerce=True, nullable=False, description="Marked as subsidized", alias="subsidized")
77
+ cost: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="cost")
78
+ subsidized_cost: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="subsidized_cost")
79
+ total_cost_decimal: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="total_cost_decimal")
80
+ cost_decimal: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="cost_decimal")
81
+ subsidized_cost_decimal: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="subsidized_cost_decimal")
82
+ category_ids: Series[String] = pa.Field(coerce=True, nullable=True, description="List of ids of training categories", alias="category_ids")
83
+ status: Series[String] = pa.Field(coerce=True, nullable=True, description="Training status. Can be one of the following values", alias="status")
84
+ year: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="Year of the training", alias="year")
85
+ catalog: Series[Bool] = pa.Field(coerce=True, nullable=False, description="Visible in catalog", alias="catalog")
86
+ competency_ids: Series[String] = pa.Field(coerce=True, nullable=False, description="List of ids of training competencies", alias="competency_ids")
87
+ total_training_cost: Series[String] = pa.Field(coerce=True, nullable=False, description="The total direct cost of all course's groups", alias="total_training_cost")
88
+ total_training_indirect_cost: Series[String] = pa.Field(coerce=True, nullable=False, description="The total indirect cost of all course's groups", alias="total_training_indirect_cost")
89
+ total_training_salary_cost: Series[String] = pa.Field(coerce=True, nullable=False, description="The total salary cost of all course's groups", alias="total_training_salary_cost")
90
+ total_training_subsidized_cost: Series[String] = pa.Field(coerce=True, nullable=False, description="The total subsidized cost of all course's groups", alias="total_training_subsidized_cost")
91
+ total_participants: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="Number of participants of all course's groups", alias="total_participants")
92
+ training_attendance_status: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="training_attendance_status")
93
+ valid_for: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="Number of years this course is valid for", alias="valid_for")
94
+ objectives: Series[String] = pa.Field(coerce=True, nullable=True, description="Objectives of the course", alias="objectives")
95
+ number_of_expired_participants: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="Number of participants that have the course expired or about to expire in the next 3 months. Only applicable to trainings with validity period.", alias="number_of_expired_participants")
96
+
97
+ class CategoriesCreate(BaseModel):
98
+ name: str = Field(..., description="", alias="name")
99
+ company_id: int = Field(..., description="", alias="company_id")
100
+
101
+ class CategoriesDelete(BaseModel):
102
+ id: int = Field(..., description="ID", alias="id")
103
+
104
+ class Session_access_membershipsDelete(BaseModel):
105
+ id: int = Field(..., description="ID", alias="id")
106
+
107
+ class Session_attendancesDelete(BaseModel):
108
+ id: int = Field(..., description="ID", alias="id")
109
+
110
+ class SessionsCreate(BaseModel):
111
+ name: str = Field(..., description="", alias="name")
112
+ training_id: int = Field(..., description="", alias="training_id")
113
+ description: Optional[str] = Field(None, description="", alias="description")
114
+ training_class_id: Optional[int] = Field(None, description="", alias="training_class_id")
115
+ starts_at: Optional[str] = Field(None, description="", alias="starts_at")
116
+ ends_at: Optional[str] = Field(None, description="", alias="ends_at")
117
+ due_date: Optional[str] = Field(None, description="", alias="due_date")
118
+ duration: Optional[str] = Field(None, description="", alias="duration")
119
+ modality: Optional[Annotated[str, StringConstraints(pattern=r'^online|inperson|mixed$', strip_whitespace=True)]] = Field(None, description="", alias="modality")
120
+ link: Optional[str] = Field(None, description="", alias="link")
121
+ location: Optional[str] = Field(None, description="", alias="location")
122
+ subsidized: Optional[bool] = Field(None, description="", alias="subsidized")
123
+ recurrent: Optional[bool] = Field(None, description="", alias="recurrent")
124
+ reminders: Optional[str] = Field(None, description="", alias="reminders")
125
+
126
+ class SessionsUpdate(BaseModel):
127
+ id: int = Field(..., description="ID", alias="id")
128
+ name: str = Field(..., description="", alias="name")
129
+ training_id: int = Field(..., description="", alias="training_id")
130
+ description: Optional[str] = Field(None, description="", alias="description")
131
+ training_class_id: Optional[str] = Field(None, description="", alias="training_class_id")
132
+ starts_at: Optional[str] = Field(None, description="", alias="starts_at")
133
+ ends_at: Optional[str] = Field(None, description="", alias="ends_at")
134
+ due_date: Optional[str] = Field(None, description="", alias="due_date")
135
+ duration: Optional[str] = Field(None, description="", alias="duration")
136
+ modality: Optional[Annotated[str, StringConstraints(pattern=r'^online|inperson|mixed$', strip_whitespace=True)]] = Field(None, description="", alias="modality")
137
+ link: Optional[str] = Field(None, description="", alias="link")
138
+ location: Optional[str] = Field(None, description="", alias="location")
139
+ session_attendance_ids: Optional[str] = Field(None, description="", alias="session_attendance_ids")
140
+ session_feedback_id: Optional[int] = Field(None, description="", alias="session_feedback_id")
141
+ subsidized: bool = Field(..., description="", alias="subsidized")
142
+ status: Optional[str] = Field(None, description="", alias="status")
143
+ session_attendances_status: str = Field(..., description="", alias="session_attendances_status")
144
+
145
+ class SessionsDelete(BaseModel):
146
+ id: int = Field(..., description="ID", alias="id")
147
+
148
+ class Training_membershipsUpdate(BaseModel):
149
+ id: int = Field(..., description="ID", alias="id")
150
+ access_id: int = Field(..., description="Access_id associated to the employee, refers to employees/employees endpoint.", alias="access_id")
151
+ training_id: int = Field(..., description="This field is used to filter those trainings memberships that belongs to this training.", alias="training_id")
152
+ status: str = Field(..., description="This field is used to filter those trainings memberships whose attendance status is the given.", alias="status")
153
+ training_due_date: Optional[str] = Field(None, description="This field is used for those trainings with an expiry date.", alias="training_due_date")
154
+ training_completed_at: Optional[str] = Field(None, description="This field is used to record the date a training was completed for trainings that have an expiry date.", alias="training_completed_at")
155
+
156
+ class Training_membershipsDelete(BaseModel):
157
+ id: int = Field(..., description="ID", alias="id")
158
+
159
+ class TrainingsCreate(BaseModel):
160
+ name: str = Field(..., description="Name of the training", alias="name")
161
+ code: Optional[str] = Field(None, description="Code of the training", alias="code")
162
+ description: str = Field(..., description="Description of the training", alias="description")
163
+ external_provider: Optional[str] = Field(None, description="External provider of the training", alias="external_provider")
164
+ external: bool = Field(..., description="External training", alias="external")
165
+ category_ids: Optional[str] = Field(None, description="", alias="category_ids")
166
+ competency_ids: Optional[str] = Field(None, description="Competency ids of the training", alias="competency_ids")
167
+ author_id: Optional[int] = Field(None, description="The person that creates the training", alias="author_id")
168
+ employee_id: Optional[int] = Field(None, description="", alias="employee_id")
169
+ cost: Optional[int] = Field(None, description="", alias="cost")
170
+ subsidized_cost: Optional[int] = Field(None, description="", alias="subsidized_cost")
171
+ cost_decimal: Optional[str] = Field(None, description="", alias="cost_decimal")
172
+ subsidized_cost_decimal: Optional[str] = Field(None, description="", alias="subsidized_cost_decimal")
173
+ year: int = Field(..., description="Year of the training", alias="year")
174
+ company_id: Optional[int] = Field(None, description="Company identifier of the training", alias="company_id")
175
+ attachments: str = Field(..., description="Attachments of the training", alias="attachments")
176
+ valid_for: Optional[int] = Field(None, description="The training validity period in years", alias="valid_for")
177
+ objectives: Optional[str] = Field(None, description="Objectives of the course", alias="objectives")
178
+
179
+ class TrainingsUpdate(BaseModel):
180
+ id: int = Field(..., description="ID", alias="id")
181
+ company_id: int = Field(..., description="Company identifier", alias="company_id")
182
+ author_id: int = Field(..., description="The person that creates the training", alias="author_id")
183
+ name: str = Field(..., description="Name of the training", alias="name")
184
+ code: Optional[str] = Field(None, description="Code of the training", alias="code")
185
+ description: str = Field(..., description="Description of the training", alias="description")
186
+ created_at: Optional[str] = Field(None, description="Creation date of the course", alias="created_at")
187
+ updated_at: Optional[str] = Field(None, description="Last modification date of the course", alias="updated_at")
188
+ external_provider: Optional[str] = Field(None, description="The name of the provider if any", alias="external_provider")
189
+ external: bool = Field(..., description="External training", alias="external")
190
+ total_cost: Optional[int] = Field(None, description="", alias="total_cost")
191
+ fundae_subsidized: bool = Field(..., description="Subsidized by Fundae", alias="fundae_subsidized")
192
+ subsidized: bool = Field(..., description="Marked as subsidized", alias="subsidized")
193
+ cost: int = Field(..., description="", alias="cost")
194
+ subsidized_cost: int = Field(..., description="", alias="subsidized_cost")
195
+ total_cost_decimal: Optional[str] = Field(None, description="", alias="total_cost_decimal")
196
+ cost_decimal: str = Field(..., description="", alias="cost_decimal")
197
+ subsidized_cost_decimal: str = Field(..., description="", alias="subsidized_cost_decimal")
198
+ category_ids: Optional[str] = Field(None, description="List of ids of training categories", alias="category_ids")
199
+ status: Optional[Annotated[str, StringConstraints(pattern=r'^draft|active|deleted$', strip_whitespace=True)]] = Field(None, description="Training status. Can be one of the following values", alias="status")
200
+ year: int = Field(..., description="Year of the training", alias="year")
201
+ catalog: bool = Field(..., description="Visible in catalog", alias="catalog")
202
+ competency_ids: str = Field(..., description="List of ids of training competencies", alias="competency_ids")
203
+ total_training_cost: str = Field(..., description="The total direct cost of all course's groups", alias="total_training_cost")
204
+ total_training_indirect_cost: str = Field(..., description="The total indirect cost of all course's groups", alias="total_training_indirect_cost")
205
+ total_training_salary_cost: str = Field(..., description="The total salary cost of all course's groups", alias="total_training_salary_cost")
206
+ total_training_subsidized_cost: str = Field(..., description="The total subsidized cost of all course's groups", alias="total_training_subsidized_cost")
207
+ total_participants: int = Field(..., description="Number of participants of all course's groups", alias="total_participants")
208
+ training_attendance_status: Annotated[str, StringConstraints(pattern=r'^notassigned|notstarted|missing|started|partiallycompleted|completed$', strip_whitespace=True)] = Field(..., description="", alias="training_attendance_status")
209
+ valid_for: Optional[int] = Field(None, description="Number of years this course is valid for", alias="valid_for")
210
+ objectives: Optional[str] = Field(None, description="Objectives of the course", alias="objectives")
211
+ number_of_expired_participants: Optional[int] = Field(None, description="Number of participants that have the course expired or about to expire in the next 3 months. Only applicable to trainings with validity period.", alias="number_of_expired_participants")
212
+
213
+ class TrainingsDelete(BaseModel):
214
+ id: int = Field(..., description="ID", alias="id")
215
+
@@ -0,0 +1,82 @@
1
+ # Auto-generated schemas for category: work_schedule
2
+
3
+ import pandas as pd
4
+ import pandera as pa
5
+ from pandera.typing import Series, String, Int, Float, Bool, DateTime
6
+ import pandera.extensions as extensions
7
+ from brynq_sdk_functions import BrynQPanderaDataFrameModel
8
+ from typing import Optional, Annotated
9
+ from pydantic import BaseModel, Field, StringConstraints
10
+
11
+ class Day_configurationsGet(BrynQPanderaDataFrameModel):
12
+ id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="id")
13
+ overlap_period_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="overlap_period_id")
14
+ weekday: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="weekday")
15
+ start_at: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="start_at")
16
+ duration_in_seconds: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="duration_in_seconds")
17
+
18
+ class Overlap_periodsGet(BrynQPanderaDataFrameModel):
19
+ id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="id")
20
+ default: Series[Bool] = pa.Field(coerce=True, nullable=False, description="", alias="default")
21
+ schedule_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="schedule_id")
22
+ start_month: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="start_month")
23
+ start_day: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="start_day")
24
+ end_month: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="end_month")
25
+ end_day: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="end_day")
26
+ schedule_type: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="schedule_type")
27
+
28
+ class SchedulesGet(BrynQPanderaDataFrameModel):
29
+ id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="id")
30
+ name: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="name")
31
+ archived_at: Series[String] = pa.Field(coerce=True, nullable=True, description="", alias="archived_at")
32
+ company_id: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=False, description="", alias="company_id")
33
+ created_at: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="created_at")
34
+ updated_at: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="updated_at")
35
+ employee_ids: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="employee_ids")
36
+ periods: Series[String] = pa.Field(coerce=True, nullable=False, description="", alias="periods")
37
+
38
+ class Day_configurationsCreate(BaseModel):
39
+ id: int = Field(..., description="", alias="id")
40
+ overlap_period_id: int = Field(..., description="", alias="overlap_period_id")
41
+ weekday: str = Field(..., description="", alias="weekday")
42
+ start_at: Optional[str] = Field(None, description="", alias="start_at")
43
+ duration_in_seconds: int = Field(..., description="", alias="duration_in_seconds")
44
+
45
+ class Day_configurationsDelete(BaseModel):
46
+ id: int = Field(..., description="ID", alias="id")
47
+
48
+ class Overlap_periodsCreate(BaseModel):
49
+ author: str = Field(..., description="", alias="author")
50
+ schedule_id: int = Field(..., description="", alias="schedule_id")
51
+ create_params: str = Field(..., description="", alias="create_params")
52
+
53
+ class Overlap_periodsUpdate(BaseModel):
54
+ id: int = Field(..., description="ID", alias="id")
55
+ default: bool = Field(..., description="", alias="default")
56
+ schedule_id: int = Field(..., description="", alias="schedule_id")
57
+ start_month: int = Field(..., description="", alias="start_month")
58
+ start_day: int = Field(..., description="", alias="start_day")
59
+ end_month: int = Field(..., description="", alias="end_month")
60
+ end_day: int = Field(..., description="", alias="end_day")
61
+ schedule_type: str = Field(..., description="", alias="schedule_type")
62
+
63
+ class Overlap_periodsDelete(BaseModel):
64
+ id: int = Field(..., description="ID", alias="id")
65
+
66
+ class SchedulesCreate(BaseModel):
67
+ name: str = Field(..., description="", alias="name")
68
+ schedule_type: str = Field(..., description="", alias="schedule_type")
69
+
70
+ class SchedulesUpdate(BaseModel):
71
+ id: int = Field(..., description="ID", alias="id")
72
+ name: str = Field(..., description="", alias="name")
73
+ archived_at: Optional[str] = Field(None, description="", alias="archived_at")
74
+ company_id: int = Field(..., description="", alias="company_id")
75
+ created_at: str = Field(..., description="", alias="created_at")
76
+ updated_at: str = Field(..., description="", alias="updated_at")
77
+ employee_ids: str = Field(..., description="", alias="employee_ids")
78
+ periods: str = Field(..., description="", alias="periods")
79
+
80
+ class SchedulesDelete(BaseModel):
81
+ id: int = Field(..., description="ID", alias="id")
82
+
@@ -0,0 +1,76 @@
1
+ from typing import List
2
+
3
+ import requests
4
+ import pandas as pd
5
+
6
+
7
+ class Teams:
8
+ def __init__(self, factorial):
9
+ self.factorial = factorial
10
+ self.base_endpoint = '/resources/teams/'
11
+
12
+ def get(self) -> pd.DataFrame:
13
+
14
+ # Use locals() to get all function parameters as a dictionary. Do not move this down since it will include all variables in function scope
15
+ func_params = locals().items()
16
+ params = {}
17
+ for param, value in func_params:
18
+ if param != 'self' and value is not None:
19
+ params[param] = value
20
+
21
+ has_next_page = True
22
+ result_data = pd.DataFrame()
23
+ while has_next_page:
24
+ response = self.factorial.session.get(url=f'{self.factorial.base_url}{self.base_endpoint}teams',
25
+ params=params,
26
+ timeout=self.factorial.timeout)
27
+ response.raise_for_status()
28
+ response_data = response.json()
29
+ result_data = pd.concat([result_data, pd.DataFrame(response_data['data'])])
30
+ has_next_page = response_data['meta']['has_next_page']
31
+ if has_next_page:
32
+ params['after_id'] = response_data['meta']['end_cursor']
33
+
34
+ return result_data
35
+
36
+ def get_membership(self,
37
+ ids: list = None,
38
+ team_ids: List[int] = None,
39
+ employee_ids: List[int] = None) -> pd.DataFrame:
40
+
41
+ # Use locals() to get all function parameters as a dictionary. Do not move this down since it will include all variables in function scope
42
+ func_params = list(locals().items())
43
+ params = {}
44
+ for param, value in func_params:
45
+ if param != 'self' and value is not None:
46
+ params[param] = value
47
+
48
+ has_next_page = True
49
+ result_data = pd.DataFrame()
50
+ while has_next_page:
51
+ response = self.factorial.session.get(url=f'{self.factorial.base_url}{self.base_endpoint}memberships',
52
+ params=params,
53
+ timeout=self.factorial.timeout)
54
+ response.raise_for_status()
55
+ response_data = response.json()
56
+ result_data = pd.concat([result_data, pd.DataFrame(response_data['data'])])
57
+ has_next_page = response_data['meta']['has_next_page']
58
+ if has_next_page:
59
+ params['after_id'] = response_data['meta']['end_cursor']
60
+
61
+ return result_data
62
+
63
+ def update(self, team_id: str, data: dict) -> requests.Response:
64
+ response = self.factorial.session.put(url=f'{self.factorial.base_url}{self.base_endpoint}teams/{team_id}',
65
+ json=data,
66
+ timeout=self.factorial.timeout)
67
+ response.raise_for_status()
68
+ return response
69
+
70
+ def delete(self, team_id: str) -> requests.Response:
71
+ response = self.factorial.session.delete(url=f'{self.factorial.base_url}{self.base_endpoint}teams/{team_id}', timeout=self.factorial.timeout)
72
+ response.raise_for_status()
73
+ return response
74
+
75
+ def create(self, data: dict) -> requests.Response:
76
+ raise NotImplementedError
@@ -0,0 +1,50 @@
1
+ import requests
2
+ import pandas as pd
3
+
4
+
5
+ class Workschedules:
6
+ def __init__(self, factorial):
7
+ self.factorial = factorial
8
+ self.base_endpoint = '/resources/work_schedule/schedules'
9
+
10
+ def get(self,
11
+ ids: list = None,
12
+ with_employee_ids: bool = True,
13
+ with_periods: bool = True) -> pd.DataFrame:
14
+
15
+ # Use locals() to get all function parameters as a dictionary. Do not move this down since it will include all variables in function scope
16
+ func_params = list(locals().items())
17
+ params = {}
18
+ for param, value in func_params:
19
+ if param != 'self' and value is not None:
20
+ params[param] = value
21
+
22
+ has_next_page = True
23
+ result_data = pd.DataFrame()
24
+ while has_next_page:
25
+ response = self.factorial.session.get(url=f'{self.factorial.base_url}{self.base_endpoint}',
26
+ params=params,
27
+ timeout=self.factorial.timeout)
28
+ response.raise_for_status()
29
+ response_data = response.json()
30
+ result_data = pd.concat([result_data, pd.DataFrame(response_data['data'])])
31
+ has_next_page = response_data['meta']['has_next_page']
32
+ if has_next_page:
33
+ params['after_id'] = response_data['meta']['end_cursor']
34
+
35
+ return result_data
36
+
37
+ def update(self, workschedule_id: str, data: dict) -> requests.Response:
38
+ response = self.factorial.session.put(url=f'{self.factorial.base_url}{self.base_endpoint}/{workschedule_id}',
39
+ json=data,
40
+ timeout=self.factorial.timeout)
41
+ response.raise_for_status()
42
+ return response
43
+
44
+ def delete(self, workschedule_id: str) -> requests.Response:
45
+ response = self.factorial.session.delete(url=f'{self.factorial.base_url}{self.base_endpoint}/{workschedule_id}', timeout=self.factorial.timeout)
46
+ response.raise_for_status()
47
+ return response
48
+
49
+ def create(self, data: dict) -> requests.Response:
50
+ raise NotImplementedError
@@ -0,0 +1,17 @@
1
+ Metadata-Version: 2.4
2
+ Name: brynq_sdk_factorial
3
+ Version: 2.3.0
4
+ Summary: Factorial wrapper from BrynQ
5
+ Author: BrynQ
6
+ Author-email: support@brynq.com
7
+ License: BrynQ License
8
+ Requires-Dist: brynq-sdk-brynq<5,>=4
9
+ Requires-Dist: pandas<3.0.0,>=2.2.0
10
+ Dynamic: author
11
+ Dynamic: author-email
12
+ Dynamic: description
13
+ Dynamic: license
14
+ Dynamic: requires-dist
15
+ Dynamic: summary
16
+
17
+ Factorial wrapper from BrynQ
@@ -0,0 +1,41 @@
1
+ brynq_sdk_factorial/__init__.py,sha256=UXNtEIZNkMFFwJf_JaubXKqhTneSSsp_pcxYuPObzIk,2489
2
+ brynq_sdk_factorial/companies.py,sha256=tnuZfNy39RXdz8yN8W0a34EphnmlkEQFDog-KwqATAs,3349
3
+ brynq_sdk_factorial/compensations.py,sha256=Q7gfNliWXNcEFTT2Bl9lRHzAhobILx1FKmxVCwNVHNs,3596
4
+ brynq_sdk_factorial/contracts.py,sha256=SJ6MZ6wlcCCVQIyXW3NIWgG9m7Ut1Co1WZxGA_XyGd0,2142
5
+ brynq_sdk_factorial/costcenter.py,sha256=shgXT71-Ju6vp1dO60mWJi_YYt07dpCA9OrPop8S_j8,3548
6
+ brynq_sdk_factorial/custom_fields.py,sha256=figc78Q-kSMhFjPrAqeENyxL2e99E88MvjIvRHvivO8,3438
7
+ brynq_sdk_factorial/employees.py,sha256=2oa-lt4cJXwRtDW-Z01sixshtdeNJGpP84oDvsQKASY,2434
8
+ brynq_sdk_factorial/family_situation.py,sha256=PmpK62rY_WoBbpEdOJH5WEKCwlbTXvwAjdlD3y1Kw5o,2199
9
+ brynq_sdk_factorial/files.py,sha256=tuj8fNFCSucJwlL7oy7-K-QMA7-OX7CnPiQQy6QCmp8,763
10
+ brynq_sdk_factorial/locations.py,sha256=BtNLM-Gb5PQams3uX9m39EX8o-Eedk58WoLjIKzPmNA,2104
11
+ brynq_sdk_factorial/payroll.py,sha256=JSl2fAP25t5tTgDkP6qZxGhiplofzCGWlAbqEYaFXFI,2332
12
+ brynq_sdk_factorial/teams.py,sha256=9_sIug87CSoFSq_imtoyAWqNWUK1YtOnsqmBRySVD94,3299
13
+ brynq_sdk_factorial/workschedules.py,sha256=u5QccGHJvAC_aqBkHDkZOL2ite7jJgg-H7c8MaRn9Bc,2167
14
+ brynq_sdk_factorial/schemas/attendance_schemas.py,sha256=SQyVKsD-Dve0mq7Zvn60fIuL874d35Sj5i4jmzYDZp4,21652
15
+ brynq_sdk_factorial/schemas/banking_schemas.py,sha256=K75CxutW6zgFi0e6dwaaNRzP_WHafbjvRIClP51vLvw,6978
16
+ brynq_sdk_factorial/schemas/companies_schemas.py,sha256=I4VKQ-Dz3itWgByaEdVOdljpLcDVufdTFVxDzHIhRl4,2042
17
+ brynq_sdk_factorial/schemas/contracts_schemas.py,sha256=cSd3zPoU0qJXrIiK-NuzGSj_KVyhWXjL1HyF9Tb35ME,35107
18
+ brynq_sdk_factorial/schemas/documents_schemas.py,sha256=kdmaYBaPQ0gOu50wkxrPvtRlmWPJb2rNPibM9FkyLjw,9932
19
+ brynq_sdk_factorial/schemas/employee_updates_schemas.py,sha256=4PB8OiRIhpzl_pg3yuAIVJajutQ4n8doIgJ4rH4V2_E,23754
20
+ brynq_sdk_factorial/schemas/employees_schemas.py,sha256=cNbFkHcrfQkly_9sQNESlzNCiQIZ83Ku9ciXyj4A-vQ,21161
21
+ brynq_sdk_factorial/schemas/expenses_schemas.py,sha256=qGl6T2975Nd89ihiZDoB3r4QRU0_LCYurYh41oB_EEo,16467
22
+ brynq_sdk_factorial/schemas/family_situation.py,sha256=eJZYJLnkJN-plSXC2K_-FIUP7fE3bon2wxA64-wGBcI,1892
23
+ brynq_sdk_factorial/schemas/finance_schemas.py,sha256=CXQgSir0qKSV1Tgjipc6ct0GKAlByajCOHX19JwUb3w,33335
24
+ brynq_sdk_factorial/schemas/holidays_schemas.py,sha256=anjSmBn3FKPYCLb4p6MwtgVwxpLWPuXCcqwYqy2ezxw,1295
25
+ brynq_sdk_factorial/schemas/job_catalog_schemas.py,sha256=5NCvHOFGn-xA6Zq7Xfu-k1Uy8nqD88Pgaz5FvXsVQhE,2577
26
+ brynq_sdk_factorial/schemas/locations_schemas.py,sha256=RneHGDdf0Vz2brro1rMXkDgNwzuAkvUWFPNmsNhLw1k,6710
27
+ brynq_sdk_factorial/schemas/payroll_employees_schemas.py,sha256=8INiGE77BkeRlFCfxrGPiv_3027gn3P7jif-CRB_X8Y,2360
28
+ brynq_sdk_factorial/schemas/payroll_integrations_base_schemas.py,sha256=4EGUlQFT40oTHBX8TGns_uPslYc_Vhb-jrznc9dYRQ0,1823
29
+ brynq_sdk_factorial/schemas/payroll_schemas.py,sha256=6gNxEU9EsoZBq8Pi8BtiAI56HMQs5oBLgSPW9m_1DlM,9557
30
+ brynq_sdk_factorial/schemas/project_management_schemas.py,sha256=gnSCeruolj7qpNb1eGesHKlugmlDeU7A3qBOvBsoolE,15754
31
+ brynq_sdk_factorial/schemas/shift_management_schemas.py,sha256=bHhVR938aBR4nRxBxoUEUFSw7DS1uX7Yipgv9zXC7IA,3217
32
+ brynq_sdk_factorial/schemas/teams_schemas.py,sha256=4Pbs0gEhY34TRSeSQbkwLxqNLg_b2noG7O93aprWcho,3553
33
+ brynq_sdk_factorial/schemas/time_planning_schemas.py,sha256=Nd9CXYpiaf6RkTz51i4nSCMjzV7XWlfU9hWbpF6N9ZE,1916
34
+ brynq_sdk_factorial/schemas/time_settings_schemas.py,sha256=AryMOam-1-tE5uiKj6eXskyZ8RmguLLsOXfMqzCvEAo,1352
35
+ brynq_sdk_factorial/schemas/timeoff_schemas.py,sha256=0xe6mLLAbm1BNrNtCWnV6fSEE-P99l-7OC9qUxuNxEY,47960
36
+ brynq_sdk_factorial/schemas/trainings_schemas.py,sha256=UUJaEx7tmnn4P6cZr-HDraSoHY9TJQK_E88xpJZ7-Ds,20095
37
+ brynq_sdk_factorial/schemas/work_schedule_schemas.py,sha256=XNF6b7VPYxigynqbIIA9b9QR7JnMRwz9YlL_LCpji9Q,5051
38
+ brynq_sdk_factorial-2.3.0.dist-info/METADATA,sha256=-k9YdyXE8HNj4a5S6CgV1DSxllMTFowfPjQxuKCfScE,389
39
+ brynq_sdk_factorial-2.3.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
40
+ brynq_sdk_factorial-2.3.0.dist-info/top_level.txt,sha256=YSf30YIxiDEsBerq8CDxBL5oa3fVD3wH775ibqjhTko,20
41
+ brynq_sdk_factorial-2.3.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ brynq_sdk_factorial