@factorialco/api-client 3.0.0-beta.2026100102 → 3.0.0-beta.2026100103

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.
@@ -681,11 +681,11 @@ export type AttendanceEditTimesheetRequest = {
681
681
  */
682
682
  id: string;
683
683
  /**
684
- * Status of the edit timesheet request
684
+ * Tri-state approval status — true = approved, false = rejected, null = pending approval
685
685
  */
686
686
  approved?: boolean;
687
687
  /**
688
- * Type of the request
688
+ * What the request asks to do — one of `create_shift`, `update_shift`, `delete_shift`
689
689
  */
690
690
  request_type: 'create_shift' | 'delete_shift' | 'update_shift';
691
691
  /**
@@ -817,15 +817,45 @@ export type AttendanceOpenShift = {
817
817
  time_settings_break_configuration_id?: string;
818
818
  };
819
819
  export type AttendanceOvertimeRequest = {
820
+ /**
821
+ * Unique identifier of the overtime request
822
+ */
820
823
  id: string;
824
+ /**
825
+ * ID of the employee the overtime is for
826
+ */
821
827
  employee_id: string;
828
+ /**
829
+ * ID of the employee assigned to approve the request (null if unassigned)
830
+ */
822
831
  approver_id?: string;
832
+ /**
833
+ * ID of the employee who created the request
834
+ */
823
835
  author_id: string;
836
+ /**
837
+ * Approval status of the overtime request — one of `pending`, `approved`, `rejected`, `none`
838
+ */
824
839
  status: 'pending' | 'approved' | 'rejected' | 'none';
840
+ /**
841
+ * Free-text description of the overtime request
842
+ */
825
843
  description?: string;
844
+ /**
845
+ * Reason provided for the overtime
846
+ */
826
847
  reason?: string;
848
+ /**
849
+ * The day the overtime was (or will be) worked
850
+ */
827
851
  date: string;
852
+ /**
853
+ * Requested overtime amount in hundredths of an hour (e.g. 800 = 8 hours)
854
+ */
828
855
  hours_amount_in_cents: number;
856
+ /**
857
+ * When the request was created
858
+ */
829
859
  created_at?: string;
830
860
  approver: boolean;
831
861
  approver_full_name?: string;
@@ -867,7 +897,7 @@ export type AttendanceShift = {
867
897
  */
868
898
  date: string;
869
899
  /**
870
- * Reference date for the shift
900
+ * The business day this shift is attributed to; can differ from `date` for overnight shifts that cross midnight
871
901
  */
872
902
  reference_date: string;
873
903
  /**
@@ -895,7 +925,7 @@ export type AttendanceShift = {
895
925
  */
896
926
  location_type?: 'office' | 'business_trip' | 'work_from_home';
897
927
  /**
898
- * Indicates which worked part of the day
928
+ * Which half of the day the shift covers when it is a half-day — `beginning_of_day` or `end_of_day`; null for full-day shifts
899
929
  */
900
930
  half_day?: 'beginning_of_day' | 'end_of_day';
901
931
  /**
@@ -923,7 +953,7 @@ export type AttendanceShift = {
923
953
  */
924
954
  out_location_accuracy?: number;
925
955
  /**
926
- * Indicates if the shift is workable
956
+ * Whether the shift counts as worked (workable) time rather than a break
927
957
  */
928
958
  workable?: boolean;
929
959
  /**
@@ -1264,7 +1294,7 @@ export type CompensationsConcept = {
1264
1294
  */
1265
1295
  id: string;
1266
1296
  /**
1267
- * The category of the concept
1297
+ * The accounting category of the concept (e.g. `earnings_fixed_salary`, `deductions`)
1268
1298
  */
1269
1299
  category?: 'earnings_fixed_salary' | 'earnings_variable' | 'earnings_benefits_in_kind' | 'earnings_others' | 'deductions' | 'company_contribution' | 'summarized_values';
1270
1300
  /**
@@ -1296,14 +1326,26 @@ export type CompensationsConcept = {
1296
1326
  */
1297
1327
  unit_name?: string;
1298
1328
  /**
1299
- * The type of the unit of the concept
1329
+ * What the concept's amount is measured in (e.g. `money`, a quantity of units)
1300
1330
  */
1301
1331
  unit_type?: 'distance' | 'money' | 'time' | 'unit';
1302
1332
  };
1303
1333
  export type ContractsCompensation = {
1334
+ /**
1335
+ * Unique identifier of the compensation
1336
+ */
1304
1337
  id: string;
1338
+ /**
1339
+ * ID of the contract version this compensation belongs to
1340
+ */
1305
1341
  contract_version_id: string;
1342
+ /**
1343
+ * ID of the contracts taxonomy categorising this compensation
1344
+ */
1306
1345
  contracts_taxonomy_id: string;
1346
+ /**
1347
+ * Free-text description of the compensation
1348
+ */
1307
1349
  description?: string;
1308
1350
  /**
1309
1351
  * Required field. You can only use the following options: fixed, undefined, up_to, per_worked_day, per_worked_hour
@@ -1323,6 +1365,9 @@ export type ContractsCompensation = {
1323
1365
  * How much time will pass between payments. If recurrence is empty, assume months. For example, 12 here means compensation is paid yearly
1324
1366
  */
1325
1367
  recurrence_count?: number;
1368
+ /**
1369
+ * Date from which this compensation applies
1370
+ */
1326
1371
  starts_on?: string;
1327
1372
  /**
1328
1373
  * Frequency (monthly, yearly, one_time) to determine how often the employee is paid. Could be empty, use `recurrence_count` in that case
@@ -1336,6 +1381,9 @@ export type ContractsCompensation = {
1336
1381
  * Human-readable hint about the payroll formula used (for example "current period" or "average of last 3 months")
1337
1382
  */
1338
1383
  calculation?: string;
1384
+ /**
1385
+ * ISO 4217 currency code the amount is expressed in
1386
+ */
1339
1387
  currency?: string;
1340
1388
  time_condition?: 'full_day' | 'half_day' | 'custom';
1341
1389
  minimum_amount_of_hours?: number;
@@ -4285,11 +4333,11 @@ export type JobCatalogLevel = {
4285
4333
  */
4286
4334
  role_name: string;
4287
4335
  /**
4288
- * Order of the level.
4336
+ * Sort order of the level within its role (lower is more junior).
4289
4337
  */
4290
4338
  order: number;
4291
4339
  /**
4292
- * Shows if the role is archived.
4340
+ * Whether this level is archived.
4293
4341
  */
4294
4342
  archived: boolean;
4295
4343
  /**
@@ -4409,51 +4457,51 @@ export type JobCatalogNode = {
4409
4457
  };
4410
4458
  export type LocationsLocation = {
4411
4459
  /**
4412
- * identifier of the location
4460
+ * Unique identifier of the workplace
4413
4461
  */
4414
4462
  id: string;
4415
4463
  /**
4416
- * company identifier
4464
+ * ID of the company this workplace belongs to
4417
4465
  */
4418
4466
  company_id: string;
4419
4467
  /**
4420
- * name of the location
4468
+ * Human-readable name of the workplace (e.g. "Barcelona Office")
4421
4469
  */
4422
4470
  name: string;
4423
4471
  /**
4424
- * timezone of the location
4472
+ * IANA timezone the workplace operates in (e.g. "Europe/Madrid")
4425
4473
  */
4426
4474
  timezone?: string;
4427
4475
  /**
4428
- * country code of the location
4476
+ * ISO country code of the workplace — the jurisdiction it sits in, often used for country-specific policy thresholds
4429
4477
  */
4430
4478
  country?: string;
4431
4479
  /**
4432
- * State of the location
4480
+ * State or province the workplace is located in
4433
4481
  */
4434
4482
  state?: string;
4435
4483
  /**
4436
- * City of the location
4484
+ * City the workplace is located in
4437
4485
  */
4438
4486
  city?: string;
4439
4487
  /**
4440
- * Address line 1 of the location
4488
+ * First line of the workplace street address
4441
4489
  */
4442
4490
  address_line_1?: string;
4443
4491
  /**
4444
- * Address line 2 of the location
4492
+ * Second line of the workplace street address (suite, floor, …)
4445
4493
  */
4446
4494
  address_line_2?: string;
4447
4495
  /**
4448
- * Postal code of the location
4496
+ * Postal/ZIP code of the workplace address
4449
4497
  */
4450
4498
  postal_code?: string;
4451
4499
  /**
4452
- * phone number of the location
4500
+ * Contact phone number for the workplace
4453
4501
  */
4454
4502
  phone_number?: string;
4455
4503
  /**
4456
- * whether the location is the main one
4504
+ * Whether this is the company's main (HQ) workplace
4457
4505
  */
4458
4506
  main: boolean;
4459
4507
  /**
@@ -5842,6 +5890,10 @@ export type ProjectManagementTimeRecord = {
5842
5890
  * Id of the subproject
5843
5891
  */
5844
5892
  subproject_id?: string;
5893
+ /**
5894
+ * Id of the project task assigned to the time record. Refers to project_management/project_tasks endpoint.
5895
+ */
5896
+ project_task_id?: string;
5845
5897
  /**
5846
5898
  * Reference date of the shift
5847
5899
  */
@@ -6021,12 +6073,30 @@ export type TeamsMembership = {
6021
6073
  lead: boolean;
6022
6074
  };
6023
6075
  export type TeamsTeam = {
6076
+ /**
6077
+ * Unique identifier of the team
6078
+ */
6024
6079
  id: string;
6080
+ /**
6081
+ * Human-readable name of the team (e.g. "Engineering")
6082
+ */
6025
6083
  name: string;
6084
+ /**
6085
+ * Free-text description of the team
6086
+ */
6026
6087
  description?: string;
6027
6088
  avatar?: string;
6089
+ /**
6090
+ * IDs of the employees who are members of this team
6091
+ */
6028
6092
  employee_ids?: Array<string>;
6093
+ /**
6094
+ * IDs of the employees who are leads of this team (subset of employee_ids)
6095
+ */
6029
6096
  lead_ids?: Array<string>;
6097
+ /**
6098
+ * ID of the company this team belongs to
6099
+ */
6030
6100
  company_id: string;
6031
6101
  };
6032
6102
  export type TimeoffAllowance = {
@@ -6344,27 +6414,27 @@ export type TimeoffLeave = {
6344
6414
  */
6345
6415
  id: string;
6346
6416
  /**
6347
- * Company identifier of the employee of the leave
6417
+ * ID of the company the leave belongs to
6348
6418
  */
6349
6419
  company_id: string;
6350
6420
  /**
6351
- * Employee identifier of the leave
6421
+ * ID of the employee taking the leave
6352
6422
  */
6353
6423
  employee_id: string;
6354
6424
  /**
6355
- * The start date of the leave
6425
+ * First day of the leave
6356
6426
  */
6357
6427
  start_on: string;
6358
6428
  /**
6359
- * The end date of the leave
6429
+ * Last day of the leave (inclusive); null while an open-ended leave has no end yet
6360
6430
  */
6361
6431
  finish_on?: string;
6362
6432
  /**
6363
- * Indicates if the leave is taken as a half-day
6433
+ * Which half of the day a half-day leave covers — `beginning_of_day` or `end_of_day`; null for full-day leaves
6364
6434
  */
6365
6435
  half_day?: string;
6366
6436
  /**
6367
- * A description of the leave
6437
+ * Free-text description of the leave
6368
6438
  */
6369
6439
  description?: string;
6370
6440
  /**
@@ -6372,15 +6442,15 @@ export type TimeoffLeave = {
6372
6442
  */
6373
6443
  reason?: string;
6374
6444
  /**
6375
- * The identifier for the type of leave
6445
+ * ID of the leave type this leave is of
6376
6446
  */
6377
6447
  leave_type_id?: string;
6378
6448
  /**
6379
- * The name of the leave type
6449
+ * Denormalised name of the leave type
6380
6450
  */
6381
6451
  leave_type_name?: string;
6382
6452
  /**
6383
- * Indicates whether the leave has been approved
6453
+ * Tri-state approval status — true = approved, false = rejected, null = pending approval
6384
6454
  */
6385
6455
  approved?: boolean;
6386
6456
  /**
@@ -6392,7 +6462,7 @@ export type TimeoffLeave = {
6392
6462
  */
6393
6463
  start_time?: string;
6394
6464
  /**
6395
- * The total number of hours taken for the leave, represented in cents
6465
+ * Total hours the leave consumes, in hundredths of an hour (e.g. 800 = 8 hours); set for hourly leaves
6396
6466
  */
6397
6467
  hours_amount_in_cents?: number;
6398
6468
  /**
@@ -6446,67 +6516,67 @@ export type TimeoffLeaveType = {
6446
6516
  */
6447
6517
  editable?: boolean;
6448
6518
  /**
6449
- * Whether approval is required for this leave type
6519
+ * Whether leaves of this type must be approved before they take effect (when false, requests are auto-approved on creation)
6450
6520
  */
6451
6521
  approval_required?: boolean;
6452
6522
  /**
6453
- * Whether the leave type accrues over time
6523
+ * Whether leaves of this type consume an accruing balance/allowance (vs. a non-accruing type that does not draw down a balance)
6454
6524
  */
6455
6525
  accrues?: boolean;
6456
6526
  /**
6457
- * Whether an attachment is required for this leave type
6527
+ * Whether an attachment (e.g. a sick note) can be added to leaves of this type
6458
6528
  */
6459
6529
  attachment: boolean;
6460
6530
  /**
6461
- * Whether endless leave is allowed
6531
+ * Whether leaves of this type may be open-ended (created with no finish date)
6462
6532
  */
6463
6533
  allow_endless?: boolean;
6464
6534
  /**
6465
- * Whether the leave type is restricted
6535
+ * Whether requesting this leave type is restricted to specific employees or conditions rather than open to everyone
6466
6536
  */
6467
6537
  restricted?: boolean;
6468
6538
  /**
6469
- * Whether the leave type is visible to employees
6539
+ * Whether the leave type is visible to employees (vs. admin-only)
6470
6540
  */
6471
6541
  visibility: boolean;
6472
6542
  /**
6473
- * Whether the leave type is workable
6543
+ * Whether days taken under this leave type still count as workable (working) days
6474
6544
  */
6475
6545
  workable: boolean;
6476
6546
  /**
6477
- * Whether the leave type is payable
6547
+ * Whether leaves of this type are paid
6478
6548
  */
6479
6549
  payable?: boolean;
6480
6550
  /**
6481
- * Identifier of the company associated with this leave type
6551
+ * ID of the company this leave type belongs to
6482
6552
  */
6483
6553
  company_id: string;
6484
6554
  /**
6485
- * Whether the attachment is mandatory
6555
+ * Whether an attachment is mandatory (not just allowed) to request this leave type
6486
6556
  */
6487
6557
  is_attachment_mandatory?: boolean;
6488
6558
  /**
6489
- * List of allowance identifiers associated with this leave type
6559
+ * IDs of the allowances this leave type draws its balance from
6490
6560
  */
6491
6561
  allowance_ids: Array<string>;
6492
6562
  /**
6493
- * Whether half-day units are enabled for this leave type
6563
+ * Whether leaves of this type can be requested in half-day units
6494
6564
  */
6495
6565
  half_days_units_enabled?: boolean;
6496
6566
  /**
6497
- * Maximum days in cents that can be taken
6567
+ * Maximum number of days a single request may take, in hundredths of a day (e.g. 5000 = 50 days); null if unbounded
6498
6568
  */
6499
6569
  max_days_in_cents?: number;
6500
6570
  /**
6501
- * Minimum days in cents that must be taken
6571
+ * Minimum number of days a single request must take, in hundredths of a day (e.g. 1000 = 10 days); null if unbounded
6502
6572
  */
6503
6573
  min_days_in_cents?: number;
6504
6574
  /**
6505
- * Description of the leave type
6575
+ * Free-text description of the leave type
6506
6576
  */
6507
6577
  description?: string;
6508
6578
  /**
6509
- * Whether additional details are required for the leave type
6579
+ * Whether the requester must provide additional details (a reason) when requesting this leave type
6510
6580
  */
6511
6581
  details_required: boolean;
6512
6582
  };
@@ -6520,11 +6590,11 @@ export type TimeoffPolicy = {
6520
6590
  */
6521
6591
  name: string;
6522
6592
  /**
6523
- * Is the main policy? It will return true if it's the main policy if not it will return false.
6593
+ * Whether this is the company's main (default) time off policy — the one employees fall under unless assigned a specific policy.
6524
6594
  */
6525
6595
  main?: boolean;
6526
6596
  /**
6527
- * The company id.
6597
+ * ID of the company that owns this policy.
6528
6598
  */
6529
6599
  company_id: string;
6530
6600
  /**
@@ -6538,15 +6608,15 @@ export type TimeoffPolicyAssignment = {
6538
6608
  */
6539
6609
  id?: string;
6540
6610
  /**
6541
- * The time off policy id
6611
+ * ID of the time off policy assigned to the employee
6542
6612
  */
6543
6613
  timeoff_policy_id: string;
6544
6614
  /**
6545
- * The employee id
6615
+ * ID of the employee this assignment governs
6546
6616
  */
6547
6617
  employee_id: string;
6548
6618
  /**
6549
- * The effective date of the policy assignment
6619
+ * Date from which this policy assignment takes effect for the employee
6550
6620
  */
6551
6621
  effective_at: string;
6552
6622
  };
@@ -6999,23 +7069,71 @@ export type WorkScheduleDayConfiguration = {
6999
7069
  duration_in_seconds: number;
7000
7070
  };
7001
7071
  export type WorkScheduleOverlapPeriod = {
7072
+ /**
7073
+ * Identifier of the overlap period
7074
+ */
7002
7075
  id: string;
7076
+ /**
7077
+ * Whether this is the default overlap period of the schedule
7078
+ */
7003
7079
  default: boolean;
7080
+ /**
7081
+ * Identifier of the schedule this overlap period belongs to
7082
+ */
7004
7083
  schedule_id: string;
7084
+ /**
7085
+ * Month the overlap period starts on
7086
+ */
7005
7087
  start_month: number;
7088
+ /**
7089
+ * Day of the month the overlap period starts on
7090
+ */
7006
7091
  start_day: number;
7092
+ /**
7093
+ * Month the overlap period ends on
7094
+ */
7007
7095
  end_month: number;
7096
+ /**
7097
+ * Day of the month the overlap period ends on
7098
+ */
7008
7099
  end_day: number;
7100
+ /**
7101
+ * Whether the schedule is flexible or fixed
7102
+ */
7009
7103
  schedule_type: string;
7010
7104
  };
7011
7105
  export type WorkScheduleSchedule = {
7106
+ /**
7107
+ * Identifier of the schedule
7108
+ */
7012
7109
  id: string;
7110
+ /**
7111
+ * Name of the schedule
7112
+ */
7013
7113
  name: string;
7114
+ /**
7115
+ * When the schedule was archived; null when the schedule is active
7116
+ */
7014
7117
  archived_at?: string;
7118
+ /**
7119
+ * Identifier of the company the schedule belongs to
7120
+ */
7015
7121
  company_id: string;
7122
+ /**
7123
+ * When the schedule was created
7124
+ */
7016
7125
  created_at: string;
7126
+ /**
7127
+ * When the schedule was last updated
7128
+ */
7017
7129
  updated_at: string;
7130
+ /**
7131
+ * Identifiers of the employees assigned to the schedule
7132
+ */
7018
7133
  employee_ids: Array<string>;
7134
+ /**
7135
+ * Overlap periods that make up the schedule
7136
+ */
7019
7137
  periods: Array<unknown>;
7020
7138
  };
7021
7139
  export type BankingBankAccountNumber = {
@@ -22851,9 +22969,16 @@ export type GetApi20261001ResourcesWorkScheduleOverlapPeriodsResponses = {
22851
22969
  export type GetApi20261001ResourcesWorkScheduleOverlapPeriodsResponse = GetApi20261001ResourcesWorkScheduleOverlapPeriodsResponses[keyof GetApi20261001ResourcesWorkScheduleOverlapPeriodsResponses];
22852
22970
  export type PostApi20261001ResourcesWorkScheduleOverlapPeriodsData = {
22853
22971
  body?: {
22854
- author: unknown;
22972
+ /**
22973
+ * Identifier of the schedule this overlap period belongs to
22974
+ */
22855
22975
  schedule_id: string;
22856
- create_params: unknown;
22976
+ /**
22977
+ * Attributes for the new overlap period (default flag, start/end day and month, and schedule type)
22978
+ */
22979
+ create_params?: {
22980
+ [key: string]: unknown;
22981
+ };
22857
22982
  };
22858
22983
  path?: never;
22859
22984
  query?: never;
@@ -22901,11 +23026,21 @@ export type GetApi20261001ResourcesWorkScheduleOverlapPeriodsByIdResponses = {
22901
23026
  export type GetApi20261001ResourcesWorkScheduleOverlapPeriodsByIdResponse = GetApi20261001ResourcesWorkScheduleOverlapPeriodsByIdResponses[keyof GetApi20261001ResourcesWorkScheduleOverlapPeriodsByIdResponses];
22902
23027
  export type PutApi20261001ResourcesWorkScheduleOverlapPeriodsByIdData = {
22903
23028
  body?: {
22904
- author: unknown;
23029
+ /**
23030
+ * Identifier of the overlap period to update
23031
+ */
22905
23032
  id: string;
22906
- update_params: unknown;
23033
+ /**
23034
+ * Attributes to update on the overlap period (start/end day and month)
23035
+ */
23036
+ update_params?: {
23037
+ [key: string]: unknown;
23038
+ };
22907
23039
  };
22908
23040
  path: {
23041
+ /**
23042
+ * Identifier of the overlap period to update
23043
+ */
22909
23044
  id: string;
22910
23045
  };
22911
23046
  query?: never;
@@ -22940,7 +23075,13 @@ export type GetApi20261001ResourcesWorkScheduleSchedulesResponses = {
22940
23075
  export type GetApi20261001ResourcesWorkScheduleSchedulesResponse = GetApi20261001ResourcesWorkScheduleSchedulesResponses[keyof GetApi20261001ResourcesWorkScheduleSchedulesResponses];
22941
23076
  export type PostApi20261001ResourcesWorkScheduleSchedulesData = {
22942
23077
  body?: {
23078
+ /**
23079
+ * Name of the new schedule
23080
+ */
22943
23081
  name: string;
23082
+ /**
23083
+ * Whether the schedule is flexible or fixed
23084
+ */
22944
23085
  schedule_type: string;
22945
23086
  };
22946
23087
  path?: never;
@@ -22971,11 +23112,19 @@ export type GetApi20261001ResourcesWorkScheduleSchedulesByIdResponses = {
22971
23112
  export type GetApi20261001ResourcesWorkScheduleSchedulesByIdResponse = GetApi20261001ResourcesWorkScheduleSchedulesByIdResponses[keyof GetApi20261001ResourcesWorkScheduleSchedulesByIdResponses];
22972
23113
  export type PutApi20261001ResourcesWorkScheduleSchedulesByIdData = {
22973
23114
  body?: {
23115
+ /**
23116
+ * The new name for the schedule
23117
+ */
22974
23118
  name?: string;
23119
+ /**
23120
+ * Identifier of the schedule to update
23121
+ */
22975
23122
  id: string;
22976
- author: unknown;
22977
23123
  };
22978
23124
  path: {
23125
+ /**
23126
+ * Identifier of the schedule to update
23127
+ */
22979
23128
  id: string;
22980
23129
  };
22981
23130
  query?: never;