@digiteers/uloba3-sdk 3.4.2 → 4.0.0

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.
package/dist/types.d.ts CHANGED
@@ -1558,7 +1558,7 @@ export interface paths {
1558
1558
  };
1559
1559
  /**
1560
1560
  * Get user statistics
1561
- * @description Get comprehensive user statistics for support dashboard. Only support staff can access.
1561
+ * @description Get comprehensive user statistics. All authenticated users can access.
1562
1562
  */
1563
1563
  get: {
1564
1564
  parameters: {
@@ -1636,17 +1636,6 @@ export interface paths {
1636
1636
  };
1637
1637
  };
1638
1638
  };
1639
- /** @description Default Response */
1640
- 403: {
1641
- headers: {
1642
- [name: string]: unknown;
1643
- };
1644
- content: {
1645
- 'application/json': {
1646
- error: string;
1647
- };
1648
- };
1649
- };
1650
1639
  };
1651
1640
  };
1652
1641
  put?: never;
@@ -4376,7 +4365,7 @@ export interface paths {
4376
4365
  };
4377
4366
  /**
4378
4367
  * List jobs
4379
- * @description Search and filter job listings (requires authentication)
4368
+ * @description Search and filter job listings (requires COORDINATOR role)
4380
4369
  */
4381
4370
  get: {
4382
4371
  parameters: {
@@ -4469,7 +4458,7 @@ export interface paths {
4469
4458
  put?: never;
4470
4459
  /**
4471
4460
  * Create a new job draft
4472
- * @description Create a new job draft for autosave (any account member can create)
4461
+ * @description Create a new job draft (requires COORDINATOR role)
4473
4462
  */
4474
4463
  post: {
4475
4464
  parameters: {
@@ -4575,7 +4564,10 @@ export interface paths {
4575
4564
  path?: never;
4576
4565
  cookie?: never;
4577
4566
  };
4578
- /** Get job by ID */
4567
+ /**
4568
+ * Get job by ID
4569
+ * @description Get job details (requires COORDINATOR role)
4570
+ */
4579
4571
  get: {
4580
4572
  parameters: {
4581
4573
  query?: never;
@@ -4729,7 +4721,7 @@ export interface paths {
4729
4721
  };
4730
4722
  /**
4731
4723
  * Update a job
4732
- * @description Update a job (draft updates allowed by any member, status changes require owner/admin)
4724
+ * @description Update a job (requires COORDINATOR role)
4733
4725
  */
4734
4726
  put: {
4735
4727
  parameters: {
@@ -5220,7 +5212,7 @@ export interface paths {
5220
5212
  put?: never;
5221
5213
  /**
5222
5214
  * Publish a job
5223
- * @description Publish a job (requires owner or admin role in account)
5215
+ * @description Publish a job (requires COORDINATOR role)
5224
5216
  */
5225
5217
  post: {
5226
5218
  parameters: {
@@ -5335,7 +5327,7 @@ export interface paths {
5335
5327
  put?: never;
5336
5328
  /**
5337
5329
  * Unpublish a job
5338
- * @description Unpublish a job (any account member can unpublish)
5330
+ * @description Unpublish a job (requires COORDINATOR role)
5339
5331
  */
5340
5332
  post: {
5341
5333
  parameters: {
@@ -5450,7 +5442,7 @@ export interface paths {
5450
5442
  put?: never;
5451
5443
  /**
5452
5444
  * Extend a job listing
5453
- * @description Extend the duration of a published job listing
5445
+ * @description Extend the duration of a published job listing (requires COORDINATOR role)
5454
5446
  */
5455
5447
  post: {
5456
5448
  parameters: {
@@ -5562,7 +5554,7 @@ export interface paths {
5562
5554
  };
5563
5555
  /**
5564
5556
  * Get job subscription
5565
- * @description Get active subscription information for a job
5557
+ * @description Get active subscription information for a job (requires COORDINATOR role)
5566
5558
  */
5567
5559
  get: {
5568
5560
  parameters: {
@@ -5588,7 +5580,7 @@ export interface paths {
5588
5580
  post?: never;
5589
5581
  /**
5590
5582
  * Delete a job subscription
5591
- * @description Delete/cancel a future job subscription (any account member can delete)
5583
+ * @description Delete/cancel a future job subscription (requires COORDINATOR role)
5592
5584
  */
5593
5585
  delete: {
5594
5586
  parameters: {
@@ -5761,7 +5753,7 @@ export interface paths {
5761
5753
  };
5762
5754
  /**
5763
5755
  * Get job locations
5764
- * @description Get all locations for a job
5756
+ * @description Get all locations for a job (requires COORDINATOR role)
5765
5757
  */
5766
5758
  get: {
5767
5759
  parameters: {
@@ -5909,7 +5901,7 @@ export interface paths {
5909
5901
  };
5910
5902
  /**
5911
5903
  * Add location to job
5912
- * @description Add a new location to a job
5904
+ * @description Add a new location to a job (requires COORDINATOR role)
5913
5905
  */
5914
5906
  post: {
5915
5907
  parameters: {
@@ -10506,7 +10498,7 @@ export interface paths {
10506
10498
  patch?: never;
10507
10499
  trace?: never;
10508
10500
  };
10509
- '/api/applications/': {
10501
+ '/api/applications/sent': {
10510
10502
  parameters: {
10511
10503
  query?: never;
10512
10504
  header?: never;
@@ -10514,8 +10506,8 @@ export interface paths {
10514
10506
  cookie?: never;
10515
10507
  };
10516
10508
  /**
10517
- * List my applications
10518
- * @description Get a list of applications for the current user
10509
+ * List sent applications
10510
+ * @description Get a list of applications sent by the current user
10519
10511
  */
10520
10512
  get: {
10521
10513
  parameters: {
@@ -10682,95 +10674,7 @@ export interface paths {
10682
10674
  patch?: never;
10683
10675
  trace?: never;
10684
10676
  };
10685
- '/api/applications/teamlead': {
10686
- parameters: {
10687
- query?: never;
10688
- header?: never;
10689
- path?: never;
10690
- cookie?: never;
10691
- };
10692
- /**
10693
- * List applications for team leaders
10694
- * @description Get applications for jobs where user is coordinator with role-based response
10695
- */
10696
- get: {
10697
- parameters: {
10698
- query?: {
10699
- limit?: number;
10700
- offset?: number;
10701
- sort_by?: string;
10702
- sort_order?: 'asc' | 'desc';
10703
- archived?: boolean;
10704
- search?: string;
10705
- created_after?: string;
10706
- created_before?: string;
10707
- updated_after?: string;
10708
- updated_before?: string;
10709
- status?: 'draft' | 'submitted' | 'approved' | 'rejected' | 'cancelled';
10710
- job_id?: string;
10711
- applicant_id?: string;
10712
- };
10713
- header?: never;
10714
- path?: never;
10715
- cookie?: never;
10716
- };
10717
- requestBody?: never;
10718
- responses: {
10719
- /** @description Default Response */
10720
- 200: {
10721
- headers: {
10722
- [name: string]: unknown;
10723
- };
10724
- content: {
10725
- 'application/json': {
10726
- data: {
10727
- /** Format: uuid */
10728
- id: string;
10729
- /** Format: uuid */
10730
- job_id: string;
10731
- /** Format: uuid */
10732
- applicant_id: string;
10733
- status: unknown;
10734
- /** Format: date-time */
10735
- created_at: string;
10736
- /** Format: date-time */
10737
- updated_at: string;
10738
- submitted_at?: string | null;
10739
- job_title?: string | null;
10740
- applicant_name?: string | null;
10741
- applicant_email?: string | null;
10742
- employer_id?: string | null;
10743
- employer_name?: string | null;
10744
- employer_email?: string | null;
10745
- can_reapply?: boolean | null;
10746
- has_contract?: boolean | null;
10747
- }[];
10748
- pagination: {
10749
- total: number;
10750
- limit: number;
10751
- offset: number;
10752
- page?: number;
10753
- has_more?: boolean;
10754
- };
10755
- metadata: {
10756
- viewerContext: string;
10757
- timestamp: string;
10758
- filters?: unknown;
10759
- };
10760
- };
10761
- };
10762
- };
10763
- };
10764
- };
10765
- put?: never;
10766
- post?: never;
10767
- delete?: never;
10768
- options?: never;
10769
- head?: never;
10770
- patch?: never;
10771
- trace?: never;
10772
- };
10773
- '/api/applications/teamlead/stats': {
10677
+ '/api/applications/received/stats': {
10774
10678
  parameters: {
10775
10679
  query?: never;
10776
10680
  header?: never;
@@ -10778,8 +10682,8 @@ export interface paths {
10778
10682
  cookie?: never;
10779
10683
  };
10780
10684
  /**
10781
- * Get application statistics for team leaders
10782
- * @description Get statistics for applications with role-based filtering
10685
+ * Get received application statistics
10686
+ * @description Get statistics for applications received by coordinator
10783
10687
  */
10784
10688
  get: {
10785
10689
  parameters: {
@@ -11051,95 +10955,7 @@ export interface paths {
11051
10955
  patch?: never;
11052
10956
  trace?: never;
11053
10957
  };
11054
- '/api/applications/assistant': {
11055
- parameters: {
11056
- query?: never;
11057
- header?: never;
11058
- path?: never;
11059
- cookie?: never;
11060
- };
11061
- /**
11062
- * List applications for assistants
11063
- * @description Get applications submitted by the assistant with role-based response
11064
- */
11065
- get: {
11066
- parameters: {
11067
- query?: {
11068
- limit?: number;
11069
- offset?: number;
11070
- sort_by?: string;
11071
- sort_order?: 'asc' | 'desc';
11072
- archived?: boolean;
11073
- search?: string;
11074
- created_after?: string;
11075
- created_before?: string;
11076
- updated_after?: string;
11077
- updated_before?: string;
11078
- status?: 'draft' | 'submitted' | 'approved' | 'rejected' | 'cancelled';
11079
- job_id?: string;
11080
- applicant_id?: string;
11081
- };
11082
- header?: never;
11083
- path?: never;
11084
- cookie?: never;
11085
- };
11086
- requestBody?: never;
11087
- responses: {
11088
- /** @description Default Response */
11089
- 200: {
11090
- headers: {
11091
- [name: string]: unknown;
11092
- };
11093
- content: {
11094
- 'application/json': {
11095
- data: {
11096
- /** Format: uuid */
11097
- id: string;
11098
- /** Format: uuid */
11099
- job_id: string;
11100
- /** Format: uuid */
11101
- applicant_id: string;
11102
- status: unknown;
11103
- /** Format: date-time */
11104
- created_at: string;
11105
- /** Format: date-time */
11106
- updated_at: string;
11107
- submitted_at?: string | null;
11108
- job_title?: string | null;
11109
- applicant_name?: string | null;
11110
- applicant_email?: string | null;
11111
- employer_id?: string | null;
11112
- employer_name?: string | null;
11113
- employer_email?: string | null;
11114
- can_reapply?: boolean | null;
11115
- has_contract?: boolean | null;
11116
- }[];
11117
- pagination: {
11118
- total: number;
11119
- limit: number;
11120
- offset: number;
11121
- page?: number;
11122
- has_more?: boolean;
11123
- };
11124
- metadata: {
11125
- viewerContext: string;
11126
- timestamp: string;
11127
- filters?: unknown;
11128
- };
11129
- };
11130
- };
11131
- };
11132
- };
11133
- };
11134
- put?: never;
11135
- post?: never;
11136
- delete?: never;
11137
- options?: never;
11138
- head?: never;
11139
- patch?: never;
11140
- trace?: never;
11141
- };
11142
- '/api/applications/assistant/stats': {
10958
+ '/api/applications/sent/stats': {
11143
10959
  parameters: {
11144
10960
  query?: never;
11145
10961
  header?: never;
@@ -11147,8 +10963,8 @@ export interface paths {
11147
10963
  cookie?: never;
11148
10964
  };
11149
10965
  /**
11150
- * Get application statistics for assistants
11151
- * @description Get statistics for applications with role-based filtering
10966
+ * Get sent application statistics
10967
+ * @description Get statistics for applications sent by the current user
11152
10968
  */
11153
10969
  get: {
11154
10970
  parameters: {
@@ -13554,7 +13370,7 @@ export interface paths {
13554
13370
  patch?: never;
13555
13371
  trace?: never;
13556
13372
  };
13557
- '/api/inquiries/': {
13373
+ '/api/inquiries/sent': {
13558
13374
  parameters: {
13559
13375
  query?: never;
13560
13376
  header?: never;
@@ -13562,8 +13378,8 @@ export interface paths {
13562
13378
  cookie?: never;
13563
13379
  };
13564
13380
  /**
13565
- * [DEPRECATED] Use /teamlead instead
13566
- * @description DEPRECATED: Get a list of inquiries I have sent as a coordinator. Use /teamlead endpoint instead.
13381
+ * List sent inquiries
13382
+ * @description Get a list of inquiries sent by the coordinator
13567
13383
  */
13568
13384
  get: {
13569
13385
  parameters: {
@@ -13828,7 +13644,7 @@ export interface paths {
13828
13644
  patch?: never;
13829
13645
  trace?: never;
13830
13646
  };
13831
- '/api/inquiries/teamlead': {
13647
+ '/api/inquiries/received': {
13832
13648
  parameters: {
13833
13649
  query?: never;
13834
13650
  header?: never;
@@ -13836,8 +13652,8 @@ export interface paths {
13836
13652
  cookie?: never;
13837
13653
  };
13838
13654
  /**
13839
- * List inquiries for team leaders
13840
- * @description Get a list of inquiries sent by team leaders/coordinators
13655
+ * List received inquiries
13656
+ * @description Get all inquiries received by the assistant
13841
13657
  */
13842
13658
  get: {
13843
13659
  parameters: {
@@ -14102,7 +13918,7 @@ export interface paths {
14102
13918
  patch?: never;
14103
13919
  trace?: never;
14104
13920
  };
14105
- '/api/inquiries/assistant': {
13921
+ '/api/inquiries/{id}': {
14106
13922
  parameters: {
14107
13923
  query?: never;
14108
13924
  header?: never;
@@ -14110,28 +13926,16 @@ export interface paths {
14110
13926
  cookie?: never;
14111
13927
  };
14112
13928
  /**
14113
- * List inquiries for assistants
14114
- * @description Get all inquiries received as an assistant
13929
+ * Get inquiry details
13930
+ * @description Get detailed information about a specific inquiry
14115
13931
  */
14116
13932
  get: {
14117
13933
  parameters: {
14118
- query?: {
14119
- limit?: number;
14120
- offset?: number;
14121
- sort_by?: string;
14122
- sort_order?: 'asc' | 'desc';
14123
- archived?: boolean;
14124
- search?: string;
14125
- created_after?: string;
14126
- created_before?: string;
14127
- updated_after?: string;
14128
- updated_before?: string;
14129
- status?: string;
14130
- assistant_id?: string;
14131
- job_id?: string;
14132
- };
13934
+ query?: never;
14133
13935
  header?: never;
14134
- path?: never;
13936
+ path: {
13937
+ id: string;
13938
+ };
14135
13939
  cookie?: never;
14136
13940
  };
14137
13941
  requestBody?: never;
@@ -14143,6 +13947,10 @@ export interface paths {
14143
13947
  };
14144
13948
  content: {
14145
13949
  'application/json': {
13950
+ /**
13951
+ * Enhanced Inquiry View
13952
+ * @description Inquiry view with all denormalized and computed fields from inquiry_view
13953
+ */
14146
13954
  data: {
14147
13955
  /**
14148
13956
  * UUID
@@ -14356,59 +14164,71 @@ export interface paths {
14356
14164
  can_be_submitted?: boolean;
14357
14165
  can_be_cancelled?: boolean;
14358
14166
  response_required_from?: 'inquirer' | 'assistant' | 'none' | null;
14359
- }[];
14360
- pagination: {
14361
- page: number;
14362
- limit: number;
14363
- total: number;
14364
- has_more: boolean;
14167
+ };
14168
+ metadata: {
14169
+ viewerContext: string;
14170
+ permissions: {
14171
+ canView: boolean;
14172
+ canEdit: boolean;
14173
+ canDelete: boolean;
14174
+ canSubmit?: boolean;
14175
+ canAccept?: boolean;
14176
+ canDecline?: boolean;
14177
+ canCancel?: boolean;
14178
+ canArchive?: boolean;
14179
+ canCreateContract?: boolean;
14180
+ };
14365
14181
  };
14366
14182
  };
14367
14183
  };
14368
14184
  };
14369
14185
  };
14370
14186
  };
14371
- put?: never;
14372
- post?: never;
14373
- delete?: never;
14374
- options?: never;
14375
- head?: never;
14376
- patch?: never;
14377
- trace?: never;
14378
- };
14379
- '/api/inquiries/received': {
14380
- parameters: {
14381
- query?: never;
14382
- header?: never;
14383
- path?: never;
14384
- cookie?: never;
14385
- };
14386
14187
  /**
14387
- * [DEPRECATED] Use /assistant instead
14388
- * @description DEPRECATED: Get all inquiries received as an assistant. Use /assistant endpoint instead.
14188
+ * Update draft inquiry
14189
+ * @description Update a draft inquiry
14389
14190
  */
14390
- get: {
14191
+ put: {
14391
14192
  parameters: {
14392
- query?: {
14393
- limit?: number;
14394
- offset?: number;
14395
- sort_by?: string;
14396
- sort_order?: 'asc' | 'desc';
14397
- archived?: boolean;
14398
- search?: string;
14399
- created_after?: string;
14400
- created_before?: string;
14401
- updated_after?: string;
14402
- updated_before?: string;
14403
- status?: string;
14404
- assistant_id?: string;
14405
- job_id?: string;
14406
- };
14193
+ query?: never;
14407
14194
  header?: never;
14408
- path?: never;
14195
+ path: {
14196
+ id: string;
14197
+ };
14409
14198
  cookie?: never;
14410
14199
  };
14411
- requestBody?: never;
14200
+ /** @description Complete schema for updating inquiry fields */
14201
+ requestBody?: {
14202
+ content: {
14203
+ 'application/json': {
14204
+ /**
14205
+ * Message
14206
+ * @description Inquiry message content
14207
+ */
14208
+ message?: string;
14209
+ proposed_start_date?: string | null;
14210
+ proposed_end_date?: string | null;
14211
+ proposed_hours_per_week?: number | null;
14212
+ proposed_duration_weeks?: number | null;
14213
+ /**
14214
+ * InquiryStatus
14215
+ * @description Business status of an inquiry in the workflow
14216
+ */
14217
+ status?: 'draft' | 'submitted' | 'accepted' | 'declined' | 'cancelled' | 'expired';
14218
+ accepted_message?: string | null;
14219
+ accepted_at?: string | null;
14220
+ declined_message?: string | null;
14221
+ declined_at?: string | null;
14222
+ cancelled_message?: string | null;
14223
+ cancelled_at?: string | null;
14224
+ expires_at?: string | null;
14225
+ archived_by_inquirer?: boolean | null;
14226
+ archived_by_assistant?: boolean | null;
14227
+ archived_at_inquirer?: string | null;
14228
+ archived_at_assistant?: string | null;
14229
+ };
14230
+ };
14231
+ };
14412
14232
  responses: {
14413
14233
  /** @description Default Response */
14414
14234
  200: {
@@ -14417,6 +14237,10 @@ export interface paths {
14417
14237
  };
14418
14238
  content: {
14419
14239
  'application/json': {
14240
+ /**
14241
+ * Enhanced Inquiry View
14242
+ * @description Inquiry view with all denormalized and computed fields from inquiry_view
14243
+ */
14420
14244
  data: {
14421
14245
  /**
14422
14246
  * UUID
@@ -14630,27 +14454,61 @@ export interface paths {
14630
14454
  can_be_submitted?: boolean;
14631
14455
  can_be_cancelled?: boolean;
14632
14456
  response_required_from?: 'inquirer' | 'assistant' | 'none' | null;
14633
- }[];
14634
- pagination: {
14635
- page: number;
14636
- limit: number;
14637
- total: number;
14638
- has_more: boolean;
14457
+ };
14458
+ metadata: {
14459
+ viewerContext: string;
14460
+ permissions: {
14461
+ canView: boolean;
14462
+ canEdit: boolean;
14463
+ canDelete: boolean;
14464
+ canSubmit?: boolean;
14465
+ canAccept?: boolean;
14466
+ canDecline?: boolean;
14467
+ canCancel?: boolean;
14468
+ canArchive?: boolean;
14469
+ canCreateContract?: boolean;
14470
+ };
14639
14471
  };
14640
14472
  };
14641
14473
  };
14642
14474
  };
14643
14475
  };
14644
14476
  };
14645
- put?: never;
14646
14477
  post?: never;
14647
- delete?: never;
14478
+ /**
14479
+ * Delete draft inquiry
14480
+ * @description Delete a draft inquiry
14481
+ */
14482
+ delete: {
14483
+ parameters: {
14484
+ query?: never;
14485
+ header?: never;
14486
+ path: {
14487
+ id: string;
14488
+ };
14489
+ cookie?: never;
14490
+ };
14491
+ requestBody?: never;
14492
+ responses: {
14493
+ /** @description Default Response */
14494
+ 200: {
14495
+ headers: {
14496
+ [name: string]: unknown;
14497
+ };
14498
+ content: {
14499
+ 'application/json': {
14500
+ success: boolean;
14501
+ };
14502
+ };
14503
+ };
14504
+ };
14505
+ };
14648
14506
  options?: never;
14649
14507
  head?: never;
14650
14508
  patch?: never;
14651
14509
  trace?: never;
14652
14510
  };
14653
- '/api/inquiries/{id}': {
14511
+ '/api/inquiries/{id}/view': {
14654
14512
  parameters: {
14655
14513
  query?: never;
14656
14514
  header?: never;
@@ -14658,8 +14516,8 @@ export interface paths {
14658
14516
  cookie?: never;
14659
14517
  };
14660
14518
  /**
14661
- * Get inquiry details
14662
- * @description Get detailed information about a specific inquiry
14519
+ * Get inquiry view
14520
+ * @description Get inquiry data formatted for public display with optional authentication
14663
14521
  */
14664
14522
  get: {
14665
14523
  parameters: {
@@ -14916,11 +14774,28 @@ export interface paths {
14916
14774
  };
14917
14775
  };
14918
14776
  };
14777
+ put?: never;
14778
+ post?: never;
14779
+ delete?: never;
14780
+ options?: never;
14781
+ head?: never;
14782
+ patch?: never;
14783
+ trace?: never;
14784
+ };
14785
+ '/api/inquiries/{id}/submit': {
14786
+ parameters: {
14787
+ query?: never;
14788
+ header?: never;
14789
+ path?: never;
14790
+ cookie?: never;
14791
+ };
14792
+ get?: never;
14793
+ put?: never;
14919
14794
  /**
14920
- * Update draft inquiry
14921
- * @description Update a draft inquiry
14795
+ * Submit inquiry
14796
+ * @description Submit a draft inquiry to an assistant
14922
14797
  */
14923
- put: {
14798
+ post: {
14924
14799
  parameters: {
14925
14800
  query?: never;
14926
14801
  header?: never;
@@ -15206,52 +15081,26 @@ export interface paths {
15206
15081
  };
15207
15082
  };
15208
15083
  };
15209
- post?: never;
15210
- /**
15211
- * Delete draft inquiry
15212
- * @description Delete a draft inquiry
15213
- */
15214
- delete: {
15215
- parameters: {
15216
- query?: never;
15217
- header?: never;
15218
- path: {
15219
- id: string;
15220
- };
15221
- cookie?: never;
15222
- };
15223
- requestBody?: never;
15224
- responses: {
15225
- /** @description Default Response */
15226
- 200: {
15227
- headers: {
15228
- [name: string]: unknown;
15229
- };
15230
- content: {
15231
- 'application/json': {
15232
- success: boolean;
15233
- };
15234
- };
15235
- };
15236
- };
15237
- };
15084
+ delete?: never;
15238
15085
  options?: never;
15239
15086
  head?: never;
15240
15087
  patch?: never;
15241
15088
  trace?: never;
15242
15089
  };
15243
- '/api/inquiries/{id}/view': {
15090
+ '/api/inquiries/{id}/accept': {
15244
15091
  parameters: {
15245
15092
  query?: never;
15246
15093
  header?: never;
15247
15094
  path?: never;
15248
15095
  cookie?: never;
15249
15096
  };
15097
+ get?: never;
15098
+ put?: never;
15250
15099
  /**
15251
- * Get inquiry view
15252
- * @description Get inquiry data formatted for public display with optional authentication
15100
+ * Accept inquiry
15101
+ * @description Accept an inquiry as an assistant
15253
15102
  */
15254
- get: {
15103
+ post: {
15255
15104
  parameters: {
15256
15105
  query?: never;
15257
15106
  header?: never;
@@ -15260,7 +15109,19 @@ export interface paths {
15260
15109
  };
15261
15110
  cookie?: never;
15262
15111
  };
15263
- requestBody?: never;
15112
+ requestBody?: {
15113
+ content: {
15114
+ 'application/json': {
15115
+ message?: string;
15116
+ availability?: {
15117
+ /** Format: date */
15118
+ available_from?: string;
15119
+ available_hours_per_week?: number;
15120
+ preferred_schedule?: string[];
15121
+ };
15122
+ };
15123
+ };
15124
+ };
15264
15125
  responses: {
15265
15126
  /** @description Default Response */
15266
15127
  200: {
@@ -15506,15 +15367,13 @@ export interface paths {
15506
15367
  };
15507
15368
  };
15508
15369
  };
15509
- put?: never;
15510
- post?: never;
15511
15370
  delete?: never;
15512
15371
  options?: never;
15513
15372
  head?: never;
15514
15373
  patch?: never;
15515
15374
  trace?: never;
15516
15375
  };
15517
- '/api/inquiries/{id}/submit': {
15376
+ '/api/inquiries/{id}/decline': {
15518
15377
  parameters: {
15519
15378
  query?: never;
15520
15379
  header?: never;
@@ -15524,8 +15383,8 @@ export interface paths {
15524
15383
  get?: never;
15525
15384
  put?: never;
15526
15385
  /**
15527
- * Submit inquiry
15528
- * @description Submit a draft inquiry to an assistant
15386
+ * Decline inquiry
15387
+ * @description Decline an inquiry as an assistant
15529
15388
  */
15530
15389
  post: {
15531
15390
  parameters: {
@@ -15536,35 +15395,10 @@ export interface paths {
15536
15395
  };
15537
15396
  cookie?: never;
15538
15397
  };
15539
- /** @description Complete schema for updating inquiry fields */
15540
15398
  requestBody?: {
15541
15399
  content: {
15542
15400
  'application/json': {
15543
- /**
15544
- * Message
15545
- * @description Inquiry message content
15546
- */
15547
15401
  message?: string;
15548
- proposed_start_date?: string | null;
15549
- proposed_end_date?: string | null;
15550
- proposed_hours_per_week?: number | null;
15551
- proposed_duration_weeks?: number | null;
15552
- /**
15553
- * InquiryStatus
15554
- * @description Business status of an inquiry in the workflow
15555
- */
15556
- status?: 'draft' | 'submitted' | 'accepted' | 'declined' | 'cancelled' | 'expired';
15557
- accepted_message?: string | null;
15558
- accepted_at?: string | null;
15559
- declined_message?: string | null;
15560
- declined_at?: string | null;
15561
- cancelled_message?: string | null;
15562
- cancelled_at?: string | null;
15563
- expires_at?: string | null;
15564
- archived_by_inquirer?: boolean | null;
15565
- archived_by_assistant?: boolean | null;
15566
- archived_at_inquirer?: string | null;
15567
- archived_at_assistant?: string | null;
15568
15402
  };
15569
15403
  };
15570
15404
  };
@@ -15819,7 +15653,7 @@ export interface paths {
15819
15653
  patch?: never;
15820
15654
  trace?: never;
15821
15655
  };
15822
- '/api/inquiries/{id}/accept': {
15656
+ '/api/inquiries/{id}/cancel': {
15823
15657
  parameters: {
15824
15658
  query?: never;
15825
15659
  header?: never;
@@ -15829,8 +15663,8 @@ export interface paths {
15829
15663
  get?: never;
15830
15664
  put?: never;
15831
15665
  /**
15832
- * Accept inquiry
15833
- * @description Accept an inquiry as an assistant
15666
+ * Cancel inquiry
15667
+ * @description Cancel a submitted inquiry as a coordinator
15834
15668
  */
15835
15669
  post: {
15836
15670
  parameters: {
@@ -15845,12 +15679,6 @@ export interface paths {
15845
15679
  content: {
15846
15680
  'application/json': {
15847
15681
  message?: string;
15848
- availability?: {
15849
- /** Format: date */
15850
- available_from?: string;
15851
- available_hours_per_week?: number;
15852
- preferred_schedule?: string[];
15853
- };
15854
15682
  };
15855
15683
  };
15856
15684
  };
@@ -16105,7 +15933,7 @@ export interface paths {
16105
15933
  patch?: never;
16106
15934
  trace?: never;
16107
15935
  };
16108
- '/api/inquiries/{id}/decline': {
15936
+ '/api/inquiries/{id}/archive': {
16109
15937
  parameters: {
16110
15938
  query?: never;
16111
15939
  header?: never;
@@ -16115,8 +15943,8 @@ export interface paths {
16115
15943
  get?: never;
16116
15944
  put?: never;
16117
15945
  /**
16118
- * Decline inquiry
16119
- * @description Decline an inquiry as an assistant
15946
+ * Archive or unarchive inquiry
15947
+ * @description Archive or unarchive an inquiry
16120
15948
  */
16121
15949
  post: {
16122
15950
  parameters: {
@@ -16127,10 +15955,10 @@ export interface paths {
16127
15955
  };
16128
15956
  cookie?: never;
16129
15957
  };
16130
- requestBody?: {
15958
+ requestBody: {
16131
15959
  content: {
16132
15960
  'application/json': {
16133
- message?: string;
15961
+ archive: boolean;
16134
15962
  };
16135
15963
  };
16136
15964
  };
@@ -16385,654 +16213,296 @@ export interface paths {
16385
16213
  patch?: never;
16386
16214
  trace?: never;
16387
16215
  };
16388
- '/api/inquiries/{id}/cancel': {
16216
+ '/api/inquiries/sent/stats': {
16389
16217
  parameters: {
16390
16218
  query?: never;
16391
16219
  header?: never;
16392
16220
  path?: never;
16393
16221
  cookie?: never;
16394
16222
  };
16395
- get?: never;
16396
- put?: never;
16397
16223
  /**
16398
- * Cancel inquiry
16399
- * @description Cancel a submitted inquiry as a coordinator
16224
+ * Get sent inquiry statistics
16225
+ * @description Get statistics for inquiries sent by coordinators
16400
16226
  */
16401
- post: {
16227
+ get: {
16402
16228
  parameters: {
16403
16229
  query?: never;
16404
16230
  header?: never;
16405
- path: {
16406
- id: string;
16407
- };
16231
+ path?: never;
16408
16232
  cookie?: never;
16409
16233
  };
16410
- requestBody?: {
16411
- content: {
16412
- 'application/json': {
16413
- message?: string;
16414
- };
16415
- };
16416
- };
16234
+ requestBody?: never;
16417
16235
  responses: {
16418
- /** @description Default Response */
16236
+ /** @description Standard statistics response wrapper */
16419
16237
  200: {
16420
16238
  headers: {
16421
16239
  [name: string]: unknown;
16422
16240
  };
16423
16241
  content: {
16424
16242
  'application/json': {
16425
- /**
16426
- * Enhanced Inquiry View
16427
- * @description Inquiry view with all denormalized and computed fields from inquiry_view
16428
- */
16243
+ /** @description Inquiry statistics for coordinators */
16429
16244
  data: {
16245
+ /** @description Inquiry counts by status from coordinator perspective */
16246
+ byStatus: {
16247
+ /** @description Non-negative integer (0 or greater) */
16248
+ draft: number;
16249
+ /** @description Non-negative integer (0 or greater) */
16250
+ submitted: number;
16251
+ /** @description Non-negative integer (0 or greater) */
16252
+ accepted: number;
16253
+ /** @description Non-negative integer (0 or greater) */
16254
+ declined: number;
16255
+ /** @description Non-negative integer (0 or greater) */
16256
+ cancelled: number;
16257
+ /** @description Non-negative integer (0 or greater) */
16258
+ expired?: number;
16259
+ };
16260
+ /** @description Inquiry total counts for coordinator */
16261
+ totals: {
16262
+ /** @description Non-negative integer (0 or greater) */
16263
+ all: number;
16264
+ /** @description Non-negative integer (0 or greater) */
16265
+ active: number;
16266
+ /** @description Non-negative integer (0 or greater) */
16267
+ needsAction?: number;
16268
+ /** @description Non-negative integer (0 or greater) */
16269
+ inProgress?: number;
16270
+ };
16271
+ alerts?: {
16272
+ type: 'info' | 'warning' | 'error' | 'action_required';
16273
+ severity: 'low' | 'medium' | 'high';
16274
+ /** @description Non-negative integer (0 or greater) */
16275
+ count: number;
16276
+ message: string;
16277
+ status: string;
16278
+ }[];
16279
+ };
16280
+ /** @description Metadata about the statistics query and response */
16281
+ metadata: {
16282
+ /** @description Role context for the statistics query */
16283
+ role: 'coordinator' | 'teamlead' | 'assistant' | 'case_manager' | 'applicant';
16430
16284
  /**
16431
- * UUID
16432
- * Format: uuid
16433
- * @description Universally unique identifier
16434
- */
16435
- id: string;
16436
- /**
16437
- * UUID
16438
- * Format: uuid
16439
- * @description Universally unique identifier
16440
- */
16441
- assistant_id: string;
16442
- /**
16443
- * UUID
16444
16285
  * Format: uuid
16445
- * @description Universally unique identifier
16286
+ * @description UUID version 4 identifier
16446
16287
  */
16447
- inquirer_id: string;
16288
+ accountId?: string;
16448
16289
  /**
16449
- * UUID
16450
16290
  * Format: uuid
16451
- * @description Universally unique identifier
16452
- */
16453
- receiver_id?: string;
16454
- job_id?: string | null;
16455
- account_id?: string | null;
16456
- previous_inquiry_id?: string | null;
16457
- conversation_id?: string | null;
16458
- /**
16459
- * Message
16460
- * @description Inquiry message content
16461
- */
16462
- message: string;
16463
- proposed_start_date?: string | null;
16464
- proposed_end_date?: string | null;
16465
- proposed_hours_per_week?: number | null;
16466
- proposed_duration_weeks?: number | null;
16467
- /**
16468
- * InquiryStatus
16469
- * @description Business status of an inquiry in the workflow
16470
- */
16471
- status: 'draft' | 'submitted' | 'accepted' | 'declined' | 'cancelled' | 'expired';
16472
- /**
16473
- * InquiryLifecycleStatus
16474
- * @description Data lifecycle status for GDPR compliance
16291
+ * @description UUID version 4 identifier
16475
16292
  */
16476
- lifecycle_status: 'operational' | 'deleted' | 'archived';
16293
+ userId?: string;
16477
16294
  /**
16478
- * Timestamp
16479
16295
  * Format: date-time
16480
- * @description ISO datetime string
16296
+ * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
16481
16297
  */
16482
- created_at: string;
16298
+ queriedAt: string;
16299
+ /** @description Whether the result was served from cache */
16300
+ cached?: boolean;
16483
16301
  /**
16484
- * Timestamp
16485
16302
  * Format: date-time
16486
- * @description ISO datetime string
16303
+ * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
16487
16304
  */
16488
- updated_at: string;
16489
- submitted_at?: string | null;
16305
+ cacheExpiresAt?: string;
16306
+ };
16307
+ };
16308
+ };
16309
+ };
16310
+ };
16311
+ };
16312
+ put?: never;
16313
+ post?: never;
16314
+ delete?: never;
16315
+ options?: never;
16316
+ head?: never;
16317
+ patch?: never;
16318
+ trace?: never;
16319
+ };
16320
+ '/api/inquiries/received/stats': {
16321
+ parameters: {
16322
+ query?: never;
16323
+ header?: never;
16324
+ path?: never;
16325
+ cookie?: never;
16326
+ };
16327
+ /**
16328
+ * Get received inquiry statistics
16329
+ * @description Get statistics for inquiries received by assistants
16330
+ */
16331
+ get: {
16332
+ parameters: {
16333
+ query?: never;
16334
+ header?: never;
16335
+ path?: never;
16336
+ cookie?: never;
16337
+ };
16338
+ requestBody?: never;
16339
+ responses: {
16340
+ /** @description Standard statistics response wrapper */
16341
+ 200: {
16342
+ headers: {
16343
+ [name: string]: unknown;
16344
+ };
16345
+ content: {
16346
+ 'application/json': {
16347
+ /** @description Inquiry statistics for assistants */
16348
+ data: {
16349
+ /** @description Inquiry counts by status from assistant perspective */
16350
+ byStatus: {
16351
+ /** @description Non-negative integer (0 or greater) */
16352
+ submitted?: number;
16353
+ /** @description Non-negative integer (0 or greater) */
16354
+ accepted?: number;
16355
+ /** @description Non-negative integer (0 or greater) */
16356
+ declined?: number;
16357
+ };
16358
+ /** @description Inquiry total counts for assistant */
16359
+ totals: {
16360
+ /** @description Non-negative integer (0 or greater) */
16361
+ all: number;
16362
+ /** @description Non-negative integer (0 or greater) */
16363
+ active: number;
16364
+ /** @description Non-negative integer (0 or greater) */
16365
+ needsAction?: number;
16366
+ /** @description Non-negative integer (0 or greater) */
16367
+ inProgress?: number;
16368
+ };
16369
+ alerts?: {
16370
+ type: 'info' | 'warning' | 'error' | 'action_required';
16371
+ severity: 'low' | 'medium' | 'high';
16372
+ /** @description Non-negative integer (0 or greater) */
16373
+ count: number;
16374
+ message: string;
16375
+ status: string;
16376
+ }[];
16377
+ };
16378
+ /** @description Metadata about the statistics query and response */
16379
+ metadata: {
16380
+ /** @description Role context for the statistics query */
16381
+ role: 'coordinator' | 'teamlead' | 'assistant' | 'case_manager' | 'applicant';
16490
16382
  /**
16491
- * Timestamp
16492
- * Format: date-time
16493
- * @description ISO datetime string
16383
+ * Format: uuid
16384
+ * @description UUID version 4 identifier
16494
16385
  */
16495
- status_changed_at: string;
16386
+ accountId?: string;
16496
16387
  /**
16497
- * Timestamp
16498
- * Format: date-time
16499
- * @description ISO datetime string
16388
+ * Format: uuid
16389
+ * @description UUID version 4 identifier
16500
16390
  */
16501
- lifecycle_changed_at: string;
16502
- accepted_message?: string | null;
16503
- accepted_at?: string | null;
16504
- declined_message?: string | null;
16505
- declined_at?: string | null;
16506
- cancelled_message?: string | null;
16507
- cancelled_at?: string | null;
16508
- expires_at?: string | null;
16509
- inquiry_number?: number | null;
16510
- archived_by_inquirer?: boolean | null;
16511
- archived_by_assistant?: boolean | null;
16512
- archived_at_inquirer?: string | null;
16513
- archived_at_assistant?: string | null;
16514
- assistant_deleted?: boolean | null;
16515
- assistant_deleted_at?: string | null;
16516
- job_deleted?: boolean | null;
16517
- job_deleted_at?: string | null;
16391
+ userId?: string;
16518
16392
  /**
16519
- * Inquiry User Reference
16520
- * @description User information for inquiry relations
16393
+ * Format: date-time
16394
+ * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
16521
16395
  */
16522
- inquirer?: {
16523
- /**
16524
- * UUID
16525
- * Format: uuid
16526
- * @description Universally unique identifier
16527
- */
16528
- id: string;
16529
- full_name?: string | null;
16530
- given_name?: string | null;
16531
- family_name?: string | null;
16532
- email?: string | null;
16533
- };
16396
+ queriedAt: string;
16397
+ /** @description Whether the result was served from cache */
16398
+ cached?: boolean;
16534
16399
  /**
16535
- * Inquiry User Reference
16536
- * @description User information for inquiry relations
16400
+ * Format: date-time
16401
+ * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
16537
16402
  */
16538
- assistant?: {
16539
- /**
16540
- * UUID
16541
- * Format: uuid
16542
- * @description Universally unique identifier
16543
- */
16544
- id: string;
16545
- full_name?: string | null;
16546
- given_name?: string | null;
16547
- family_name?: string | null;
16548
- email?: string | null;
16549
- };
16550
- job?: {
16551
- /**
16552
- * UUID
16553
- * Format: uuid
16554
- * @description Universally unique identifier
16555
- */
16556
- id: string;
16557
- /**
16558
- * Job Title
16559
- * @description Title of the job posting
16560
- */
16561
- title: string;
16562
- /**
16563
- * Job Status
16564
- * @description Current status of the job posting
16565
- */
16566
- status: string;
16567
- organization?: {
16568
- /**
16569
- * UUID
16570
- * Format: uuid
16571
- * @description Universally unique identifier
16572
- */
16573
- id: string;
16574
- name?: string | null;
16575
- };
16576
- } | null;
16577
- account?: {
16578
- /**
16579
- * UUID
16580
- * Format: uuid
16581
- * @description Universally unique identifier
16582
- */
16583
- id: string;
16584
- name?: string | null;
16585
- type?: string | null;
16586
- } | null;
16587
- inquiry_text?: string;
16588
- responded_at?: string | null;
16589
- submitted_by?: string | null;
16590
- submitted_by_name?: string | null;
16591
- accepted_by?: string | null;
16592
- accepted_by_name?: string | null;
16593
- declined_by?: string | null;
16594
- declined_by_name?: string | null;
16595
- cancelled_by?: string | null;
16596
- cancelled_by_name?: string | null;
16597
- inquirer_first_name?: string | null;
16598
- inquirer_last_name?: string | null;
16599
- inquirer_email?: string | null;
16600
- inquirer_phone?: string | null;
16601
- inquirer_name?: string | null;
16602
- assistant_first_name?: string | null;
16603
- assistant_last_name?: string | null;
16604
- assistant_email?: string | null;
16605
- assistant_phone?: string | null;
16606
- assistant_name?: string | null;
16607
- receiver_email?: string | null;
16608
- receiver_name?: string | null;
16609
- receiver_phone?: string | null;
16610
- assistant_profile_id?: string | null;
16611
- assistant_profile_title?: string | null;
16612
- assistant_profile_status?: string | null;
16613
- assistant_availability_status?: string | null;
16614
- job_title?: string | null;
16615
- job_status?: string | null;
16616
- job_deadline?: string | null;
16617
- status_label?: string | null;
16618
- has_job_reference?: boolean | null;
16619
- has_response?: boolean | null;
16620
- is_pending_response?: boolean | null;
16621
- attachments?: {
16622
- /** Format: uuid */
16623
- id: string;
16624
- file_name: string;
16625
- original_name: string;
16626
- mime_type: string;
16627
- file_size: number;
16628
- file_type?: string;
16629
- description?: string;
16630
- storage_bucket: string;
16631
- storage_path: string;
16632
- /** Format: uuid */
16633
- uploaded_by: string;
16634
- /** Format: date-time */
16635
- created_at: string;
16636
- }[] | null;
16637
- is_expired?: boolean;
16638
- days_until_expiry?: number | null;
16639
- can_be_submitted?: boolean;
16640
- can_be_cancelled?: boolean;
16641
- response_required_from?: 'inquirer' | 'assistant' | 'none' | null;
16642
- };
16643
- metadata: {
16644
- viewerContext: string;
16645
- permissions: {
16646
- canView: boolean;
16647
- canEdit: boolean;
16648
- canDelete: boolean;
16649
- canSubmit?: boolean;
16650
- canAccept?: boolean;
16651
- canDecline?: boolean;
16652
- canCancel?: boolean;
16653
- canArchive?: boolean;
16654
- canCreateContract?: boolean;
16655
- };
16403
+ cacheExpiresAt?: string;
16656
16404
  };
16657
16405
  };
16658
16406
  };
16659
16407
  };
16660
16408
  };
16661
16409
  };
16410
+ put?: never;
16411
+ post?: never;
16662
16412
  delete?: never;
16663
16413
  options?: never;
16664
16414
  head?: never;
16665
16415
  patch?: never;
16666
16416
  trace?: never;
16667
16417
  };
16668
- '/api/inquiries/{id}/archive': {
16418
+ '/api/inquiries/teamlead/stats': {
16669
16419
  parameters: {
16670
16420
  query?: never;
16671
16421
  header?: never;
16672
16422
  path?: never;
16673
16423
  cookie?: never;
16674
16424
  };
16675
- get?: never;
16676
- put?: never;
16677
16425
  /**
16678
- * Archive or unarchive inquiry
16679
- * @description Archive or unarchive an inquiry
16426
+ * Get inquiry statistics for team leaders
16427
+ * @description Get statistics for inquiries sent by team leaders/coordinators
16680
16428
  */
16681
- post: {
16429
+ get: {
16682
16430
  parameters: {
16683
16431
  query?: never;
16684
16432
  header?: never;
16685
- path: {
16686
- id: string;
16687
- };
16433
+ path?: never;
16688
16434
  cookie?: never;
16689
16435
  };
16690
- requestBody: {
16691
- content: {
16692
- 'application/json': {
16693
- archive: boolean;
16694
- };
16695
- };
16696
- };
16436
+ requestBody?: never;
16697
16437
  responses: {
16698
- /** @description Default Response */
16438
+ /** @description Standard statistics response wrapper */
16699
16439
  200: {
16700
16440
  headers: {
16701
16441
  [name: string]: unknown;
16702
16442
  };
16703
16443
  content: {
16704
16444
  'application/json': {
16705
- /**
16706
- * Enhanced Inquiry View
16707
- * @description Inquiry view with all denormalized and computed fields from inquiry_view
16708
- */
16445
+ /** @description Inquiry statistics for coordinators */
16709
16446
  data: {
16447
+ /** @description Inquiry counts by status from coordinator perspective */
16448
+ byStatus: {
16449
+ /** @description Non-negative integer (0 or greater) */
16450
+ draft: number;
16451
+ /** @description Non-negative integer (0 or greater) */
16452
+ submitted: number;
16453
+ /** @description Non-negative integer (0 or greater) */
16454
+ accepted: number;
16455
+ /** @description Non-negative integer (0 or greater) */
16456
+ declined: number;
16457
+ /** @description Non-negative integer (0 or greater) */
16458
+ cancelled: number;
16459
+ /** @description Non-negative integer (0 or greater) */
16460
+ expired?: number;
16461
+ };
16462
+ /** @description Inquiry total counts for coordinator */
16463
+ totals: {
16464
+ /** @description Non-negative integer (0 or greater) */
16465
+ all: number;
16466
+ /** @description Non-negative integer (0 or greater) */
16467
+ active: number;
16468
+ /** @description Non-negative integer (0 or greater) */
16469
+ needsAction?: number;
16470
+ /** @description Non-negative integer (0 or greater) */
16471
+ inProgress?: number;
16472
+ };
16473
+ alerts?: {
16474
+ type: 'info' | 'warning' | 'error' | 'action_required';
16475
+ severity: 'low' | 'medium' | 'high';
16476
+ /** @description Non-negative integer (0 or greater) */
16477
+ count: number;
16478
+ message: string;
16479
+ status: string;
16480
+ }[];
16481
+ };
16482
+ /** @description Metadata about the statistics query and response */
16483
+ metadata: {
16484
+ /** @description Role context for the statistics query */
16485
+ role: 'coordinator' | 'teamlead' | 'assistant' | 'case_manager' | 'applicant';
16710
16486
  /**
16711
- * UUID
16712
- * Format: uuid
16713
- * @description Universally unique identifier
16714
- */
16715
- id: string;
16716
- /**
16717
- * UUID
16718
- * Format: uuid
16719
- * @description Universally unique identifier
16720
- */
16721
- assistant_id: string;
16722
- /**
16723
- * UUID
16724
16487
  * Format: uuid
16725
- * @description Universally unique identifier
16488
+ * @description UUID version 4 identifier
16726
16489
  */
16727
- inquirer_id: string;
16490
+ accountId?: string;
16728
16491
  /**
16729
- * UUID
16730
16492
  * Format: uuid
16731
- * @description Universally unique identifier
16732
- */
16733
- receiver_id?: string;
16734
- job_id?: string | null;
16735
- account_id?: string | null;
16736
- previous_inquiry_id?: string | null;
16737
- conversation_id?: string | null;
16738
- /**
16739
- * Message
16740
- * @description Inquiry message content
16741
- */
16742
- message: string;
16743
- proposed_start_date?: string | null;
16744
- proposed_end_date?: string | null;
16745
- proposed_hours_per_week?: number | null;
16746
- proposed_duration_weeks?: number | null;
16747
- /**
16748
- * InquiryStatus
16749
- * @description Business status of an inquiry in the workflow
16750
- */
16751
- status: 'draft' | 'submitted' | 'accepted' | 'declined' | 'cancelled' | 'expired';
16752
- /**
16753
- * InquiryLifecycleStatus
16754
- * @description Data lifecycle status for GDPR compliance
16755
- */
16756
- lifecycle_status: 'operational' | 'deleted' | 'archived';
16757
- /**
16758
- * Timestamp
16759
- * Format: date-time
16760
- * @description ISO datetime string
16761
- */
16762
- created_at: string;
16763
- /**
16764
- * Timestamp
16765
- * Format: date-time
16766
- * @description ISO datetime string
16493
+ * @description UUID version 4 identifier
16767
16494
  */
16768
- updated_at: string;
16769
- submitted_at?: string | null;
16495
+ userId?: string;
16770
16496
  /**
16771
- * Timestamp
16772
16497
  * Format: date-time
16773
- * @description ISO datetime string
16498
+ * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
16774
16499
  */
16775
- status_changed_at: string;
16500
+ queriedAt: string;
16501
+ /** @description Whether the result was served from cache */
16502
+ cached?: boolean;
16776
16503
  /**
16777
- * Timestamp
16778
16504
  * Format: date-time
16779
- * @description ISO datetime string
16780
- */
16781
- lifecycle_changed_at: string;
16782
- accepted_message?: string | null;
16783
- accepted_at?: string | null;
16784
- declined_message?: string | null;
16785
- declined_at?: string | null;
16786
- cancelled_message?: string | null;
16787
- cancelled_at?: string | null;
16788
- expires_at?: string | null;
16789
- inquiry_number?: number | null;
16790
- archived_by_inquirer?: boolean | null;
16791
- archived_by_assistant?: boolean | null;
16792
- archived_at_inquirer?: string | null;
16793
- archived_at_assistant?: string | null;
16794
- assistant_deleted?: boolean | null;
16795
- assistant_deleted_at?: string | null;
16796
- job_deleted?: boolean | null;
16797
- job_deleted_at?: string | null;
16798
- /**
16799
- * Inquiry User Reference
16800
- * @description User information for inquiry relations
16801
- */
16802
- inquirer?: {
16803
- /**
16804
- * UUID
16805
- * Format: uuid
16806
- * @description Universally unique identifier
16807
- */
16808
- id: string;
16809
- full_name?: string | null;
16810
- given_name?: string | null;
16811
- family_name?: string | null;
16812
- email?: string | null;
16813
- };
16814
- /**
16815
- * Inquiry User Reference
16816
- * @description User information for inquiry relations
16817
- */
16818
- assistant?: {
16819
- /**
16820
- * UUID
16821
- * Format: uuid
16822
- * @description Universally unique identifier
16823
- */
16824
- id: string;
16825
- full_name?: string | null;
16826
- given_name?: string | null;
16827
- family_name?: string | null;
16828
- email?: string | null;
16829
- };
16830
- job?: {
16831
- /**
16832
- * UUID
16833
- * Format: uuid
16834
- * @description Universally unique identifier
16835
- */
16836
- id: string;
16837
- /**
16838
- * Job Title
16839
- * @description Title of the job posting
16840
- */
16841
- title: string;
16842
- /**
16843
- * Job Status
16844
- * @description Current status of the job posting
16845
- */
16846
- status: string;
16847
- organization?: {
16848
- /**
16849
- * UUID
16850
- * Format: uuid
16851
- * @description Universally unique identifier
16852
- */
16853
- id: string;
16854
- name?: string | null;
16855
- };
16856
- } | null;
16857
- account?: {
16858
- /**
16859
- * UUID
16860
- * Format: uuid
16861
- * @description Universally unique identifier
16862
- */
16863
- id: string;
16864
- name?: string | null;
16865
- type?: string | null;
16866
- } | null;
16867
- inquiry_text?: string;
16868
- responded_at?: string | null;
16869
- submitted_by?: string | null;
16870
- submitted_by_name?: string | null;
16871
- accepted_by?: string | null;
16872
- accepted_by_name?: string | null;
16873
- declined_by?: string | null;
16874
- declined_by_name?: string | null;
16875
- cancelled_by?: string | null;
16876
- cancelled_by_name?: string | null;
16877
- inquirer_first_name?: string | null;
16878
- inquirer_last_name?: string | null;
16879
- inquirer_email?: string | null;
16880
- inquirer_phone?: string | null;
16881
- inquirer_name?: string | null;
16882
- assistant_first_name?: string | null;
16883
- assistant_last_name?: string | null;
16884
- assistant_email?: string | null;
16885
- assistant_phone?: string | null;
16886
- assistant_name?: string | null;
16887
- receiver_email?: string | null;
16888
- receiver_name?: string | null;
16889
- receiver_phone?: string | null;
16890
- assistant_profile_id?: string | null;
16891
- assistant_profile_title?: string | null;
16892
- assistant_profile_status?: string | null;
16893
- assistant_availability_status?: string | null;
16894
- job_title?: string | null;
16895
- job_status?: string | null;
16896
- job_deadline?: string | null;
16897
- status_label?: string | null;
16898
- has_job_reference?: boolean | null;
16899
- has_response?: boolean | null;
16900
- is_pending_response?: boolean | null;
16901
- attachments?: {
16902
- /** Format: uuid */
16903
- id: string;
16904
- file_name: string;
16905
- original_name: string;
16906
- mime_type: string;
16907
- file_size: number;
16908
- file_type?: string;
16909
- description?: string;
16910
- storage_bucket: string;
16911
- storage_path: string;
16912
- /** Format: uuid */
16913
- uploaded_by: string;
16914
- /** Format: date-time */
16915
- created_at: string;
16916
- }[] | null;
16917
- is_expired?: boolean;
16918
- days_until_expiry?: number | null;
16919
- can_be_submitted?: boolean;
16920
- can_be_cancelled?: boolean;
16921
- response_required_from?: 'inquirer' | 'assistant' | 'none' | null;
16922
- };
16923
- metadata: {
16924
- viewerContext: string;
16925
- permissions: {
16926
- canView: boolean;
16927
- canEdit: boolean;
16928
- canDelete: boolean;
16929
- canSubmit?: boolean;
16930
- canAccept?: boolean;
16931
- canDecline?: boolean;
16932
- canCancel?: boolean;
16933
- canArchive?: boolean;
16934
- canCreateContract?: boolean;
16935
- };
16936
- };
16937
- };
16938
- };
16939
- };
16940
- };
16941
- };
16942
- delete?: never;
16943
- options?: never;
16944
- head?: never;
16945
- patch?: never;
16946
- trace?: never;
16947
- };
16948
- '/api/inquiries/teamlead/stats': {
16949
- parameters: {
16950
- query?: never;
16951
- header?: never;
16952
- path?: never;
16953
- cookie?: never;
16954
- };
16955
- /**
16956
- * Get inquiry statistics for team leaders
16957
- * @description Get statistics for inquiries sent by team leaders/coordinators
16958
- */
16959
- get: {
16960
- parameters: {
16961
- query?: never;
16962
- header?: never;
16963
- path?: never;
16964
- cookie?: never;
16965
- };
16966
- requestBody?: never;
16967
- responses: {
16968
- /** @description Standard statistics response wrapper */
16969
- 200: {
16970
- headers: {
16971
- [name: string]: unknown;
16972
- };
16973
- content: {
16974
- 'application/json': {
16975
- /** @description Inquiry statistics for coordinators */
16976
- data: {
16977
- /** @description Inquiry counts by status from coordinator perspective */
16978
- byStatus: {
16979
- /** @description Non-negative integer (0 or greater) */
16980
- draft: number;
16981
- /** @description Non-negative integer (0 or greater) */
16982
- submitted: number;
16983
- /** @description Non-negative integer (0 or greater) */
16984
- accepted: number;
16985
- /** @description Non-negative integer (0 or greater) */
16986
- declined: number;
16987
- /** @description Non-negative integer (0 or greater) */
16988
- cancelled: number;
16989
- /** @description Non-negative integer (0 or greater) */
16990
- expired?: number;
16991
- };
16992
- /** @description Inquiry total counts for coordinator */
16993
- totals: {
16994
- /** @description Non-negative integer (0 or greater) */
16995
- all: number;
16996
- /** @description Non-negative integer (0 or greater) */
16997
- active: number;
16998
- /** @description Non-negative integer (0 or greater) */
16999
- needsAction?: number;
17000
- /** @description Non-negative integer (0 or greater) */
17001
- inProgress?: number;
17002
- };
17003
- alerts?: {
17004
- type: 'info' | 'warning' | 'error' | 'action_required';
17005
- severity: 'low' | 'medium' | 'high';
17006
- /** @description Non-negative integer (0 or greater) */
17007
- count: number;
17008
- message: string;
17009
- status: string;
17010
- }[];
17011
- };
17012
- /** @description Metadata about the statistics query and response */
17013
- metadata: {
17014
- /** @description Role context for the statistics query */
17015
- role: 'coordinator' | 'teamlead' | 'assistant' | 'case_manager' | 'applicant';
17016
- /**
17017
- * Format: uuid
17018
- * @description UUID version 4 identifier
17019
- */
17020
- accountId?: string;
17021
- /**
17022
- * Format: uuid
17023
- * @description UUID version 4 identifier
17024
- */
17025
- userId?: string;
17026
- /**
17027
- * Format: date-time
17028
- * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
17029
- */
17030
- queriedAt: string;
17031
- /** @description Whether the result was served from cache */
17032
- cached?: boolean;
17033
- /**
17034
- * Format: date-time
17035
- * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
16505
+ * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
17036
16506
  */
17037
16507
  cacheExpiresAt?: string;
17038
16508
  };
@@ -17081,11 +16551,11 @@ export interface paths {
17081
16551
  /** @description Inquiry counts by status from assistant perspective */
17082
16552
  byStatus: {
17083
16553
  /** @description Non-negative integer (0 or greater) */
17084
- pending: number;
16554
+ submitted?: number;
17085
16555
  /** @description Non-negative integer (0 or greater) */
17086
- accepted: number;
16556
+ accepted?: number;
17087
16557
  /** @description Non-negative integer (0 or greater) */
17088
- declined: number;
16558
+ declined?: number;
17089
16559
  };
17090
16560
  /** @description Inquiry total counts for assistant */
17091
16561
  totals: {
@@ -17147,189 +16617,26 @@ export interface paths {
17147
16617
  patch?: never;
17148
16618
  trace?: never;
17149
16619
  };
17150
- '/api/inquiries/stats': {
16620
+ '/api/inquiries/{id}/contracts': {
17151
16621
  parameters: {
17152
16622
  query?: never;
17153
16623
  header?: never;
17154
16624
  path?: never;
17155
16625
  cookie?: never;
17156
16626
  };
16627
+ get?: never;
16628
+ put?: never;
17157
16629
  /**
17158
- * [DEPRECATED] Use /teamlead/stats or /assistant/stats
17159
- * @description DEPRECATED: Get statistics for inquiries. Use role-specific endpoints instead.
16630
+ * Create contract from inquiry
16631
+ * @description Create a contract from an accepted inquiry
17160
16632
  */
17161
- get: {
16633
+ post: {
17162
16634
  parameters: {
17163
16635
  query?: never;
17164
16636
  header?: never;
17165
- path?: never;
17166
- cookie?: never;
17167
- };
17168
- requestBody?: never;
17169
- responses: {
17170
- /** @description Inquiry statistics response (role-dependent structure) */
17171
- 200: {
17172
- headers: {
17173
- [name: string]: unknown;
17174
- };
17175
- content: {
17176
- 'application/json': {
17177
- /** @description Inquiry statistics for coordinators */
17178
- data: {
17179
- /** @description Inquiry counts by status from coordinator perspective */
17180
- byStatus: {
17181
- /** @description Non-negative integer (0 or greater) */
17182
- draft: number;
17183
- /** @description Non-negative integer (0 or greater) */
17184
- submitted: number;
17185
- /** @description Non-negative integer (0 or greater) */
17186
- accepted: number;
17187
- /** @description Non-negative integer (0 or greater) */
17188
- declined: number;
17189
- /** @description Non-negative integer (0 or greater) */
17190
- cancelled: number;
17191
- /** @description Non-negative integer (0 or greater) */
17192
- expired?: number;
17193
- };
17194
- /** @description Inquiry total counts for coordinator */
17195
- totals: {
17196
- /** @description Non-negative integer (0 or greater) */
17197
- all: number;
17198
- /** @description Non-negative integer (0 or greater) */
17199
- active: number;
17200
- /** @description Non-negative integer (0 or greater) */
17201
- needsAction?: number;
17202
- /** @description Non-negative integer (0 or greater) */
17203
- inProgress?: number;
17204
- };
17205
- alerts?: {
17206
- type: 'info' | 'warning' | 'error' | 'action_required';
17207
- severity: 'low' | 'medium' | 'high';
17208
- /** @description Non-negative integer (0 or greater) */
17209
- count: number;
17210
- message: string;
17211
- status: string;
17212
- }[];
17213
- };
17214
- /** @description Metadata about the statistics query and response */
17215
- metadata: {
17216
- /** @description Role context for the statistics query */
17217
- role: 'coordinator' | 'teamlead' | 'assistant' | 'case_manager' | 'applicant';
17218
- /**
17219
- * Format: uuid
17220
- * @description UUID version 4 identifier
17221
- */
17222
- accountId?: string;
17223
- /**
17224
- * Format: uuid
17225
- * @description UUID version 4 identifier
17226
- */
17227
- userId?: string;
17228
- /**
17229
- * Format: date-time
17230
- * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
17231
- */
17232
- queriedAt: string;
17233
- /** @description Whether the result was served from cache */
17234
- cached?: boolean;
17235
- /**
17236
- * Format: date-time
17237
- * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
17238
- */
17239
- cacheExpiresAt?: string;
17240
- };
17241
- } | {
17242
- /** @description Inquiry statistics for assistants */
17243
- data: {
17244
- /** @description Inquiry counts by status from assistant perspective */
17245
- byStatus: {
17246
- /** @description Non-negative integer (0 or greater) */
17247
- pending: number;
17248
- /** @description Non-negative integer (0 or greater) */
17249
- accepted: number;
17250
- /** @description Non-negative integer (0 or greater) */
17251
- declined: number;
17252
- };
17253
- /** @description Inquiry total counts for assistant */
17254
- totals: {
17255
- /** @description Non-negative integer (0 or greater) */
17256
- all: number;
17257
- /** @description Non-negative integer (0 or greater) */
17258
- active: number;
17259
- /** @description Non-negative integer (0 or greater) */
17260
- needsAction?: number;
17261
- /** @description Non-negative integer (0 or greater) */
17262
- inProgress?: number;
17263
- };
17264
- alerts?: {
17265
- type: 'info' | 'warning' | 'error' | 'action_required';
17266
- severity: 'low' | 'medium' | 'high';
17267
- /** @description Non-negative integer (0 or greater) */
17268
- count: number;
17269
- message: string;
17270
- status: string;
17271
- }[];
17272
- };
17273
- /** @description Metadata about the statistics query and response */
17274
- metadata: {
17275
- /** @description Role context for the statistics query */
17276
- role: 'coordinator' | 'teamlead' | 'assistant' | 'case_manager' | 'applicant';
17277
- /**
17278
- * Format: uuid
17279
- * @description UUID version 4 identifier
17280
- */
17281
- accountId?: string;
17282
- /**
17283
- * Format: uuid
17284
- * @description UUID version 4 identifier
17285
- */
17286
- userId?: string;
17287
- /**
17288
- * Format: date-time
17289
- * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
17290
- */
17291
- queriedAt: string;
17292
- /** @description Whether the result was served from cache */
17293
- cached?: boolean;
17294
- /**
17295
- * Format: date-time
17296
- * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
17297
- */
17298
- cacheExpiresAt?: string;
17299
- };
17300
- };
17301
- };
17302
- };
17303
- };
17304
- };
17305
- put?: never;
17306
- post?: never;
17307
- delete?: never;
17308
- options?: never;
17309
- head?: never;
17310
- patch?: never;
17311
- trace?: never;
17312
- };
17313
- '/api/inquiries/{id}/contracts': {
17314
- parameters: {
17315
- query?: never;
17316
- header?: never;
17317
- path?: never;
17318
- cookie?: never;
17319
- };
17320
- get?: never;
17321
- put?: never;
17322
- /**
17323
- * Create contract from inquiry
17324
- * @description Create a contract from an accepted inquiry
17325
- */
17326
- post: {
17327
- parameters: {
17328
- query?: never;
17329
- header?: never;
17330
- path: {
17331
- id: string;
17332
- };
16637
+ path: {
16638
+ id: string;
16639
+ };
17333
16640
  cookie?: never;
17334
16641
  };
17335
16642
  requestBody?: {
@@ -17511,7 +16818,7 @@ export interface paths {
17511
16818
  patch?: never;
17512
16819
  trace?: never;
17513
16820
  };
17514
- '/api/invites/teamlead': {
16821
+ '/api/invites/sent/stats': {
17515
16822
  parameters: {
17516
16823
  query?: never;
17517
16824
  header?: never;
@@ -17519,19 +16826,12 @@ export interface paths {
17519
16826
  cookie?: never;
17520
16827
  };
17521
16828
  /**
17522
- * List invites for teamlead
17523
- * @description Get invites relevant to teamlead role (sent invites)
16829
+ * Get sent invite statistics
16830
+ * @description Get statistics for invites sent by the current user (inviter perspective)
17524
16831
  */
17525
16832
  get: {
17526
16833
  parameters: {
17527
- query?: {
17528
- status?: string;
17529
- archived?: boolean;
17530
- page?: number;
17531
- limit?: number;
17532
- sort_by?: string;
17533
- sort_order?: 'asc' | 'desc';
17534
- };
16834
+ query?: never;
17535
16835
  header?: never;
17536
16836
  path?: never;
17537
16837
  cookie?: never;
@@ -17545,93 +16845,26 @@ export interface paths {
17545
16845
  };
17546
16846
  content: {
17547
16847
  'application/json': {
17548
- data: (({
17549
- /** Format: uuid */
17550
- id: string;
17551
- } & {
17552
- /** Format: uuid */
17553
- inviter_id: string;
17554
- invitee_id: string | null;
17555
- email: string | null;
17556
- } & {
17557
- account_id: string | null;
17558
- conversation_id: string | null;
17559
- } & {
17560
- message: string;
17561
- } & {
17562
- status: 'draft' | 'submitted' | 'accepted' | 'declined' | 'cancelled' | 'expired';
17563
- /** Format: date-time */
17564
- status_changed_at: string;
17565
- } & {
17566
- lifecycle_status: 'operational' | 'archived' | 'anonymized';
17567
- /** Format: date-time */
17568
- lifecycle_changed_at: string;
17569
- } & {
17570
- submitted_at: string | null;
17571
- accepted_at: string | null;
17572
- declined_at: string | null;
17573
- cancelled_at: string | null;
17574
- expired_at: string | null;
17575
- /** Format: date-time */
17576
- created_at: string;
17577
- /** Format: date-time */
17578
- updated_at: string;
17579
- } & {
17580
- accepted_message: string | null;
17581
- declined_message: string | null;
17582
- cancelled_message: string | null;
17583
- } & {
17584
- archived_by_inviter: boolean | null;
17585
- archived_by_invitee: boolean | null;
17586
- archived_at_inviter: string | null;
17587
- archived_at_invitee: string | null;
17588
- } & {
17589
- inviter_deleted: boolean | null;
17590
- inviter_deleted_at: string | null;
17591
- invitee_deleted: boolean | null;
17592
- invitee_deleted_at: string | null;
17593
- } & {
17594
- proposed_start_date: string | null;
17595
- proposed_end_date: string | null;
17596
- proposed_hours_per_week: number | null;
17597
- job_id: string | null;
17598
- }) & {
17599
- inviter_user_id: string | null;
17600
- inviter_full_name: string | null;
17601
- inviter_email: string | null;
17602
- inviter_phone: string | null;
17603
- inviter_given_name: string | null;
17604
- inviter_family_name: string | null;
17605
- inviter_picture: string | null;
17606
- invitee_user_id: string | null;
17607
- invitee_full_name: string | null;
17608
- invitee_email: string | null;
17609
- invitee_phone: string | null;
17610
- invitee_given_name: string | null;
17611
- invitee_family_name: string | null;
17612
- invitee_picture: string | null;
17613
- account_id_ref: string | null;
17614
- account_owner_id: string | null;
17615
- submitted_by: string | null;
17616
- submitted_by_name: string | null;
17617
- accepted_by: string | null;
17618
- accepted_by_name: string | null;
17619
- declined_by: string | null;
17620
- declined_by_name: string | null;
17621
- cancelled_by: string | null;
17622
- cancelled_by_name: string | null;
17623
- })[];
17624
- pagination: {
17625
- page: number;
17626
- limit: number;
17627
- offset?: number;
17628
- total: number;
17629
- has_more: boolean;
16848
+ data: {
16849
+ totals: {
16850
+ all: number;
16851
+ needsAction: number;
16852
+ };
16853
+ byStatus?: {
16854
+ draft?: number;
16855
+ submitted?: number;
16856
+ accepted?: number;
16857
+ declined?: number;
16858
+ cancelled?: number;
16859
+ expired?: number;
16860
+ };
17630
16861
  };
17631
16862
  metadata: {
17632
- viewerContext: string;
16863
+ role?: string;
16864
+ userId?: string;
16865
+ cached?: boolean;
16866
+ queriedAt?: string;
17633
16867
  timestamp?: string;
17634
- filters?: unknown;
17635
16868
  };
17636
16869
  };
17637
16870
  };
@@ -17646,7 +16879,7 @@ export interface paths {
17646
16879
  patch?: never;
17647
16880
  trace?: never;
17648
16881
  };
17649
- '/api/invites/assistant': {
16882
+ '/api/invites/received/stats': {
17650
16883
  parameters: {
17651
16884
  query?: never;
17652
16885
  header?: never;
@@ -17654,19 +16887,12 @@ export interface paths {
17654
16887
  cookie?: never;
17655
16888
  };
17656
16889
  /**
17657
- * List invites for assistant
17658
- * @description Get invites relevant to assistant role (received invites)
16890
+ * Get received invite statistics
16891
+ * @description Get statistics for invites received by the current user (invitee perspective)
17659
16892
  */
17660
16893
  get: {
17661
16894
  parameters: {
17662
- query?: {
17663
- status?: string;
17664
- archived?: boolean;
17665
- page?: number;
17666
- limit?: number;
17667
- sort_by?: string;
17668
- sort_order?: 'asc' | 'desc';
17669
- };
16895
+ query?: never;
17670
16896
  header?: never;
17671
16897
  path?: never;
17672
16898
  cookie?: never;
@@ -17680,93 +16906,26 @@ export interface paths {
17680
16906
  };
17681
16907
  content: {
17682
16908
  'application/json': {
17683
- data: (({
17684
- /** Format: uuid */
17685
- id: string;
17686
- } & {
17687
- /** Format: uuid */
17688
- inviter_id: string;
17689
- invitee_id: string | null;
17690
- email: string | null;
17691
- } & {
17692
- account_id: string | null;
17693
- conversation_id: string | null;
17694
- } & {
17695
- message: string;
17696
- } & {
17697
- status: 'draft' | 'submitted' | 'accepted' | 'declined' | 'cancelled' | 'expired';
17698
- /** Format: date-time */
17699
- status_changed_at: string;
17700
- } & {
17701
- lifecycle_status: 'operational' | 'archived' | 'anonymized';
17702
- /** Format: date-time */
17703
- lifecycle_changed_at: string;
17704
- } & {
17705
- submitted_at: string | null;
17706
- accepted_at: string | null;
17707
- declined_at: string | null;
17708
- cancelled_at: string | null;
17709
- expired_at: string | null;
17710
- /** Format: date-time */
17711
- created_at: string;
17712
- /** Format: date-time */
17713
- updated_at: string;
17714
- } & {
17715
- accepted_message: string | null;
17716
- declined_message: string | null;
17717
- cancelled_message: string | null;
17718
- } & {
17719
- archived_by_inviter: boolean | null;
17720
- archived_by_invitee: boolean | null;
17721
- archived_at_inviter: string | null;
17722
- archived_at_invitee: string | null;
17723
- } & {
17724
- inviter_deleted: boolean | null;
17725
- inviter_deleted_at: string | null;
17726
- invitee_deleted: boolean | null;
17727
- invitee_deleted_at: string | null;
17728
- } & {
17729
- proposed_start_date: string | null;
17730
- proposed_end_date: string | null;
17731
- proposed_hours_per_week: number | null;
17732
- job_id: string | null;
17733
- }) & {
17734
- inviter_user_id: string | null;
17735
- inviter_full_name: string | null;
17736
- inviter_email: string | null;
17737
- inviter_phone: string | null;
17738
- inviter_given_name: string | null;
17739
- inviter_family_name: string | null;
17740
- inviter_picture: string | null;
17741
- invitee_user_id: string | null;
17742
- invitee_full_name: string | null;
17743
- invitee_email: string | null;
17744
- invitee_phone: string | null;
17745
- invitee_given_name: string | null;
17746
- invitee_family_name: string | null;
17747
- invitee_picture: string | null;
17748
- account_id_ref: string | null;
17749
- account_owner_id: string | null;
17750
- submitted_by: string | null;
17751
- submitted_by_name: string | null;
17752
- accepted_by: string | null;
17753
- accepted_by_name: string | null;
17754
- declined_by: string | null;
17755
- declined_by_name: string | null;
17756
- cancelled_by: string | null;
17757
- cancelled_by_name: string | null;
17758
- })[];
17759
- pagination: {
17760
- page: number;
17761
- limit: number;
17762
- offset?: number;
17763
- total: number;
17764
- has_more: boolean;
16909
+ data: {
16910
+ totals: {
16911
+ all: number;
16912
+ needsAction: number;
16913
+ };
16914
+ byStatus?: {
16915
+ draft?: number;
16916
+ submitted?: number;
16917
+ accepted?: number;
16918
+ declined?: number;
16919
+ cancelled?: number;
16920
+ expired?: number;
16921
+ };
17765
16922
  };
17766
16923
  metadata: {
17767
- viewerContext: string;
16924
+ role?: string;
16925
+ userId?: string;
16926
+ cached?: boolean;
16927
+ queriedAt?: string;
17768
16928
  timestamp?: string;
17769
- filters?: unknown;
17770
16929
  };
17771
16930
  };
17772
16931
  };
@@ -17789,8 +16948,8 @@ export interface paths {
17789
16948
  cookie?: never;
17790
16949
  };
17791
16950
  /**
17792
- * Get invite statistics
17793
- * @description Get statistical overview of invites for the current user
16951
+ * Get invite statistics (deprecated)
16952
+ * @description Get statistical overview of invites for the current user. Use /sent/stats or /received/stats instead.
17794
16953
  */
17795
16954
  get: {
17796
16955
  parameters: {
@@ -17810,17 +16969,26 @@ export interface paths {
17810
16969
  };
17811
16970
  content: {
17812
16971
  'application/json': {
17813
- totals: {
17814
- all: number;
17815
- needsAction: number;
16972
+ data: {
16973
+ totals: {
16974
+ all: number;
16975
+ needsAction: number;
16976
+ };
16977
+ byStatus?: {
16978
+ draft?: number;
16979
+ submitted?: number;
16980
+ accepted?: number;
16981
+ declined?: number;
16982
+ cancelled?: number;
16983
+ expired?: number;
16984
+ };
17816
16985
  };
17817
- byStatus?: {
17818
- draft?: number;
17819
- submitted?: number;
17820
- accepted?: number;
17821
- declined?: number;
17822
- cancelled?: number;
17823
- expired?: number;
16986
+ metadata: {
16987
+ role?: string;
16988
+ userId?: string;
16989
+ cached?: boolean;
16990
+ queriedAt?: string;
16991
+ timestamp?: string;
17824
16992
  };
17825
16993
  };
17826
16994
  };
@@ -19029,120 +18197,713 @@ export interface paths {
19029
18197
  conversation_id: string | null;
19030
18198
  } & {
19031
18199
  message: string;
19032
- } & {
19033
- status: 'draft' | 'submitted' | 'accepted' | 'declined' | 'cancelled' | 'expired';
19034
- /** Format: date-time */
19035
- status_changed_at: string;
19036
- } & {
19037
- lifecycle_status: 'operational' | 'archived' | 'anonymized';
19038
- /** Format: date-time */
19039
- lifecycle_changed_at: string;
19040
- } & {
19041
- submitted_at: string | null;
19042
- accepted_at: string | null;
19043
- declined_at: string | null;
19044
- cancelled_at: string | null;
19045
- expired_at: string | null;
19046
- /** Format: date-time */
19047
- created_at: string;
19048
- /** Format: date-time */
19049
- updated_at: string;
19050
- } & {
19051
- accepted_message: string | null;
19052
- declined_message: string | null;
19053
- cancelled_message: string | null;
19054
- } & {
19055
- archived_by_inviter: boolean | null;
19056
- archived_by_invitee: boolean | null;
19057
- archived_at_inviter: string | null;
19058
- archived_at_invitee: string | null;
19059
- } & {
19060
- inviter_deleted: boolean | null;
19061
- inviter_deleted_at: string | null;
19062
- invitee_deleted: boolean | null;
19063
- invitee_deleted_at: string | null;
19064
- } & {
19065
- proposed_start_date: string | null;
19066
- proposed_end_date: string | null;
19067
- proposed_hours_per_week: number | null;
19068
- job_id: string | null;
19069
- }) & {
19070
- inviter_user_id: string | null;
19071
- inviter_full_name: string | null;
19072
- inviter_email: string | null;
19073
- inviter_phone: string | null;
19074
- inviter_given_name: string | null;
19075
- inviter_family_name: string | null;
19076
- inviter_picture: string | null;
19077
- invitee_user_id: string | null;
19078
- invitee_full_name: string | null;
19079
- invitee_email: string | null;
19080
- invitee_phone: string | null;
19081
- invitee_given_name: string | null;
19082
- invitee_family_name: string | null;
19083
- invitee_picture: string | null;
19084
- account_id_ref: string | null;
19085
- account_owner_id: string | null;
19086
- submitted_by: string | null;
19087
- submitted_by_name: string | null;
19088
- accepted_by: string | null;
19089
- accepted_by_name: string | null;
19090
- declined_by: string | null;
19091
- declined_by_name: string | null;
19092
- cancelled_by: string | null;
19093
- cancelled_by_name: string | null;
19094
- };
19095
- metadata: {
19096
- viewerContext: 'owner' | 'authenticated' | 'anonymous';
19097
- permissions: {
19098
- canView: boolean;
19099
- canEdit: boolean;
19100
- canSubmit: boolean;
19101
- canAccept: boolean;
19102
- canDecline: boolean;
19103
- canCancel: boolean;
19104
- canArchive: boolean;
19105
- canCreateContract: boolean;
19106
- };
19107
- };
18200
+ } & {
18201
+ status: 'draft' | 'submitted' | 'accepted' | 'declined' | 'cancelled' | 'expired';
18202
+ /** Format: date-time */
18203
+ status_changed_at: string;
18204
+ } & {
18205
+ lifecycle_status: 'operational' | 'archived' | 'anonymized';
18206
+ /** Format: date-time */
18207
+ lifecycle_changed_at: string;
18208
+ } & {
18209
+ submitted_at: string | null;
18210
+ accepted_at: string | null;
18211
+ declined_at: string | null;
18212
+ cancelled_at: string | null;
18213
+ expired_at: string | null;
18214
+ /** Format: date-time */
18215
+ created_at: string;
18216
+ /** Format: date-time */
18217
+ updated_at: string;
18218
+ } & {
18219
+ accepted_message: string | null;
18220
+ declined_message: string | null;
18221
+ cancelled_message: string | null;
18222
+ } & {
18223
+ archived_by_inviter: boolean | null;
18224
+ archived_by_invitee: boolean | null;
18225
+ archived_at_inviter: string | null;
18226
+ archived_at_invitee: string | null;
18227
+ } & {
18228
+ inviter_deleted: boolean | null;
18229
+ inviter_deleted_at: string | null;
18230
+ invitee_deleted: boolean | null;
18231
+ invitee_deleted_at: string | null;
18232
+ } & {
18233
+ proposed_start_date: string | null;
18234
+ proposed_end_date: string | null;
18235
+ proposed_hours_per_week: number | null;
18236
+ job_id: string | null;
18237
+ }) & {
18238
+ inviter_user_id: string | null;
18239
+ inviter_full_name: string | null;
18240
+ inviter_email: string | null;
18241
+ inviter_phone: string | null;
18242
+ inviter_given_name: string | null;
18243
+ inviter_family_name: string | null;
18244
+ inviter_picture: string | null;
18245
+ invitee_user_id: string | null;
18246
+ invitee_full_name: string | null;
18247
+ invitee_email: string | null;
18248
+ invitee_phone: string | null;
18249
+ invitee_given_name: string | null;
18250
+ invitee_family_name: string | null;
18251
+ invitee_picture: string | null;
18252
+ account_id_ref: string | null;
18253
+ account_owner_id: string | null;
18254
+ submitted_by: string | null;
18255
+ submitted_by_name: string | null;
18256
+ accepted_by: string | null;
18257
+ accepted_by_name: string | null;
18258
+ declined_by: string | null;
18259
+ declined_by_name: string | null;
18260
+ cancelled_by: string | null;
18261
+ cancelled_by_name: string | null;
18262
+ };
18263
+ metadata: {
18264
+ viewerContext: 'owner' | 'authenticated' | 'anonymous';
18265
+ permissions: {
18266
+ canView: boolean;
18267
+ canEdit: boolean;
18268
+ canSubmit: boolean;
18269
+ canAccept: boolean;
18270
+ canDecline: boolean;
18271
+ canCancel: boolean;
18272
+ canArchive: boolean;
18273
+ canCreateContract: boolean;
18274
+ };
18275
+ };
18276
+ };
18277
+ };
18278
+ };
18279
+ };
18280
+ };
18281
+ delete?: never;
18282
+ options?: never;
18283
+ head?: never;
18284
+ patch?: never;
18285
+ trace?: never;
18286
+ };
18287
+ '/api/invites/{inviteId}/archive': {
18288
+ parameters: {
18289
+ query?: never;
18290
+ header?: never;
18291
+ path?: never;
18292
+ cookie?: never;
18293
+ };
18294
+ get?: never;
18295
+ put?: never;
18296
+ /**
18297
+ * Archive or unarchive invite
18298
+ * @description Archive or unarchive an invite (dual archiving support)
18299
+ */
18300
+ post: {
18301
+ parameters: {
18302
+ query?: never;
18303
+ header?: never;
18304
+ path: {
18305
+ inviteId: string;
18306
+ };
18307
+ cookie?: never;
18308
+ };
18309
+ /** @description Request body for archiving/restoring an invite */
18310
+ requestBody: {
18311
+ content: {
18312
+ 'application/json': {
18313
+ archived: boolean;
18314
+ };
18315
+ };
18316
+ };
18317
+ responses: {
18318
+ /** @description Default Response */
18319
+ 200: {
18320
+ headers: {
18321
+ [name: string]: unknown;
18322
+ };
18323
+ content: {
18324
+ 'application/json': {
18325
+ /**
18326
+ * Invite with Details
18327
+ * @description Invite with participant, account and job details from invites_view
18328
+ */
18329
+ data: ({
18330
+ /** Format: uuid */
18331
+ id: string;
18332
+ } & {
18333
+ /** Format: uuid */
18334
+ inviter_id: string;
18335
+ invitee_id: string | null;
18336
+ email: string | null;
18337
+ } & {
18338
+ account_id: string | null;
18339
+ conversation_id: string | null;
18340
+ } & {
18341
+ message: string;
18342
+ } & {
18343
+ status: 'draft' | 'submitted' | 'accepted' | 'declined' | 'cancelled' | 'expired';
18344
+ /** Format: date-time */
18345
+ status_changed_at: string;
18346
+ } & {
18347
+ lifecycle_status: 'operational' | 'archived' | 'anonymized';
18348
+ /** Format: date-time */
18349
+ lifecycle_changed_at: string;
18350
+ } & {
18351
+ submitted_at: string | null;
18352
+ accepted_at: string | null;
18353
+ declined_at: string | null;
18354
+ cancelled_at: string | null;
18355
+ expired_at: string | null;
18356
+ /** Format: date-time */
18357
+ created_at: string;
18358
+ /** Format: date-time */
18359
+ updated_at: string;
18360
+ } & {
18361
+ accepted_message: string | null;
18362
+ declined_message: string | null;
18363
+ cancelled_message: string | null;
18364
+ } & {
18365
+ archived_by_inviter: boolean | null;
18366
+ archived_by_invitee: boolean | null;
18367
+ archived_at_inviter: string | null;
18368
+ archived_at_invitee: string | null;
18369
+ } & {
18370
+ inviter_deleted: boolean | null;
18371
+ inviter_deleted_at: string | null;
18372
+ invitee_deleted: boolean | null;
18373
+ invitee_deleted_at: string | null;
18374
+ } & {
18375
+ proposed_start_date: string | null;
18376
+ proposed_end_date: string | null;
18377
+ proposed_hours_per_week: number | null;
18378
+ job_id: string | null;
18379
+ }) & {
18380
+ inviter_user_id: string | null;
18381
+ inviter_full_name: string | null;
18382
+ inviter_email: string | null;
18383
+ inviter_phone: string | null;
18384
+ inviter_given_name: string | null;
18385
+ inviter_family_name: string | null;
18386
+ inviter_picture: string | null;
18387
+ invitee_user_id: string | null;
18388
+ invitee_full_name: string | null;
18389
+ invitee_email: string | null;
18390
+ invitee_phone: string | null;
18391
+ invitee_given_name: string | null;
18392
+ invitee_family_name: string | null;
18393
+ invitee_picture: string | null;
18394
+ account_id_ref: string | null;
18395
+ account_owner_id: string | null;
18396
+ submitted_by: string | null;
18397
+ submitted_by_name: string | null;
18398
+ accepted_by: string | null;
18399
+ accepted_by_name: string | null;
18400
+ declined_by: string | null;
18401
+ declined_by_name: string | null;
18402
+ cancelled_by: string | null;
18403
+ cancelled_by_name: string | null;
18404
+ };
18405
+ metadata: {
18406
+ viewerContext: 'owner' | 'authenticated' | 'anonymous';
18407
+ permissions: {
18408
+ canView: boolean;
18409
+ canEdit: boolean;
18410
+ canSubmit: boolean;
18411
+ canAccept: boolean;
18412
+ canDecline: boolean;
18413
+ canCancel: boolean;
18414
+ canArchive: boolean;
18415
+ canCreateContract: boolean;
18416
+ };
18417
+ };
18418
+ };
18419
+ };
18420
+ };
18421
+ };
18422
+ };
18423
+ delete?: never;
18424
+ options?: never;
18425
+ head?: never;
18426
+ patch?: never;
18427
+ trace?: never;
18428
+ };
18429
+ '/api/invites/{inviteId}/contracts': {
18430
+ parameters: {
18431
+ query?: never;
18432
+ header?: never;
18433
+ path?: never;
18434
+ cookie?: never;
18435
+ };
18436
+ get?: never;
18437
+ put?: never;
18438
+ /**
18439
+ * Create contract from invite
18440
+ * @description Create a contract from an accepted invite
18441
+ */
18442
+ post: {
18443
+ parameters: {
18444
+ query?: never;
18445
+ header?: never;
18446
+ path: {
18447
+ inviteId: string;
18448
+ };
18449
+ cookie?: never;
18450
+ };
18451
+ requestBody?: {
18452
+ content: {
18453
+ 'application/json': {
18454
+ contract_type?: string;
18455
+ service_type?: string;
18456
+ hours_per_week?: number;
18457
+ hourly_rate?: number;
18458
+ start_date?: string;
18459
+ end_date?: string;
18460
+ };
18461
+ };
18462
+ };
18463
+ responses: {
18464
+ /** @description Default Response */
18465
+ 201: {
18466
+ headers: {
18467
+ [name: string]: unknown;
18468
+ };
18469
+ content: {
18470
+ 'application/json': {
18471
+ id: string;
18472
+ employer_id: string;
18473
+ worker_id: string;
18474
+ account_id: string;
18475
+ invite_id: string;
18476
+ job_id?: string;
18477
+ contract_type_id: string;
18478
+ status: string;
18479
+ hours_per_week?: number;
18480
+ hourly_rate?: number;
18481
+ start_date?: string;
18482
+ end_date?: string;
18483
+ created_at: string;
18484
+ updated_at: string;
18485
+ };
18486
+ };
18487
+ };
18488
+ };
18489
+ };
18490
+ delete?: never;
18491
+ options?: never;
18492
+ head?: never;
18493
+ patch?: never;
18494
+ trace?: never;
18495
+ };
18496
+ '/api/invites/pending': {
18497
+ parameters: {
18498
+ query?: never;
18499
+ header?: never;
18500
+ path?: never;
18501
+ cookie?: never;
18502
+ };
18503
+ /**
18504
+ * Get recently received invites
18505
+ * @description Returns invites that were auto-claimed during login (for showing welcome modal)
18506
+ */
18507
+ get: {
18508
+ parameters: {
18509
+ query?: never;
18510
+ header?: never;
18511
+ path?: never;
18512
+ cookie?: never;
18513
+ };
18514
+ requestBody?: never;
18515
+ responses: {
18516
+ /** @description Default Response */
18517
+ 200: {
18518
+ headers: {
18519
+ [name: string]: unknown;
18520
+ };
18521
+ content: {
18522
+ 'application/json': {
18523
+ count: number;
18524
+ invites: {
18525
+ id: string;
18526
+ inviter_id: string;
18527
+ inviter_full_name?: string;
18528
+ message: string;
18529
+ status: string;
18530
+ created_at: string;
18531
+ submitted_at: string | null;
18532
+ }[];
18533
+ };
18534
+ };
18535
+ };
18536
+ /** @description Default Response */
18537
+ 400: {
18538
+ headers: {
18539
+ [name: string]: unknown;
18540
+ };
18541
+ content: {
18542
+ 'application/json': {
18543
+ error: string;
18544
+ };
18545
+ };
18546
+ };
18547
+ /** @description Default Response */
18548
+ 500: {
18549
+ headers: {
18550
+ [name: string]: unknown;
18551
+ };
18552
+ content: {
18553
+ 'application/json': {
18554
+ error: string;
18555
+ };
18556
+ };
18557
+ };
18558
+ };
18559
+ };
18560
+ put?: never;
18561
+ post?: never;
18562
+ delete?: never;
18563
+ options?: never;
18564
+ head?: never;
18565
+ patch?: never;
18566
+ trace?: never;
18567
+ };
18568
+ '/api/contracts/': {
18569
+ parameters: {
18570
+ query?: never;
18571
+ header?: never;
18572
+ path?: never;
18573
+ cookie?: never;
18574
+ };
18575
+ /**
18576
+ * List contracts
18577
+ * @description List contracts with filtering and pagination
18578
+ */
18579
+ get: {
18580
+ parameters: {
18581
+ query?: {
18582
+ limit?: number;
18583
+ offset?: number;
18584
+ sort_by?: string;
18585
+ sort_order?: 'asc' | 'desc';
18586
+ archived?: boolean;
18587
+ search?: string;
18588
+ created_after?: string;
18589
+ created_before?: string;
18590
+ updated_after?: string;
18591
+ updated_before?: string;
18592
+ viewType?: 'employer' | 'worker';
18593
+ status?: string;
18594
+ lifecycle_status?: 'operational' | 'archived' | 'anonymized';
18595
+ contract_type_id?: string;
18596
+ sort?: 'created_at' | 'updated_at' | 'start_date' | 'contract_number';
18597
+ order?: 'asc' | 'desc';
18598
+ };
18599
+ header?: never;
18600
+ path?: never;
18601
+ cookie?: never;
18602
+ };
18603
+ requestBody?: never;
18604
+ responses: {
18605
+ /** @description Default Response */
18606
+ 200: {
18607
+ headers: {
18608
+ [name: string]: unknown;
18609
+ };
18610
+ content: {
18611
+ 'application/json': {
18612
+ data: {
18613
+ /** Format: uuid */
18614
+ id: string;
18615
+ contract_number?: string | null;
18616
+ /** Format: uuid */
18617
+ employer_id: string;
18618
+ worker_id?: string | null;
18619
+ application_id?: string | null;
18620
+ inquiry_id?: string | null;
18621
+ account_id?: string | null;
18622
+ arrangement_id?: string | null;
18623
+ arrangement_title?: string | null;
18624
+ conversation_id?: string | null;
18625
+ /** Format: uuid */
18626
+ contract_type_id: string;
18627
+ contract_type?: string | null;
18628
+ contract_type_title?: string | null;
18629
+ service_type?: string | null;
18630
+ salary_type_name?: string | null;
18631
+ current_salary_amount?: number | null;
18632
+ salary_id?: string | null;
18633
+ source_invite_id?: string | null;
18634
+ is_employer_also_worker?: boolean | null;
18635
+ is_salary_manually_overridden?: boolean | null;
18636
+ requires_background_check?: boolean | null;
18637
+ requires_health_certificate?: boolean | null;
18638
+ title?: string | null;
18639
+ contract_details?: string | null;
18640
+ hours_per_week?: number | null;
18641
+ hourly_rate?: number | null;
18642
+ start_date?: string | null;
18643
+ end_date?: string | null;
18644
+ status: unknown;
18645
+ lifecycle_changed_at?: string | null;
18646
+ status_changed_at?: string | null;
18647
+ employer_email?: string | null;
18648
+ employer_first_name?: string | null;
18649
+ employer_last_name?: string | null;
18650
+ employer_phone?: string | null;
18651
+ worker_personal_number?: string | null;
18652
+ worker_bank_account?: string | null;
18653
+ worker_email?: string | null;
18654
+ worker_name?: string | null;
18655
+ worker_first_name?: string | null;
18656
+ worker_last_name?: string | null;
18657
+ worker_phone?: string | null;
18658
+ worker_phone_number?: string | null;
18659
+ worker_has_previous_employment?: boolean | null;
18660
+ worker_previous_employment_details?: string | null;
18661
+ worker_has_prior_assistant_experience?: boolean | null;
18662
+ worker_has_prior_uloba_employment?: boolean | null;
18663
+ worker_is_related_to_employer?: boolean | null;
18664
+ worker_has_uloba_as_primary_employer?: boolean | null;
18665
+ worker_requires_health_certificate?: boolean | null;
18666
+ worker_requires_tuberculosis_test?: boolean | null;
18667
+ worker_citizenship?: string | null;
18668
+ worker_substitute_for_name?: string | null;
18669
+ worker_address_street?: string | null;
18670
+ worker_address_postal_code?: string | null;
18671
+ worker_address_city?: string | null;
18672
+ worker_address_country?: string | null;
18673
+ worker_emergency_contact_name?: string | null;
18674
+ worker_emergency_contact_phone?: string | null;
18675
+ worker_emergency_contact_relation?: string | null;
18676
+ decision_owner_id?: string | null;
18677
+ decision_owner_name?: string | null;
18678
+ decision_owner_same_as_coordinator?: boolean | null;
18679
+ phase_1_submission_completed_at?: string | null;
18680
+ phase_1_submission_completed_by?: string | null;
18681
+ phase_1_submission_completed_by_name?: string | null;
18682
+ phase_2_submission_completed_at?: string | null;
18683
+ phase_2_submission_completed_by?: string | null;
18684
+ phase_2_submission_completed_by_name?: string | null;
18685
+ direct_submitted_at?: string | null;
18686
+ direct_submitted_by?: string | null;
18687
+ direct_submitted_by_name?: string | null;
18688
+ submitted_by?: string | null;
18689
+ submitted_by_name?: string | null;
18690
+ submitted_at?: string | null;
18691
+ submitted_to_uloba_at?: string | null;
18692
+ submitted_to_uloba_by?: string | null;
18693
+ submitted_to_uloba_by_name?: string | null;
18694
+ coordinator_submitted_at?: string | null;
18695
+ coordinator_submitted_by?: string | null;
18696
+ worker_submitted_at?: string | null;
18697
+ worker_submitted_by?: string | null;
18698
+ ready_for_submission_at?: string | null;
18699
+ ready_for_submission_by?: string | null;
18700
+ draft_at?: string | null;
18701
+ draft_by?: string | null;
18702
+ validation_failed_at?: string | null;
18703
+ validation_failed_by?: string | null;
18704
+ in_review_at?: string | null;
18705
+ in_review_by?: string | null;
18706
+ ready_for_signing_at?: string | null;
18707
+ ready_for_signing_by?: string | null;
18708
+ pending_signing_at?: string | null;
18709
+ pending_signing_by?: string | null;
18710
+ signed_at?: string | null;
18711
+ signed_by?: string | null;
18712
+ activated_at?: string | null;
18713
+ activated_by?: string | null;
18714
+ activated_by_name?: string | null;
18715
+ completed_at?: string | null;
18716
+ completed_by?: string | null;
18717
+ completed_by_name?: string | null;
18718
+ terminated_at?: string | null;
18719
+ terminated_by?: string | null;
18720
+ terminated_by_name?: string | null;
18721
+ terminated_message?: string | null;
18722
+ terminated_reason?: string | null;
18723
+ rejected_at?: string | null;
18724
+ rejected_by?: string | null;
18725
+ rejected_by_name?: string | null;
18726
+ rejected_message?: string | null;
18727
+ rejected_reason?: string | null;
18728
+ cancelled_at?: string | null;
18729
+ cancelled_by?: string | null;
18730
+ cancelled_by_name?: string | null;
18731
+ cancelled_message?: string | null;
18732
+ cancelled_reason?: string | null;
18733
+ temporary_position_reason?: string | null;
18734
+ archived_by_employer?: boolean | null;
18735
+ archived_at_employer?: string | null;
18736
+ archived_by_worker?: boolean | null;
18737
+ archived_at_worker?: string | null;
18738
+ validation_status?: string | null;
18739
+ validation_errors?: unknown;
18740
+ validation_report?: unknown;
18741
+ last_validated_at?: string | null;
18742
+ created_at?: string | null;
18743
+ updated_at?: string | null;
18744
+ }[];
18745
+ pagination: {
18746
+ total: number;
18747
+ limit: number;
18748
+ offset: number;
18749
+ page?: number;
18750
+ has_more?: boolean;
18751
+ };
18752
+ metadata: {
18753
+ viewerContext: string;
18754
+ timestamp: string;
18755
+ filters?: unknown;
18756
+ };
18757
+ };
18758
+ };
18759
+ };
18760
+ /** @description Default Response */
18761
+ 400: {
18762
+ headers: {
18763
+ [name: string]: unknown;
18764
+ };
18765
+ content: {
18766
+ 'application/json': {
18767
+ error: string;
18768
+ message?: string;
18769
+ code?: string;
18770
+ details?: unknown;
18771
+ /** Format: date-time */
18772
+ timestamp?: string;
18773
+ };
18774
+ };
18775
+ };
18776
+ /** @description Default Response */
18777
+ 401: {
18778
+ headers: {
18779
+ [name: string]: unknown;
18780
+ };
18781
+ content: {
18782
+ 'application/json': {
18783
+ error: string;
18784
+ message?: string;
18785
+ code?: string;
18786
+ details?: unknown;
18787
+ /** Format: date-time */
18788
+ timestamp?: string;
18789
+ };
18790
+ };
18791
+ };
18792
+ /** @description Default Response */
18793
+ 403: {
18794
+ headers: {
18795
+ [name: string]: unknown;
18796
+ };
18797
+ content: {
18798
+ 'application/json': {
18799
+ error: string;
18800
+ message?: string;
18801
+ code?: string;
18802
+ details?: unknown;
18803
+ /** Format: date-time */
18804
+ timestamp?: string;
18805
+ };
18806
+ };
18807
+ };
18808
+ /** @description Default Response */
18809
+ 404: {
18810
+ headers: {
18811
+ [name: string]: unknown;
18812
+ };
18813
+ content: {
18814
+ 'application/json': {
18815
+ error: string;
18816
+ message?: string;
18817
+ code?: string;
18818
+ details?: unknown;
18819
+ /** Format: date-time */
18820
+ timestamp?: string;
18821
+ };
18822
+ };
18823
+ };
18824
+ /** @description Default Response */
18825
+ 422: {
18826
+ headers: {
18827
+ [name: string]: unknown;
18828
+ };
18829
+ content: {
18830
+ 'application/json': {
18831
+ error: string;
18832
+ message: string;
18833
+ errors: {
18834
+ field: string;
18835
+ message: string;
18836
+ code?: string;
18837
+ value?: unknown;
18838
+ }[];
18839
+ /** Format: date-time */
18840
+ timestamp?: string;
18841
+ };
18842
+ };
18843
+ };
18844
+ /** @description Default Response */
18845
+ 500: {
18846
+ headers: {
18847
+ [name: string]: unknown;
18848
+ };
18849
+ content: {
18850
+ 'application/json': {
18851
+ error: string;
18852
+ message?: string;
18853
+ code?: string;
18854
+ details?: unknown;
18855
+ /** Format: date-time */
18856
+ timestamp?: string;
19108
18857
  };
19109
18858
  };
19110
18859
  };
19111
18860
  };
19112
18861
  };
19113
- delete?: never;
19114
- options?: never;
19115
- head?: never;
19116
- patch?: never;
19117
- trace?: never;
19118
- };
19119
- '/api/invites/{inviteId}/archive': {
19120
- parameters: {
19121
- query?: never;
19122
- header?: never;
19123
- path?: never;
19124
- cookie?: never;
19125
- };
19126
- get?: never;
19127
18862
  put?: never;
19128
18863
  /**
19129
- * Archive or unarchive invite
19130
- * @description Archive or unarchive an invite (dual archiving support)
18864
+ * Create a new contract
18865
+ * @description Create a new employment contract. Only employers and case managers can create contracts.
19131
18866
  */
19132
18867
  post: {
19133
18868
  parameters: {
19134
18869
  query?: never;
19135
18870
  header?: never;
19136
- path: {
19137
- inviteId: string;
19138
- };
18871
+ path?: never;
19139
18872
  cookie?: never;
19140
18873
  };
19141
- /** @description Request body for archiving/restoring an invite */
19142
18874
  requestBody: {
19143
18875
  content: {
19144
18876
  'application/json': {
19145
- archived: boolean;
18877
+ /** Format: uuid */
18878
+ contract_type_id: string;
18879
+ /** Format: uuid */
18880
+ employer_id: string;
18881
+ account_id?: string | null;
18882
+ worker_id?: string | null;
18883
+ application_id?: string | null;
18884
+ inquiry_id?: string | null;
18885
+ arrangement_id?: string | null;
18886
+ source_invite_id?: string | null;
18887
+ title?: string | null;
18888
+ contract_details?: string | null;
18889
+ is_employer_also_worker?: boolean | null;
18890
+ salary_id?: string | null;
18891
+ hours_per_week?: number | null;
18892
+ hourly_rate?: number | null;
18893
+ is_salary_manually_overridden?: boolean | null;
18894
+ start_date?: string | null;
18895
+ end_date?: string | null;
18896
+ temporary_position_reason?: string | null;
18897
+ worker_substitute_for_name?: string | null;
18898
+ /** Format: uuid */
18899
+ decision_maker_id?: string;
18900
+ decision_owner_name?: string | null;
18901
+ decision_owner_same_as_coordinator?: boolean | null;
18902
+ requires_background_check?: boolean | null;
18903
+ requires_health_certificate?: boolean | null;
18904
+ direct_internal?: boolean;
18905
+ direct_invite?: boolean;
18906
+ metadata?: unknown;
19146
18907
  };
19147
18908
  };
19148
18909
  };
@@ -19154,225 +18915,232 @@ export interface paths {
19154
18915
  };
19155
18916
  content: {
19156
18917
  'application/json': {
19157
- /**
19158
- * Invite with Details
19159
- * @description Invite with participant, account and job details from invites_view
19160
- */
19161
- data: ({
18918
+ data: {
19162
18919
  /** Format: uuid */
19163
18920
  id: string;
19164
- } & {
18921
+ contract_number?: string | null;
19165
18922
  /** Format: uuid */
19166
- inviter_id: string;
19167
- invitee_id: string | null;
19168
- email: string | null;
19169
- } & {
19170
- account_id: string | null;
19171
- conversation_id: string | null;
19172
- } & {
19173
- message: string;
19174
- } & {
19175
- status: 'draft' | 'submitted' | 'accepted' | 'declined' | 'cancelled' | 'expired';
19176
- /** Format: date-time */
19177
- status_changed_at: string;
19178
- } & {
19179
- lifecycle_status: 'operational' | 'archived' | 'anonymized';
19180
- /** Format: date-time */
19181
- lifecycle_changed_at: string;
19182
- } & {
19183
- submitted_at: string | null;
19184
- accepted_at: string | null;
19185
- declined_at: string | null;
19186
- cancelled_at: string | null;
19187
- expired_at: string | null;
19188
- /** Format: date-time */
19189
- created_at: string;
19190
- /** Format: date-time */
19191
- updated_at: string;
19192
- } & {
19193
- accepted_message: string | null;
19194
- declined_message: string | null;
19195
- cancelled_message: string | null;
19196
- } & {
19197
- archived_by_inviter: boolean | null;
19198
- archived_by_invitee: boolean | null;
19199
- archived_at_inviter: string | null;
19200
- archived_at_invitee: string | null;
19201
- } & {
19202
- inviter_deleted: boolean | null;
19203
- inviter_deleted_at: string | null;
19204
- invitee_deleted: boolean | null;
19205
- invitee_deleted_at: string | null;
19206
- } & {
19207
- proposed_start_date: string | null;
19208
- proposed_end_date: string | null;
19209
- proposed_hours_per_week: number | null;
19210
- job_id: string | null;
19211
- }) & {
19212
- inviter_user_id: string | null;
19213
- inviter_full_name: string | null;
19214
- inviter_email: string | null;
19215
- inviter_phone: string | null;
19216
- inviter_given_name: string | null;
19217
- inviter_family_name: string | null;
19218
- inviter_picture: string | null;
19219
- invitee_user_id: string | null;
19220
- invitee_full_name: string | null;
19221
- invitee_email: string | null;
19222
- invitee_phone: string | null;
19223
- invitee_given_name: string | null;
19224
- invitee_family_name: string | null;
19225
- invitee_picture: string | null;
19226
- account_id_ref: string | null;
19227
- account_owner_id: string | null;
19228
- submitted_by: string | null;
19229
- submitted_by_name: string | null;
19230
- accepted_by: string | null;
19231
- accepted_by_name: string | null;
19232
- declined_by: string | null;
19233
- declined_by_name: string | null;
19234
- cancelled_by: string | null;
19235
- cancelled_by_name: string | null;
18923
+ employer_id: string;
18924
+ worker_id?: string | null;
18925
+ application_id?: string | null;
18926
+ inquiry_id?: string | null;
18927
+ account_id?: string | null;
18928
+ arrangement_id?: string | null;
18929
+ arrangement_title?: string | null;
18930
+ conversation_id?: string | null;
18931
+ /** Format: uuid */
18932
+ contract_type_id: string;
18933
+ contract_type?: string | null;
18934
+ contract_type_title?: string | null;
18935
+ service_type?: string | null;
18936
+ salary_type_name?: string | null;
18937
+ current_salary_amount?: number | null;
18938
+ salary_id?: string | null;
18939
+ source_invite_id?: string | null;
18940
+ is_employer_also_worker?: boolean | null;
18941
+ is_salary_manually_overridden?: boolean | null;
18942
+ requires_background_check?: boolean | null;
18943
+ requires_health_certificate?: boolean | null;
18944
+ title?: string | null;
18945
+ contract_details?: string | null;
18946
+ hours_per_week?: number | null;
18947
+ hourly_rate?: number | null;
18948
+ start_date?: string | null;
18949
+ end_date?: string | null;
18950
+ status: unknown;
18951
+ lifecycle_changed_at?: string | null;
18952
+ status_changed_at?: string | null;
18953
+ employer_email?: string | null;
18954
+ employer_first_name?: string | null;
18955
+ employer_last_name?: string | null;
18956
+ employer_phone?: string | null;
18957
+ worker_personal_number?: string | null;
18958
+ worker_bank_account?: string | null;
18959
+ worker_email?: string | null;
18960
+ worker_name?: string | null;
18961
+ worker_first_name?: string | null;
18962
+ worker_last_name?: string | null;
18963
+ worker_phone?: string | null;
18964
+ worker_phone_number?: string | null;
18965
+ worker_has_previous_employment?: boolean | null;
18966
+ worker_previous_employment_details?: string | null;
18967
+ worker_has_prior_assistant_experience?: boolean | null;
18968
+ worker_has_prior_uloba_employment?: boolean | null;
18969
+ worker_is_related_to_employer?: boolean | null;
18970
+ worker_has_uloba_as_primary_employer?: boolean | null;
18971
+ worker_requires_health_certificate?: boolean | null;
18972
+ worker_requires_tuberculosis_test?: boolean | null;
18973
+ worker_citizenship?: string | null;
18974
+ worker_substitute_for_name?: string | null;
18975
+ worker_address_street?: string | null;
18976
+ worker_address_postal_code?: string | null;
18977
+ worker_address_city?: string | null;
18978
+ worker_address_country?: string | null;
18979
+ worker_emergency_contact_name?: string | null;
18980
+ worker_emergency_contact_phone?: string | null;
18981
+ worker_emergency_contact_relation?: string | null;
18982
+ decision_owner_id?: string | null;
18983
+ decision_owner_name?: string | null;
18984
+ decision_owner_same_as_coordinator?: boolean | null;
18985
+ phase_1_submission_completed_at?: string | null;
18986
+ phase_1_submission_completed_by?: string | null;
18987
+ phase_1_submission_completed_by_name?: string | null;
18988
+ phase_2_submission_completed_at?: string | null;
18989
+ phase_2_submission_completed_by?: string | null;
18990
+ phase_2_submission_completed_by_name?: string | null;
18991
+ direct_submitted_at?: string | null;
18992
+ direct_submitted_by?: string | null;
18993
+ direct_submitted_by_name?: string | null;
18994
+ submitted_by?: string | null;
18995
+ submitted_by_name?: string | null;
18996
+ submitted_at?: string | null;
18997
+ submitted_to_uloba_at?: string | null;
18998
+ submitted_to_uloba_by?: string | null;
18999
+ submitted_to_uloba_by_name?: string | null;
19000
+ coordinator_submitted_at?: string | null;
19001
+ coordinator_submitted_by?: string | null;
19002
+ worker_submitted_at?: string | null;
19003
+ worker_submitted_by?: string | null;
19004
+ ready_for_submission_at?: string | null;
19005
+ ready_for_submission_by?: string | null;
19006
+ draft_at?: string | null;
19007
+ draft_by?: string | null;
19008
+ validation_failed_at?: string | null;
19009
+ validation_failed_by?: string | null;
19010
+ in_review_at?: string | null;
19011
+ in_review_by?: string | null;
19012
+ ready_for_signing_at?: string | null;
19013
+ ready_for_signing_by?: string | null;
19014
+ pending_signing_at?: string | null;
19015
+ pending_signing_by?: string | null;
19016
+ signed_at?: string | null;
19017
+ signed_by?: string | null;
19018
+ activated_at?: string | null;
19019
+ activated_by?: string | null;
19020
+ activated_by_name?: string | null;
19021
+ completed_at?: string | null;
19022
+ completed_by?: string | null;
19023
+ completed_by_name?: string | null;
19024
+ terminated_at?: string | null;
19025
+ terminated_by?: string | null;
19026
+ terminated_by_name?: string | null;
19027
+ terminated_message?: string | null;
19028
+ terminated_reason?: string | null;
19029
+ rejected_at?: string | null;
19030
+ rejected_by?: string | null;
19031
+ rejected_by_name?: string | null;
19032
+ rejected_message?: string | null;
19033
+ rejected_reason?: string | null;
19034
+ cancelled_at?: string | null;
19035
+ cancelled_by?: string | null;
19036
+ cancelled_by_name?: string | null;
19037
+ cancelled_message?: string | null;
19038
+ cancelled_reason?: string | null;
19039
+ temporary_position_reason?: string | null;
19040
+ archived_by_employer?: boolean | null;
19041
+ archived_at_employer?: string | null;
19042
+ archived_by_worker?: boolean | null;
19043
+ archived_at_worker?: string | null;
19044
+ validation_status?: string | null;
19045
+ validation_errors?: unknown;
19046
+ validation_report?: unknown;
19047
+ last_validated_at?: string | null;
19048
+ created_at?: string | null;
19049
+ updated_at?: string | null;
19236
19050
  };
19237
19051
  metadata: {
19238
- viewerContext: 'owner' | 'authenticated' | 'anonymous';
19052
+ /** @description Viewer relationship to the resource */
19053
+ viewerContext: 'anonymous' | 'authenticated' | 'owner' | 'coordinator' | 'admin' | 'employer' | 'worker';
19239
19054
  permissions: {
19240
19055
  canView: boolean;
19241
19056
  canEdit: boolean;
19242
- canSubmit: boolean;
19243
- canAccept: boolean;
19244
- canDecline: boolean;
19245
- canCancel: boolean;
19246
- canArchive: boolean;
19247
- canCreateContract: boolean;
19057
+ canDelete: boolean;
19248
19058
  };
19249
19059
  };
19250
19060
  };
19251
19061
  };
19252
19062
  };
19253
- };
19254
- };
19255
- delete?: never;
19256
- options?: never;
19257
- head?: never;
19258
- patch?: never;
19259
- trace?: never;
19260
- };
19261
- '/api/invites/{inviteId}/contracts': {
19262
- parameters: {
19263
- query?: never;
19264
- header?: never;
19265
- path?: never;
19266
- cookie?: never;
19267
- };
19268
- get?: never;
19269
- put?: never;
19270
- /**
19271
- * Create contract from invite
19272
- * @description Create a contract from an accepted invite
19273
- */
19274
- post: {
19275
- parameters: {
19276
- query?: never;
19277
- header?: never;
19278
- path: {
19279
- inviteId: string;
19063
+ /** @description Default Response */
19064
+ 400: {
19065
+ headers: {
19066
+ [name: string]: unknown;
19067
+ };
19068
+ content: {
19069
+ 'application/json': {
19070
+ error: string;
19071
+ message?: string;
19072
+ code?: string;
19073
+ details?: unknown;
19074
+ /** Format: date-time */
19075
+ timestamp?: string;
19076
+ };
19077
+ };
19280
19078
  };
19281
- cookie?: never;
19282
- };
19283
- requestBody?: {
19284
- content: {
19285
- 'application/json': {
19286
- contract_type?: string;
19287
- service_type?: string;
19288
- hours_per_week?: number;
19289
- hourly_rate?: number;
19290
- start_date?: string;
19291
- end_date?: string;
19079
+ /** @description Default Response */
19080
+ 401: {
19081
+ headers: {
19082
+ [name: string]: unknown;
19083
+ };
19084
+ content: {
19085
+ 'application/json': {
19086
+ error: string;
19087
+ message?: string;
19088
+ code?: string;
19089
+ details?: unknown;
19090
+ /** Format: date-time */
19091
+ timestamp?: string;
19092
+ };
19292
19093
  };
19293
19094
  };
19294
- };
19295
- responses: {
19296
19095
  /** @description Default Response */
19297
- 201: {
19096
+ 403: {
19298
19097
  headers: {
19299
19098
  [name: string]: unknown;
19300
19099
  };
19301
19100
  content: {
19302
19101
  'application/json': {
19303
- id: string;
19304
- employer_id: string;
19305
- worker_id: string;
19306
- account_id: string;
19307
- invite_id: string;
19308
- job_id?: string;
19309
- contract_type_id: string;
19310
- status: string;
19311
- hours_per_week?: number;
19312
- hourly_rate?: number;
19313
- start_date?: string;
19314
- end_date?: string;
19315
- created_at: string;
19316
- updated_at: string;
19102
+ error: string;
19103
+ message?: string;
19104
+ code?: string;
19105
+ details?: unknown;
19106
+ /** Format: date-time */
19107
+ timestamp?: string;
19317
19108
  };
19318
19109
  };
19319
19110
  };
19320
- };
19321
- };
19322
- delete?: never;
19323
- options?: never;
19324
- head?: never;
19325
- patch?: never;
19326
- trace?: never;
19327
- };
19328
- '/api/invites/pending': {
19329
- parameters: {
19330
- query?: never;
19331
- header?: never;
19332
- path?: never;
19333
- cookie?: never;
19334
- };
19335
- /**
19336
- * Get recently received invites
19337
- * @description Returns invites that were auto-claimed during login (for showing welcome modal)
19338
- */
19339
- get: {
19340
- parameters: {
19341
- query?: never;
19342
- header?: never;
19343
- path?: never;
19344
- cookie?: never;
19345
- };
19346
- requestBody?: never;
19347
- responses: {
19348
19111
  /** @description Default Response */
19349
- 200: {
19112
+ 404: {
19350
19113
  headers: {
19351
19114
  [name: string]: unknown;
19352
19115
  };
19353
19116
  content: {
19354
19117
  'application/json': {
19355
- count: number;
19356
- invites: {
19357
- id: string;
19358
- inviter_id: string;
19359
- inviter_full_name?: string;
19360
- message: string;
19361
- status: string;
19362
- created_at: string;
19363
- submitted_at: string | null;
19364
- }[];
19118
+ error: string;
19119
+ message?: string;
19120
+ code?: string;
19121
+ details?: unknown;
19122
+ /** Format: date-time */
19123
+ timestamp?: string;
19365
19124
  };
19366
19125
  };
19367
19126
  };
19368
19127
  /** @description Default Response */
19369
- 400: {
19128
+ 422: {
19370
19129
  headers: {
19371
19130
  [name: string]: unknown;
19372
19131
  };
19373
19132
  content: {
19374
19133
  'application/json': {
19375
19134
  error: string;
19135
+ message: string;
19136
+ errors: {
19137
+ field: string;
19138
+ message: string;
19139
+ code?: string;
19140
+ value?: unknown;
19141
+ }[];
19142
+ /** Format: date-time */
19143
+ timestamp?: string;
19376
19144
  };
19377
19145
  };
19378
19146
  };
@@ -19384,55 +19152,47 @@ export interface paths {
19384
19152
  content: {
19385
19153
  'application/json': {
19386
19154
  error: string;
19155
+ message?: string;
19156
+ code?: string;
19157
+ details?: unknown;
19158
+ /** Format: date-time */
19159
+ timestamp?: string;
19387
19160
  };
19388
19161
  };
19389
19162
  };
19390
19163
  };
19391
19164
  };
19392
- put?: never;
19393
- post?: never;
19394
19165
  delete?: never;
19395
19166
  options?: never;
19396
19167
  head?: never;
19397
19168
  patch?: never;
19398
19169
  trace?: never;
19399
19170
  };
19400
- '/api/contracts/': {
19171
+ '/api/contracts/create-direct': {
19401
19172
  parameters: {
19402
19173
  query?: never;
19403
19174
  header?: never;
19404
19175
  path?: never;
19405
19176
  cookie?: never;
19406
19177
  };
19178
+ get?: never;
19179
+ put?: never;
19407
19180
  /**
19408
- * List contracts
19409
- * @description List contracts with filtering and pagination
19181
+ * Create a new direct contract
19182
+ * @description Create a new direct employment contract where the employer is also the worker. Empty body - all defaults are set from authenticated user.
19410
19183
  */
19411
- get: {
19184
+ post: {
19412
19185
  parameters: {
19413
- query?: {
19414
- limit?: number;
19415
- offset?: number;
19416
- sort_by?: string;
19417
- sort_order?: 'asc' | 'desc';
19418
- archived?: boolean;
19419
- search?: string;
19420
- created_after?: string;
19421
- created_before?: string;
19422
- updated_after?: string;
19423
- updated_before?: string;
19424
- viewType?: 'employer' | 'worker';
19425
- status?: string;
19426
- lifecycle_status?: 'operational' | 'archived' | 'anonymized';
19427
- contract_type_id?: string;
19428
- sort?: 'created_at' | 'updated_at' | 'start_date' | 'contract_number';
19429
- order?: 'asc' | 'desc';
19430
- };
19186
+ query?: never;
19431
19187
  header?: never;
19432
19188
  path?: never;
19433
19189
  cookie?: never;
19434
19190
  };
19435
- requestBody?: never;
19191
+ requestBody?: {
19192
+ content: {
19193
+ 'application/json': Record<string, never>;
19194
+ };
19195
+ };
19436
19196
  responses: {
19437
19197
  /** @description Default Response */
19438
19198
  200: {
@@ -19573,18 +19333,15 @@ export interface paths {
19573
19333
  last_validated_at?: string | null;
19574
19334
  created_at?: string | null;
19575
19335
  updated_at?: string | null;
19576
- }[];
19577
- pagination: {
19578
- total: number;
19579
- limit: number;
19580
- offset: number;
19581
- page?: number;
19582
- has_more?: boolean;
19583
19336
  };
19584
19337
  metadata: {
19585
- viewerContext: string;
19586
- timestamp: string;
19587
- filters?: unknown;
19338
+ /** @description Viewer relationship to the resource */
19339
+ viewerContext: 'anonymous' | 'authenticated' | 'owner' | 'coordinator' | 'admin' | 'employer' | 'worker';
19340
+ permissions: {
19341
+ canView: boolean;
19342
+ canEdit: boolean;
19343
+ canDelete: boolean;
19344
+ };
19588
19345
  };
19589
19346
  };
19590
19347
  };
@@ -19691,54 +19448,33 @@ export interface paths {
19691
19448
  };
19692
19449
  };
19693
19450
  };
19694
- put?: never;
19451
+ delete?: never;
19452
+ options?: never;
19453
+ head?: never;
19454
+ patch?: never;
19455
+ trace?: never;
19456
+ };
19457
+ '/api/contracts/{id}': {
19458
+ parameters: {
19459
+ query?: never;
19460
+ header?: never;
19461
+ path?: never;
19462
+ cookie?: never;
19463
+ };
19695
19464
  /**
19696
- * Create a new contract
19697
- * @description Create a new employment contract. Only employers and case managers can create contracts.
19465
+ * Get contract by ID
19466
+ * @description Retrieve a specific contract with related data
19698
19467
  */
19699
- post: {
19468
+ get: {
19700
19469
  parameters: {
19701
19470
  query?: never;
19702
19471
  header?: never;
19703
- path?: never;
19704
- cookie?: never;
19705
- };
19706
- requestBody: {
19707
- content: {
19708
- 'application/json': {
19709
- /** Format: uuid */
19710
- contract_type_id: string;
19711
- /** Format: uuid */
19712
- employer_id: string;
19713
- account_id?: string | null;
19714
- worker_id?: string | null;
19715
- application_id?: string | null;
19716
- inquiry_id?: string | null;
19717
- arrangement_id?: string | null;
19718
- source_invite_id?: string | null;
19719
- title?: string | null;
19720
- contract_details?: string | null;
19721
- is_employer_also_worker?: boolean | null;
19722
- salary_id?: string | null;
19723
- hours_per_week?: number | null;
19724
- hourly_rate?: number | null;
19725
- is_salary_manually_overridden?: boolean | null;
19726
- start_date?: string | null;
19727
- end_date?: string | null;
19728
- temporary_position_reason?: string | null;
19729
- worker_substitute_for_name?: string | null;
19730
- /** Format: uuid */
19731
- decision_maker_id?: string;
19732
- decision_owner_name?: string | null;
19733
- decision_owner_same_as_coordinator?: boolean | null;
19734
- requires_background_check?: boolean | null;
19735
- requires_health_certificate?: boolean | null;
19736
- direct_internal?: boolean;
19737
- direct_invite?: boolean;
19738
- metadata?: unknown;
19739
- };
19472
+ path: {
19473
+ id: string;
19740
19474
  };
19475
+ cookie?: never;
19741
19476
  };
19477
+ requestBody?: never;
19742
19478
  responses: {
19743
19479
  /** @description Default Response */
19744
19480
  200: {
@@ -19892,137 +19628,63 @@ export interface paths {
19892
19628
  };
19893
19629
  };
19894
19630
  };
19895
- /** @description Default Response */
19896
- 400: {
19897
- headers: {
19898
- [name: string]: unknown;
19899
- };
19900
- content: {
19901
- 'application/json': {
19902
- error: string;
19903
- message?: string;
19904
- code?: string;
19905
- details?: unknown;
19906
- /** Format: date-time */
19907
- timestamp?: string;
19908
- };
19909
- };
19910
- };
19911
- /** @description Default Response */
19912
- 401: {
19913
- headers: {
19914
- [name: string]: unknown;
19915
- };
19916
- content: {
19917
- 'application/json': {
19918
- error: string;
19919
- message?: string;
19920
- code?: string;
19921
- details?: unknown;
19922
- /** Format: date-time */
19923
- timestamp?: string;
19924
- };
19925
- };
19926
- };
19927
- /** @description Default Response */
19928
- 403: {
19929
- headers: {
19930
- [name: string]: unknown;
19931
- };
19932
- content: {
19933
- 'application/json': {
19934
- error: string;
19935
- message?: string;
19936
- code?: string;
19937
- details?: unknown;
19938
- /** Format: date-time */
19939
- timestamp?: string;
19940
- };
19941
- };
19942
- };
19943
- /** @description Default Response */
19944
- 404: {
19945
- headers: {
19946
- [name: string]: unknown;
19947
- };
19948
- content: {
19949
- 'application/json': {
19950
- error: string;
19951
- message?: string;
19952
- code?: string;
19953
- details?: unknown;
19954
- /** Format: date-time */
19955
- timestamp?: string;
19956
- };
19957
- };
19958
- };
19959
- /** @description Default Response */
19960
- 422: {
19961
- headers: {
19962
- [name: string]: unknown;
19963
- };
19964
- content: {
19965
- 'application/json': {
19966
- error: string;
19967
- message: string;
19968
- errors: {
19969
- field: string;
19970
- message: string;
19971
- code?: string;
19972
- value?: unknown;
19973
- }[];
19974
- /** Format: date-time */
19975
- timestamp?: string;
19976
- };
19977
- };
19978
- };
19979
- /** @description Default Response */
19980
- 500: {
19981
- headers: {
19982
- [name: string]: unknown;
19983
- };
19984
- content: {
19985
- 'application/json': {
19986
- error: string;
19987
- message?: string;
19988
- code?: string;
19989
- details?: unknown;
19990
- /** Format: date-time */
19991
- timestamp?: string;
19992
- };
19993
- };
19994
- };
19995
19631
  };
19996
19632
  };
19633
+ put?: never;
19634
+ post?: never;
19997
19635
  delete?: never;
19998
19636
  options?: never;
19999
19637
  head?: never;
20000
- patch?: never;
20001
- trace?: never;
20002
- };
20003
- '/api/contracts/create-direct': {
20004
- parameters: {
20005
- query?: never;
20006
- header?: never;
20007
- path?: never;
20008
- cookie?: never;
20009
- };
20010
- get?: never;
20011
- put?: never;
20012
19638
  /**
20013
- * Create a new direct contract
20014
- * @description Create a new direct employment contract where the employer is also the worker. Empty body - all defaults are set from authenticated user.
19639
+ * Update contract
19640
+ * @description Update contract details. Only employers and case managers can update.
20015
19641
  */
20016
- post: {
19642
+ patch: {
20017
19643
  parameters: {
20018
19644
  query?: never;
20019
19645
  header?: never;
20020
- path?: never;
19646
+ path: {
19647
+ id: string;
19648
+ };
20021
19649
  cookie?: never;
20022
19650
  };
20023
19651
  requestBody?: {
20024
19652
  content: {
20025
- 'application/json': Record<string, never>;
19653
+ 'application/json': {
19654
+ title?: string | null;
19655
+ contract_details?: string | null;
19656
+ contract_type_id?: string | null;
19657
+ salary_id?: string | null;
19658
+ hours_per_week?: number | null;
19659
+ hourly_rate?: number | null;
19660
+ is_salary_manually_overridden?: boolean | null;
19661
+ start_date?: string | null;
19662
+ end_date?: string | null;
19663
+ temporary_position_reason?: string | null;
19664
+ worker_substitute_for_name?: string | null;
19665
+ worker_personal_number?: string | null;
19666
+ worker_bank_account?: string | null;
19667
+ worker_has_previous_employment?: boolean | null;
19668
+ worker_previous_employment_details?: string | null;
19669
+ worker_has_prior_assistant_experience?: boolean | null;
19670
+ worker_has_prior_uloba_employment?: boolean | null;
19671
+ worker_is_related_to_employer?: boolean | null;
19672
+ worker_has_uloba_as_primary_employer?: boolean | null;
19673
+ worker_requires_tuberculosis_test?: boolean | null;
19674
+ worker_citizenship?: string | null;
19675
+ worker_address_street?: string | null;
19676
+ worker_address_postal_code?: string | null;
19677
+ worker_address_city?: string | null;
19678
+ worker_address_country?: string | null;
19679
+ worker_emergency_contact_name?: string | null;
19680
+ worker_emergency_contact_phone?: string | null;
19681
+ worker_emergency_contact_relation?: string | null;
19682
+ decision_owner_name?: string | null;
19683
+ decision_owner_same_as_coordinator?: boolean | null;
19684
+ requires_background_check?: boolean | null;
19685
+ requires_health_certificate?: boolean | null;
19686
+ coordinator_message?: string | null;
19687
+ };
20026
19688
  };
20027
19689
  };
20028
19690
  responses: {
@@ -20280,13 +19942,9 @@ export interface paths {
20280
19942
  };
20281
19943
  };
20282
19944
  };
20283
- delete?: never;
20284
- options?: never;
20285
- head?: never;
20286
- patch?: never;
20287
19945
  trace?: never;
20288
19946
  };
20289
- '/api/contracts/{id}': {
19947
+ '/api/contracts/{id}/view': {
20290
19948
  parameters: {
20291
19949
  query?: never;
20292
19950
  header?: never;
@@ -20294,8 +19952,8 @@ export interface paths {
20294
19952
  cookie?: never;
20295
19953
  };
20296
19954
  /**
20297
- * Get contract by ID
20298
- * @description Retrieve a specific contract with related data
19955
+ * Get contract view
19956
+ * @description Get contract data formatted for display
20299
19957
  */
20300
19958
  get: {
20301
19959
  parameters: {
@@ -20467,58 +20125,45 @@ export interface paths {
20467
20125
  delete?: never;
20468
20126
  options?: never;
20469
20127
  head?: never;
20128
+ patch?: never;
20129
+ trace?: never;
20130
+ };
20131
+ '/api/contracts/employer': {
20132
+ parameters: {
20133
+ query?: never;
20134
+ header?: never;
20135
+ path?: never;
20136
+ cookie?: never;
20137
+ };
20470
20138
  /**
20471
- * Update contract
20472
- * @description Update contract details. Only employers and case managers can update.
20139
+ * List contracts for employers
20140
+ * @description List contracts where user is the employer (coordinator/team leader)
20473
20141
  */
20474
- patch: {
20142
+ get: {
20475
20143
  parameters: {
20476
- query?: never;
20477
- header?: never;
20478
- path: {
20479
- id: string;
20144
+ query?: {
20145
+ limit?: number;
20146
+ offset?: number;
20147
+ sort_by?: string;
20148
+ sort_order?: 'asc' | 'desc';
20149
+ archived?: boolean;
20150
+ search?: string;
20151
+ created_after?: string;
20152
+ created_before?: string;
20153
+ updated_after?: string;
20154
+ updated_before?: string;
20155
+ viewType?: 'employer' | 'worker';
20156
+ status?: string;
20157
+ lifecycle_status?: 'operational' | 'archived' | 'anonymized';
20158
+ contract_type_id?: string;
20159
+ sort?: 'created_at' | 'updated_at' | 'start_date' | 'contract_number';
20160
+ order?: 'asc' | 'desc';
20480
20161
  };
20162
+ header?: never;
20163
+ path?: never;
20481
20164
  cookie?: never;
20482
20165
  };
20483
- requestBody?: {
20484
- content: {
20485
- 'application/json': {
20486
- title?: string | null;
20487
- contract_details?: string | null;
20488
- contract_type_id?: string | null;
20489
- salary_id?: string | null;
20490
- hours_per_week?: number | null;
20491
- hourly_rate?: number | null;
20492
- is_salary_manually_overridden?: boolean | null;
20493
- start_date?: string | null;
20494
- end_date?: string | null;
20495
- temporary_position_reason?: string | null;
20496
- worker_substitute_for_name?: string | null;
20497
- worker_personal_number?: string | null;
20498
- worker_bank_account?: string | null;
20499
- worker_has_previous_employment?: boolean | null;
20500
- worker_previous_employment_details?: string | null;
20501
- worker_has_prior_assistant_experience?: boolean | null;
20502
- worker_has_prior_uloba_employment?: boolean | null;
20503
- worker_is_related_to_employer?: boolean | null;
20504
- worker_has_uloba_as_primary_employer?: boolean | null;
20505
- worker_requires_tuberculosis_test?: boolean | null;
20506
- worker_citizenship?: string | null;
20507
- worker_address_street?: string | null;
20508
- worker_address_postal_code?: string | null;
20509
- worker_address_city?: string | null;
20510
- worker_address_country?: string | null;
20511
- worker_emergency_contact_name?: string | null;
20512
- worker_emergency_contact_phone?: string | null;
20513
- worker_emergency_contact_relation?: string | null;
20514
- decision_owner_name?: string | null;
20515
- decision_owner_same_as_coordinator?: boolean | null;
20516
- requires_background_check?: boolean | null;
20517
- requires_health_certificate?: boolean | null;
20518
- coordinator_message?: string | null;
20519
- };
20520
- };
20521
- };
20166
+ requestBody?: never;
20522
20167
  responses: {
20523
20168
  /** @description Default Response */
20524
20169
  200: {
@@ -20659,15 +20304,18 @@ export interface paths {
20659
20304
  last_validated_at?: string | null;
20660
20305
  created_at?: string | null;
20661
20306
  updated_at?: string | null;
20307
+ }[];
20308
+ pagination: {
20309
+ total: number;
20310
+ limit: number;
20311
+ offset: number;
20312
+ page?: number;
20313
+ has_more?: boolean;
20662
20314
  };
20663
20315
  metadata: {
20664
- /** @description Viewer relationship to the resource */
20665
- viewerContext: 'anonymous' | 'authenticated' | 'owner' | 'coordinator' | 'admin' | 'employer' | 'worker';
20666
- permissions: {
20667
- canView: boolean;
20668
- canEdit: boolean;
20669
- canDelete: boolean;
20670
- };
20316
+ viewerContext: string;
20317
+ timestamp: string;
20318
+ filters?: unknown;
20671
20319
  };
20672
20320
  };
20673
20321
  };
@@ -20774,9 +20422,15 @@ export interface paths {
20774
20422
  };
20775
20423
  };
20776
20424
  };
20425
+ put?: never;
20426
+ post?: never;
20427
+ delete?: never;
20428
+ options?: never;
20429
+ head?: never;
20430
+ patch?: never;
20777
20431
  trace?: never;
20778
20432
  };
20779
- '/api/contracts/{id}/view': {
20433
+ '/api/contracts/teamlead': {
20780
20434
  parameters: {
20781
20435
  query?: never;
20782
20436
  header?: never;
@@ -20784,16 +20438,31 @@ export interface paths {
20784
20438
  cookie?: never;
20785
20439
  };
20786
20440
  /**
20787
- * Get contract view
20788
- * @description Get contract data formatted for public display with optional authentication
20441
+ * [DEPRECATED] List contracts for team leaders
20442
+ * @description DEPRECATED: Use /contracts/employer instead. Redirects to /contracts/employer
20789
20443
  */
20790
20444
  get: {
20791
20445
  parameters: {
20792
- query?: never;
20793
- header?: never;
20794
- path: {
20795
- id: string;
20446
+ query?: {
20447
+ limit?: number;
20448
+ offset?: number;
20449
+ sort_by?: string;
20450
+ sort_order?: 'asc' | 'desc';
20451
+ archived?: boolean;
20452
+ search?: string;
20453
+ created_after?: string;
20454
+ created_before?: string;
20455
+ updated_after?: string;
20456
+ updated_before?: string;
20457
+ viewType?: 'employer' | 'worker';
20458
+ status?: string;
20459
+ lifecycle_status?: 'operational' | 'archived' | 'anonymized';
20460
+ contract_type_id?: string;
20461
+ sort?: 'created_at' | 'updated_at' | 'start_date' | 'contract_number';
20462
+ order?: 'asc' | 'desc';
20796
20463
  };
20464
+ header?: never;
20465
+ path?: never;
20797
20466
  cookie?: never;
20798
20467
  };
20799
20468
  requestBody?: never;
@@ -20937,19 +20606,122 @@ export interface paths {
20937
20606
  last_validated_at?: string | null;
20938
20607
  created_at?: string | null;
20939
20608
  updated_at?: string | null;
20609
+ }[];
20610
+ pagination: {
20611
+ total: number;
20612
+ limit: number;
20613
+ offset: number;
20614
+ page?: number;
20615
+ has_more?: boolean;
20940
20616
  };
20941
20617
  metadata: {
20942
- /** @description Viewer relationship to the resource */
20943
- viewerContext: 'anonymous' | 'authenticated' | 'owner' | 'coordinator' | 'admin' | 'employer' | 'worker';
20944
- permissions: {
20945
- canView: boolean;
20946
- canEdit: boolean;
20947
- canDelete: boolean;
20948
- };
20618
+ viewerContext: string;
20619
+ timestamp: string;
20620
+ filters?: unknown;
20949
20621
  };
20950
20622
  };
20951
20623
  };
20952
20624
  };
20625
+ /** @description Default Response */
20626
+ 400: {
20627
+ headers: {
20628
+ [name: string]: unknown;
20629
+ };
20630
+ content: {
20631
+ 'application/json': {
20632
+ error: string;
20633
+ message?: string;
20634
+ code?: string;
20635
+ details?: unknown;
20636
+ /** Format: date-time */
20637
+ timestamp?: string;
20638
+ };
20639
+ };
20640
+ };
20641
+ /** @description Default Response */
20642
+ 401: {
20643
+ headers: {
20644
+ [name: string]: unknown;
20645
+ };
20646
+ content: {
20647
+ 'application/json': {
20648
+ error: string;
20649
+ message?: string;
20650
+ code?: string;
20651
+ details?: unknown;
20652
+ /** Format: date-time */
20653
+ timestamp?: string;
20654
+ };
20655
+ };
20656
+ };
20657
+ /** @description Default Response */
20658
+ 403: {
20659
+ headers: {
20660
+ [name: string]: unknown;
20661
+ };
20662
+ content: {
20663
+ 'application/json': {
20664
+ error: string;
20665
+ message?: string;
20666
+ code?: string;
20667
+ details?: unknown;
20668
+ /** Format: date-time */
20669
+ timestamp?: string;
20670
+ };
20671
+ };
20672
+ };
20673
+ /** @description Default Response */
20674
+ 404: {
20675
+ headers: {
20676
+ [name: string]: unknown;
20677
+ };
20678
+ content: {
20679
+ 'application/json': {
20680
+ error: string;
20681
+ message?: string;
20682
+ code?: string;
20683
+ details?: unknown;
20684
+ /** Format: date-time */
20685
+ timestamp?: string;
20686
+ };
20687
+ };
20688
+ };
20689
+ /** @description Default Response */
20690
+ 422: {
20691
+ headers: {
20692
+ [name: string]: unknown;
20693
+ };
20694
+ content: {
20695
+ 'application/json': {
20696
+ error: string;
20697
+ message: string;
20698
+ errors: {
20699
+ field: string;
20700
+ message: string;
20701
+ code?: string;
20702
+ value?: unknown;
20703
+ }[];
20704
+ /** Format: date-time */
20705
+ timestamp?: string;
20706
+ };
20707
+ };
20708
+ };
20709
+ /** @description Default Response */
20710
+ 500: {
20711
+ headers: {
20712
+ [name: string]: unknown;
20713
+ };
20714
+ content: {
20715
+ 'application/json': {
20716
+ error: string;
20717
+ message?: string;
20718
+ code?: string;
20719
+ details?: unknown;
20720
+ /** Format: date-time */
20721
+ timestamp?: string;
20722
+ };
20723
+ };
20724
+ };
20953
20725
  };
20954
20726
  };
20955
20727
  put?: never;
@@ -20960,7 +20732,7 @@ export interface paths {
20960
20732
  patch?: never;
20961
20733
  trace?: never;
20962
20734
  };
20963
- '/api/contracts/teamlead': {
20735
+ '/api/contracts/worker': {
20964
20736
  parameters: {
20965
20737
  query?: never;
20966
20738
  header?: never;
@@ -20968,8 +20740,8 @@ export interface paths {
20968
20740
  cookie?: never;
20969
20741
  };
20970
20742
  /**
20971
- * List contracts for team leaders
20972
- * @description List contracts where user is the coordinator/team leader
20743
+ * List contracts for workers
20744
+ * @description List contracts where user is the worker (employee/assistant)
20973
20745
  */
20974
20746
  get: {
20975
20747
  parameters: {
@@ -21270,8 +21042,8 @@ export interface paths {
21270
21042
  cookie?: never;
21271
21043
  };
21272
21044
  /**
21273
- * List contracts for assistants
21274
- * @description List contracts where user is the worker/assistant
21045
+ * [DEPRECATED] List contracts for assistants
21046
+ * @description DEPRECATED: Use /contracts/worker instead
21275
21047
  */
21276
21048
  get: {
21277
21049
  parameters: {
@@ -23837,7 +23609,7 @@ export interface paths {
23837
23609
  put?: never;
23838
23610
  /**
23839
23611
  * Cancel contract
23840
- * @description Cancel the contract. Only employer can cancel.
23612
+ * @description Cancel the contract. Both employer and worker can cancel.
23841
23613
  */
23842
23614
  post: {
23843
23615
  parameters: {
@@ -27219,6 +26991,126 @@ export interface paths {
27219
26991
  patch?: never;
27220
26992
  trace?: never;
27221
26993
  };
26994
+ '/api/contracts/employer/stats': {
26995
+ parameters: {
26996
+ query?: never;
26997
+ header?: never;
26998
+ path?: never;
26999
+ cookie?: never;
27000
+ };
27001
+ /**
27002
+ * Get contract statistics for employers
27003
+ * @description Get statistics for contracts from employer perspective
27004
+ */
27005
+ get: {
27006
+ parameters: {
27007
+ query?: never;
27008
+ header?: never;
27009
+ path?: never;
27010
+ cookie?: never;
27011
+ };
27012
+ requestBody?: never;
27013
+ responses: {
27014
+ /** @description Standard statistics response wrapper */
27015
+ 200: {
27016
+ headers: {
27017
+ [name: string]: unknown;
27018
+ };
27019
+ content: {
27020
+ 'application/json': {
27021
+ /** @description Complete contract statistics data */
27022
+ data: {
27023
+ /** @description Contract counts by all possible statuses */
27024
+ byStatus: {
27025
+ /** @description Non-negative integer (0 or greater) */
27026
+ draft: number;
27027
+ /** @description Non-negative integer (0 or greater) */
27028
+ coordinator_submitted: number;
27029
+ /** @description Non-negative integer (0 or greater) */
27030
+ worker_submitted: number;
27031
+ /** @description Non-negative integer (0 or greater) */
27032
+ ready_for_submission: number;
27033
+ /** @description Non-negative integer (0 or greater) */
27034
+ validation_failed: number;
27035
+ /** @description Non-negative integer (0 or greater) */
27036
+ submitted: number;
27037
+ /** @description Non-negative integer (0 or greater) */
27038
+ in_review: number;
27039
+ /** @description Non-negative integer (0 or greater) */
27040
+ ready_for_signing: number;
27041
+ /** @description Non-negative integer (0 or greater) */
27042
+ pending_signing: number;
27043
+ /** @description Non-negative integer (0 or greater) */
27044
+ signed: number;
27045
+ /** @description Non-negative integer (0 or greater) */
27046
+ active: number;
27047
+ /** @description Non-negative integer (0 or greater) */
27048
+ completed: number;
27049
+ /** @description Non-negative integer (0 or greater) */
27050
+ terminated: number;
27051
+ /** @description Non-negative integer (0 or greater) */
27052
+ cancelled: number;
27053
+ };
27054
+ /** @description Contract total counts and derived metrics */
27055
+ totals: {
27056
+ /** @description Non-negative integer (0 or greater) */
27057
+ all: number;
27058
+ /** @description Non-negative integer (0 or greater) */
27059
+ active: number;
27060
+ /** @description Non-negative integer (0 or greater) */
27061
+ inProgress?: number;
27062
+ /** @description Non-negative integer (0 or greater) */
27063
+ needsAction?: number;
27064
+ };
27065
+ /** @description Role-specific alerts for contracts requiring attention */
27066
+ alerts?: {
27067
+ type: string;
27068
+ severity: string;
27069
+ count: number;
27070
+ message: string;
27071
+ status: string;
27072
+ }[];
27073
+ };
27074
+ /** @description Metadata about the statistics query and response */
27075
+ metadata: {
27076
+ /** @description Role context for the statistics query */
27077
+ role: 'coordinator' | 'teamlead' | 'assistant' | 'case_manager' | 'applicant';
27078
+ /**
27079
+ * Format: uuid
27080
+ * @description UUID version 4 identifier
27081
+ */
27082
+ accountId?: string;
27083
+ /**
27084
+ * Format: uuid
27085
+ * @description UUID version 4 identifier
27086
+ */
27087
+ userId?: string;
27088
+ /**
27089
+ * Format: date-time
27090
+ * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
27091
+ */
27092
+ queriedAt: string;
27093
+ /** @description Whether the result was served from cache */
27094
+ cached?: boolean;
27095
+ /**
27096
+ * Format: date-time
27097
+ * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
27098
+ */
27099
+ cacheExpiresAt?: string;
27100
+ };
27101
+ };
27102
+ };
27103
+ };
27104
+ };
27105
+ };
27106
+ put?: never;
27107
+ post?: never;
27108
+ delete?: never;
27109
+ options?: never;
27110
+ head?: never;
27111
+ patch?: never;
27112
+ trace?: never;
27113
+ };
27222
27114
  '/api/contracts/teamlead/stats': {
27223
27115
  parameters: {
27224
27116
  query?: never;
@@ -27227,8 +27119,128 @@ export interface paths {
27227
27119
  cookie?: never;
27228
27120
  };
27229
27121
  /**
27230
- * Get contract statistics for team leaders
27231
- * @description Get statistics for contracts from team leader perspective
27122
+ * [DEPRECATED] Get contract statistics for team leaders
27123
+ * @description DEPRECATED: Use /contracts/employer/stats instead
27124
+ */
27125
+ get: {
27126
+ parameters: {
27127
+ query?: never;
27128
+ header?: never;
27129
+ path?: never;
27130
+ cookie?: never;
27131
+ };
27132
+ requestBody?: never;
27133
+ responses: {
27134
+ /** @description Standard statistics response wrapper */
27135
+ 200: {
27136
+ headers: {
27137
+ [name: string]: unknown;
27138
+ };
27139
+ content: {
27140
+ 'application/json': {
27141
+ /** @description Complete contract statistics data */
27142
+ data: {
27143
+ /** @description Contract counts by all possible statuses */
27144
+ byStatus: {
27145
+ /** @description Non-negative integer (0 or greater) */
27146
+ draft: number;
27147
+ /** @description Non-negative integer (0 or greater) */
27148
+ coordinator_submitted: number;
27149
+ /** @description Non-negative integer (0 or greater) */
27150
+ worker_submitted: number;
27151
+ /** @description Non-negative integer (0 or greater) */
27152
+ ready_for_submission: number;
27153
+ /** @description Non-negative integer (0 or greater) */
27154
+ validation_failed: number;
27155
+ /** @description Non-negative integer (0 or greater) */
27156
+ submitted: number;
27157
+ /** @description Non-negative integer (0 or greater) */
27158
+ in_review: number;
27159
+ /** @description Non-negative integer (0 or greater) */
27160
+ ready_for_signing: number;
27161
+ /** @description Non-negative integer (0 or greater) */
27162
+ pending_signing: number;
27163
+ /** @description Non-negative integer (0 or greater) */
27164
+ signed: number;
27165
+ /** @description Non-negative integer (0 or greater) */
27166
+ active: number;
27167
+ /** @description Non-negative integer (0 or greater) */
27168
+ completed: number;
27169
+ /** @description Non-negative integer (0 or greater) */
27170
+ terminated: number;
27171
+ /** @description Non-negative integer (0 or greater) */
27172
+ cancelled: number;
27173
+ };
27174
+ /** @description Contract total counts and derived metrics */
27175
+ totals: {
27176
+ /** @description Non-negative integer (0 or greater) */
27177
+ all: number;
27178
+ /** @description Non-negative integer (0 or greater) */
27179
+ active: number;
27180
+ /** @description Non-negative integer (0 or greater) */
27181
+ inProgress?: number;
27182
+ /** @description Non-negative integer (0 or greater) */
27183
+ needsAction?: number;
27184
+ };
27185
+ /** @description Role-specific alerts for contracts requiring attention */
27186
+ alerts?: {
27187
+ type: string;
27188
+ severity: string;
27189
+ count: number;
27190
+ message: string;
27191
+ status: string;
27192
+ }[];
27193
+ };
27194
+ /** @description Metadata about the statistics query and response */
27195
+ metadata: {
27196
+ /** @description Role context for the statistics query */
27197
+ role: 'coordinator' | 'teamlead' | 'assistant' | 'case_manager' | 'applicant';
27198
+ /**
27199
+ * Format: uuid
27200
+ * @description UUID version 4 identifier
27201
+ */
27202
+ accountId?: string;
27203
+ /**
27204
+ * Format: uuid
27205
+ * @description UUID version 4 identifier
27206
+ */
27207
+ userId?: string;
27208
+ /**
27209
+ * Format: date-time
27210
+ * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
27211
+ */
27212
+ queriedAt: string;
27213
+ /** @description Whether the result was served from cache */
27214
+ cached?: boolean;
27215
+ /**
27216
+ * Format: date-time
27217
+ * @description ISO 8601 datetime format (YYYY-MM-DDTHH:mm:ss.sssZ)
27218
+ */
27219
+ cacheExpiresAt?: string;
27220
+ };
27221
+ };
27222
+ };
27223
+ };
27224
+ };
27225
+ };
27226
+ put?: never;
27227
+ post?: never;
27228
+ delete?: never;
27229
+ options?: never;
27230
+ head?: never;
27231
+ patch?: never;
27232
+ trace?: never;
27233
+ };
27234
+ '/api/contracts/worker/stats': {
27235
+ parameters: {
27236
+ query?: never;
27237
+ header?: never;
27238
+ path?: never;
27239
+ cookie?: never;
27240
+ };
27241
+ /**
27242
+ * Get contract statistics for workers
27243
+ * @description Get statistics for contracts from worker perspective
27232
27244
  */
27233
27245
  get: {
27234
27246
  parameters: {
@@ -27347,8 +27359,8 @@ export interface paths {
27347
27359
  cookie?: never;
27348
27360
  };
27349
27361
  /**
27350
- * Get contract statistics for assistants
27351
- * @description Get statistics for contracts from assistant perspective
27362
+ * [DEPRECATED] Get contract statistics for assistants
27363
+ * @description DEPRECATED: Use /contracts/worker/stats instead
27352
27364
  */
27353
27365
  get: {
27354
27366
  parameters: {