@wakata-dev/api-client 0.1.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.
@@ -0,0 +1,4333 @@
1
+ import * as _hey_api_client_fetch from '@hey-api/client-fetch';
2
+ import { TDataShape, Options as Options$1, Client } from '@hey-api/client-fetch';
3
+
4
+ type SendCredentialsDto = {
5
+ /**
6
+ * User public ID (UUID)
7
+ */
8
+ user_id: string;
9
+ /**
10
+ * Device public ID (UUID) for validation
11
+ */
12
+ device_id: string;
13
+ /**
14
+ * Send credentials via email
15
+ */
16
+ email: boolean;
17
+ /**
18
+ * Send credentials via SMS
19
+ */
20
+ sms: boolean;
21
+ };
22
+ type RegisterDeviceDto = {
23
+ /**
24
+ * The 6-digit pairing code for device registration (text format)
25
+ */
26
+ code: string;
27
+ /**
28
+ * Operating system of the device
29
+ */
30
+ os?: string;
31
+ /**
32
+ * Operating system version
33
+ */
34
+ os_version?: string;
35
+ /**
36
+ * Device model
37
+ */
38
+ device_model?: string;
39
+ /**
40
+ * App version
41
+ */
42
+ app_version?: string;
43
+ /**
44
+ * Device battery level (0-100)
45
+ */
46
+ battery_level?: number;
47
+ /**
48
+ * Device latitude coordinate
49
+ */
50
+ lat?: number;
51
+ /**
52
+ * Device longitude coordinate
53
+ */
54
+ lng?: number;
55
+ };
56
+ type RegisterDeviceResponseDto = {
57
+ /**
58
+ * BigInt as string. Device ID
59
+ */
60
+ id: string;
61
+ /**
62
+ * Public device identifier (UUID)
63
+ */
64
+ publicId: string;
65
+ /**
66
+ * BigInt as string. Company identifier
67
+ */
68
+ companyId: string;
69
+ /**
70
+ * BigInt as string. Site identifier
71
+ */
72
+ siteId: string;
73
+ /**
74
+ * Device name
75
+ */
76
+ name: string;
77
+ /**
78
+ * Device status
79
+ */
80
+ status: string;
81
+ /**
82
+ * Whether redownload is required
83
+ */
84
+ redownloadRequired?: boolean;
85
+ /**
86
+ * Whether to send logs
87
+ */
88
+ sendLogs?: boolean;
89
+ /**
90
+ * Whether this is a test device
91
+ */
92
+ testDevice?: boolean;
93
+ /**
94
+ * BigInt as string. Test device asset class ID
95
+ */
96
+ testDeviceAssetClassId?: string;
97
+ /**
98
+ * Nominated test user ID. When the device is a test device the mobile app should impersonate this user, allowing it to drive User Based checklists (including unpublished/draft ones) without affecting billable assignments.
99
+ */
100
+ testUserId?: {
101
+ [key: string]: unknown;
102
+ } | null;
103
+ /**
104
+ * Last sync timestamp
105
+ */
106
+ lastSyncAt?: string;
107
+ /**
108
+ * Creation timestamp
109
+ */
110
+ createdAt: string;
111
+ /**
112
+ * BigInt as string. ID of user who created the device
113
+ */
114
+ createdById: string;
115
+ /**
116
+ * Last update timestamp
117
+ */
118
+ updatedAt: string;
119
+ /**
120
+ * BigInt as string. ID of user who last updated the device
121
+ */
122
+ updatedById: string;
123
+ /**
124
+ * Deletion timestamp (if deleted)
125
+ */
126
+ deletedAt?: string;
127
+ /**
128
+ * BigInt as string. ID of user who deleted the device
129
+ */
130
+ deletedById?: string;
131
+ };
132
+ type CreateTokenDto = {
133
+ /**
134
+ * User UUID for authentication (preferred). If provided, employee_id is ignored.
135
+ */
136
+ user_id?: string;
137
+ /**
138
+ * Employee ID for authentication (legacy). Required if user_id is not provided.
139
+ */
140
+ employee_id?: string;
141
+ /**
142
+ * PIN code (4 digits)
143
+ */
144
+ pin: string;
145
+ /**
146
+ * Company UUID to authenticate against
147
+ */
148
+ company_id: string;
149
+ };
150
+ type TokenUserDto = {
151
+ /**
152
+ * User public UUID
153
+ */
154
+ public_id: string;
155
+ /**
156
+ * User first name
157
+ */
158
+ first_name: string;
159
+ /**
160
+ * User last name
161
+ */
162
+ last_name: string;
163
+ };
164
+ type TokenCompanyDto = {
165
+ /**
166
+ * Company public UUID
167
+ */
168
+ public_id: string;
169
+ /**
170
+ * Company name
171
+ */
172
+ name: string;
173
+ };
174
+ type TokenResponseDto = {
175
+ /**
176
+ * API token (Bearer token)
177
+ */
178
+ token: string;
179
+ /**
180
+ * Token expiration date (optional)
181
+ */
182
+ expires_at?: {
183
+ [key: string]: unknown;
184
+ } | null;
185
+ /**
186
+ * Authenticated user information
187
+ */
188
+ user: TokenUserDto;
189
+ /**
190
+ * Company context for the token
191
+ */
192
+ company: TokenCompanyDto;
193
+ };
194
+ type CreateAssetDto = {
195
+ /**
196
+ * Device ID for authentication (optional for API key auth)
197
+ */
198
+ device_id?: string;
199
+ /**
200
+ * Asset number
201
+ */
202
+ asset_number: string;
203
+ /**
204
+ * Asset class public ID
205
+ */
206
+ asset_class: string;
207
+ /**
208
+ * Site public ID
209
+ */
210
+ site_id: string;
211
+ };
212
+ type PublicCreateAssetDto = {
213
+ /**
214
+ * Asset number
215
+ */
216
+ asset_number: string;
217
+ /**
218
+ * Asset class public ID
219
+ */
220
+ asset_class: string;
221
+ /**
222
+ * Site public ID
223
+ */
224
+ site_id: string;
225
+ };
226
+ type ApiErrorDetail = {
227
+ /**
228
+ * Dotted path to the offending property, when available.
229
+ */
230
+ field?: string;
231
+ /**
232
+ * Machine-readable code for the validation failure (e.g. the class-validator constraint name like `isUuid`, `isNotEmpty`).
233
+ */
234
+ code?: string;
235
+ /**
236
+ * Human-readable explanation of the problem.
237
+ */
238
+ message: string;
239
+ };
240
+ type ApiErrorBody = {
241
+ /**
242
+ * Stable, machine-readable code identifying the failure class. Integrators should switch on this rather than parsing the message. Codes are append-only — they are never removed or renamed.
243
+ */
244
+ code: 'validation_error' | 'bad_request' | 'unauthorized' | 'forbidden' | 'ip_not_allowed' | 'not_found' | 'conflict' | 'idempotency_key_conflict' | 'rate_limited' | 'internal_error';
245
+ /**
246
+ * Human-readable description of the failure. Subject to wording tweaks — do not parse.
247
+ */
248
+ message: string;
249
+ /**
250
+ * Correlator that matches the `X-Request-Id` response header. Quote this when filing a support ticket.
251
+ */
252
+ request_id: string;
253
+ /**
254
+ * Deep-link into the public error documentation.
255
+ */
256
+ docs_url?: string;
257
+ /**
258
+ * Name of the request parameter that triggered the failure, when the failure can be pinpointed to a single field. For nested-body failures see `details[].field` instead.
259
+ */
260
+ param?: string;
261
+ /**
262
+ * Itemized list of per-field validation problems. Populated for `validation_error` responses; usually absent for other codes.
263
+ */
264
+ details?: Array<ApiErrorDetail>;
265
+ };
266
+ type ApiErrorResponse = {
267
+ error: ApiErrorBody;
268
+ };
269
+ type UpdateAssetDto = {
270
+ /**
271
+ * Asset number
272
+ */
273
+ asset_number?: string;
274
+ /**
275
+ * Asset class public ID
276
+ */
277
+ asset_class?: string;
278
+ /**
279
+ * Site public ID
280
+ */
281
+ site_id?: string;
282
+ /**
283
+ * Asset photo file path or URL
284
+ */
285
+ asset_photo_file?: string;
286
+ /**
287
+ * Asset photo metadata as JSON string
288
+ */
289
+ asset_photo_info?: string;
290
+ /**
291
+ * Latitude coordinate
292
+ */
293
+ lat?: number;
294
+ /**
295
+ * Longitude coordinate
296
+ */
297
+ lng?: number;
298
+ };
299
+ type EmbeddedUserPropertyDto = {
300
+ /**
301
+ * Property ID. Serialized as a string in public API responses (BigInt-safe).
302
+ */
303
+ property_id: string;
304
+ /**
305
+ * Property name from config_items
306
+ */
307
+ property_name: string;
308
+ /**
309
+ * Text value (if property type is text)
310
+ */
311
+ text_value: {
312
+ [key: string]: unknown;
313
+ } | null;
314
+ /**
315
+ * Numeric value (if property type is numeric)
316
+ */
317
+ numeric_value: {
318
+ [key: string]: unknown;
319
+ } | null;
320
+ /**
321
+ * Date value (if property type is date)
322
+ */
323
+ date_value: {
324
+ [key: string]: unknown;
325
+ } | null;
326
+ };
327
+ type UserResponseDto = {
328
+ /**
329
+ * User public ID (UUID)
330
+ */
331
+ user_public_id: string;
332
+ /**
333
+ * User first name
334
+ */
335
+ user_first_name: string;
336
+ /**
337
+ * User last name
338
+ */
339
+ user_last_name: string;
340
+ /**
341
+ * User email address
342
+ */
343
+ user_email: {
344
+ [key: string]: unknown;
345
+ } | null;
346
+ /**
347
+ * Profile photo URL
348
+ */
349
+ user_profile_photo: {
350
+ [key: string]: unknown;
351
+ } | null;
352
+ /**
353
+ * Username (typically email)
354
+ */
355
+ user_user_name: {
356
+ [key: string]: unknown;
357
+ } | null;
358
+ /**
359
+ * Employee number
360
+ */
361
+ user_employee_number: {
362
+ [key: string]: unknown;
363
+ } | null;
364
+ /**
365
+ * User PIN code
366
+ */
367
+ user_pin: {
368
+ [key: string]: unknown;
369
+ } | null;
370
+ /**
371
+ * Contact phone number
372
+ */
373
+ user_contact_number: {
374
+ [key: string]: unknown;
375
+ } | null;
376
+ /**
377
+ * Last login timestamp
378
+ */
379
+ user_last_login_timestamp: {
380
+ [key: string]: unknown;
381
+ } | null;
382
+ /**
383
+ * User creation timestamp
384
+ */
385
+ user_created: string;
386
+ /**
387
+ * Public ID of user who created this user
388
+ */
389
+ user_created_by: {
390
+ [key: string]: unknown;
391
+ } | null;
392
+ /**
393
+ * Name of user who created this user
394
+ */
395
+ user_created_by_name: {
396
+ [key: string]: unknown;
397
+ } | null;
398
+ /**
399
+ * Last modification timestamp
400
+ */
401
+ user_modified: string;
402
+ /**
403
+ * Public ID of user who last modified this user
404
+ */
405
+ user_modified_by: {
406
+ [key: string]: unknown;
407
+ } | null;
408
+ /**
409
+ * Name of user who last modified this user
410
+ */
411
+ user_modified_by_name: {
412
+ [key: string]: unknown;
413
+ } | null;
414
+ /**
415
+ * Whether user is deleted
416
+ */
417
+ user_deleted: boolean;
418
+ /**
419
+ * User properties
420
+ */
421
+ user_properties: Array<EmbeddedUserPropertyDto>;
422
+ };
423
+ type ChangePinDto = {
424
+ /**
425
+ * New 4-digit PIN code
426
+ */
427
+ pin: string;
428
+ };
429
+ type UploadCredentialsResponseDto = {
430
+ /**
431
+ * Temporary AWS Access Key ID
432
+ */
433
+ accessKeyId: string;
434
+ /**
435
+ * Temporary AWS Secret Access Key
436
+ */
437
+ secretAccessKey: string;
438
+ /**
439
+ * Temporary AWS Session Token
440
+ */
441
+ sessionToken: string;
442
+ /**
443
+ * Credentials expiration time in ISO 8601 format
444
+ */
445
+ expiration: string;
446
+ /**
447
+ * S3 bucket name
448
+ */
449
+ bucket: string;
450
+ /**
451
+ * AWS region
452
+ */
453
+ region: string;
454
+ /**
455
+ * S3 prefix path for uploads (company folder - credentials grant access to entire company folder)
456
+ */
457
+ uploadPrefix: string;
458
+ };
459
+ type RequestUploadDto = {
460
+ /**
461
+ * Feature/folder name
462
+ */
463
+ feature: string;
464
+ /**
465
+ * Filename
466
+ */
467
+ filename: string;
468
+ };
469
+ type RequestLogUploadDto = {
470
+ /**
471
+ * Company name (used as the top-level folder)
472
+ */
473
+ companyName: string;
474
+ /**
475
+ * Device name (used as the second folder segment)
476
+ */
477
+ deviceName: string;
478
+ /**
479
+ * Final log archive filename
480
+ */
481
+ fileName: string;
482
+ };
483
+ type RequestDownloadDto = {
484
+ /**
485
+ * Feature/folder name
486
+ */
487
+ feature: string;
488
+ /**
489
+ * Filename (optional - if not provided, /download-url grants access to entire folder)
490
+ */
491
+ filename?: string;
492
+ };
493
+ type DownloadResponseDto = {
494
+ /**
495
+ * CloudFront base URL (for folder access) or full file URL (for single file)
496
+ */
497
+ baseUrl: string;
498
+ /**
499
+ * CloudFront path pattern that the cookies grant access to
500
+ */
501
+ pathPattern: string;
502
+ /**
503
+ * CloudFront-Policy cookie value (custom policy) or CloudFront-Expires (canned policy)
504
+ */
505
+ cloudFrontPolicy?: string;
506
+ /**
507
+ * CloudFront-Expires cookie value (canned policy, Unix timestamp)
508
+ */
509
+ cloudFrontExpires?: number;
510
+ /**
511
+ * CloudFront-Signature cookie value
512
+ */
513
+ cloudFrontSignature: string;
514
+ /**
515
+ * CloudFront-Key-Pair-Id cookie value
516
+ */
517
+ cloudFrontKeyPairId: string;
518
+ /**
519
+ * Expiration time in seconds
520
+ */
521
+ expiresIn: number;
522
+ };
523
+ type CreateInspectionDto = {
524
+ /**
525
+ * Inspection public ID (UUID)
526
+ */
527
+ public_id: string;
528
+ /**
529
+ * Site public ID
530
+ */
531
+ site_id: string;
532
+ /**
533
+ * Inspection type
534
+ */
535
+ type: string;
536
+ /**
537
+ * Inspection status
538
+ */
539
+ status: string;
540
+ /**
541
+ * BigInt as string. Checklist ID
542
+ */
543
+ checklist_id: string;
544
+ /**
545
+ * User public ID (creator)
546
+ */
547
+ user_id: string;
548
+ /**
549
+ * BigInt as string. Asset internal ID (for type=asset inspections)
550
+ */
551
+ asset_id?: string;
552
+ /**
553
+ * BigInt as string. Subject user internal ID (for type=user inspections)
554
+ */
555
+ subject_user_id?: string;
556
+ /**
557
+ * BigInt as string. Device internal ID (for type=device inspections)
558
+ */
559
+ device_id?: string;
560
+ /**
561
+ * Asset selection method (e.g. "search", "scan")
562
+ */
563
+ asset_selection_method?: string;
564
+ /**
565
+ * Latitude (optional)
566
+ */
567
+ lat?: number;
568
+ /**
569
+ * Longitude (optional)
570
+ */
571
+ lng?: number;
572
+ /**
573
+ * App version (optional)
574
+ */
575
+ app_version?: string;
576
+ /**
577
+ * Connection type (optional)
578
+ */
579
+ connection?: string;
580
+ /**
581
+ * Started at timestamp (ISO 8601 format, optional)
582
+ */
583
+ started_at?: string;
584
+ /**
585
+ * BigInt as string. Task ID (optional) - if provided, the task status will be set to "started"
586
+ */
587
+ task_id?: string;
588
+ };
589
+ type RepeatInspectionDto = {
590
+ /**
591
+ * User public ID (who is repeating the inspection)
592
+ */
593
+ user_id: string;
594
+ /**
595
+ * New inspection public ID for the cloned inspection
596
+ */
597
+ new_inspection_id: string;
598
+ };
599
+ type ResumeInspectionDto = {
600
+ /**
601
+ * User public ID (who is resuming the inspection)
602
+ */
603
+ user_id: string;
604
+ };
605
+ type UpdateInspectionDto = {
606
+ /**
607
+ * User public ID (who is updating the inspection)
608
+ */
609
+ user_id: string;
610
+ /**
611
+ * Inspection type
612
+ */
613
+ type?: string;
614
+ /**
615
+ * Inspection status
616
+ */
617
+ status?: string;
618
+ /**
619
+ * Latitude
620
+ */
621
+ lat?: number;
622
+ /**
623
+ * Longitude
624
+ */
625
+ lng?: number;
626
+ /**
627
+ * App version
628
+ */
629
+ app_version?: string;
630
+ /**
631
+ * Connection type
632
+ */
633
+ connection?: string;
634
+ /**
635
+ * Started at timestamp (ISO 8601 format)
636
+ */
637
+ started_at?: string;
638
+ /**
639
+ * Ended at timestamp (ISO 8601 format)
640
+ */
641
+ ended_at?: string;
642
+ /**
643
+ * Submitted at timestamp (ISO 8601 format)
644
+ */
645
+ submitted_at?: string;
646
+ /**
647
+ * Duration in seconds
648
+ */
649
+ duration?: number;
650
+ /**
651
+ * Inspection score
652
+ */
653
+ score?: number;
654
+ /**
655
+ * Completion percentage
656
+ */
657
+ completion_percentage?: number;
658
+ /**
659
+ * Asset selection method
660
+ */
661
+ asset_selection_method?: string;
662
+ };
663
+ type DeleteInspectionDto = {
664
+ /**
665
+ * User public ID (who is deleting the inspection)
666
+ */
667
+ user_id: string;
668
+ };
669
+ type ResponseOptionDto = {
670
+ /**
671
+ * Response option public ID (UUID)
672
+ */
673
+ public_id?: string;
674
+ /**
675
+ * Response public ID this option belongs to
676
+ */
677
+ response_public_id?: string;
678
+ /**
679
+ * BigInt as string. Question option ID
680
+ */
681
+ question_option_id: string;
682
+ /**
683
+ * Option label
684
+ */
685
+ label: string;
686
+ /**
687
+ * Long description
688
+ */
689
+ long_description?: string;
690
+ /**
691
+ * Is leaf node in option tree (accepts boolean or 0/1)
692
+ */
693
+ leaf_node?: {
694
+ [key: string]: unknown;
695
+ };
696
+ /**
697
+ * Score value
698
+ */
699
+ score?: number;
700
+ /**
701
+ * Updated timestamp (Unix epoch in seconds)
702
+ */
703
+ updated_at?: number;
704
+ /**
705
+ * Deleted timestamp (Unix epoch in seconds)
706
+ */
707
+ deleted_at?: number;
708
+ };
709
+ type MediaDto = {
710
+ /**
711
+ * Media public ID (UUID)
712
+ */
713
+ public_id?: string;
714
+ /**
715
+ * Response public ID
716
+ */
717
+ response_public_id?: string;
718
+ /**
719
+ * Response extra info public ID
720
+ */
721
+ response_extra_info_public_id?: string;
722
+ /**
723
+ * Media type (photo, audio, video, etc.)
724
+ */
725
+ type: string;
726
+ /**
727
+ * Media file path
728
+ */
729
+ media_file?: string;
730
+ /**
731
+ * Media info (JSON or text)
732
+ */
733
+ media_info?: string;
734
+ /**
735
+ * Captured timestamp (Unix epoch in seconds)
736
+ */
737
+ captured_at?: number;
738
+ /**
739
+ * Audio duration in seconds
740
+ */
741
+ audio_duration?: number;
742
+ /**
743
+ * Audio transcription text
744
+ */
745
+ audio_transcription?: string;
746
+ /**
747
+ * Upload status (accepts boolean or 0/1)
748
+ */
749
+ uploaded?: {
750
+ [key: string]: unknown;
751
+ };
752
+ /**
753
+ * Updated timestamp (Unix epoch in seconds)
754
+ */
755
+ updated_at?: number;
756
+ /**
757
+ * Deleted timestamp (Unix epoch in seconds)
758
+ */
759
+ deleted_at?: number;
760
+ };
761
+ type ExtraInfoDto = {
762
+ /**
763
+ * Extra info public ID (UUID)
764
+ */
765
+ public_id?: string;
766
+ /**
767
+ * Response public ID this extra info belongs to
768
+ */
769
+ response_public_id?: string;
770
+ /**
771
+ * BigInt as string. Extra info definition ID
772
+ */
773
+ extra_info_id: string;
774
+ /**
775
+ * Text value
776
+ */
777
+ text_value?: string;
778
+ /**
779
+ * Numeric value
780
+ */
781
+ numeric_value?: number;
782
+ /**
783
+ * Date value (Unix epoch in seconds)
784
+ */
785
+ date_value?: number;
786
+ /**
787
+ * ID value (for dropdown selections)
788
+ */
789
+ id_value?: string;
790
+ /**
791
+ * Latitude value
792
+ */
793
+ lat_value?: number;
794
+ /**
795
+ * Longitude value
796
+ */
797
+ lng_value?: number;
798
+ /**
799
+ * Updated timestamp (Unix epoch in seconds)
800
+ */
801
+ updated_at?: number;
802
+ /**
803
+ * Deleted timestamp (Unix epoch in seconds)
804
+ */
805
+ deleted_at?: number;
806
+ /**
807
+ * Media attachments (not validated for performance)
808
+ */
809
+ media?: Array<MediaDto>;
810
+ };
811
+ type ResponseDto = {
812
+ /**
813
+ * Response public ID (UUID)
814
+ */
815
+ public_id?: string;
816
+ /**
817
+ * Inspection public ID this response belongs to
818
+ */
819
+ inspection_public_id?: string;
820
+ /**
821
+ * BigInt as string. Checklist item ID
822
+ */
823
+ checklist_item_id?: string;
824
+ /**
825
+ * Response type (question, condition, etc.)
826
+ */
827
+ type?: string;
828
+ /**
829
+ * Response status
830
+ */
831
+ status?: number;
832
+ /**
833
+ * Condition result (accepts boolean or 0/1)
834
+ */
835
+ condition_result?: {
836
+ [key: string]: unknown;
837
+ };
838
+ /**
839
+ * BigInt as string. Control button ID
840
+ */
841
+ control_button_id?: string;
842
+ /**
843
+ * BigInt as string. Control gauge band ID
844
+ */
845
+ control_gauge_band_id?: string;
846
+ /**
847
+ * Gauge value
848
+ */
849
+ gauge_value?: number;
850
+ /**
851
+ * Control property value
852
+ */
853
+ control_property_value?: number;
854
+ /**
855
+ * BigInt as string. Embedded inspection ID
856
+ */
857
+ embedded_inspection_id?: string;
858
+ /**
859
+ * Embedded inspection public ID (UUID)
860
+ */
861
+ embedded_inspection_public_id?: string;
862
+ /**
863
+ * Loop repetitions count
864
+ */
865
+ loop_repetitions?: number;
866
+ /**
867
+ * BigInt as string. Prerequisite inspection ID
868
+ */
869
+ prerequisite_inspection_id?: string;
870
+ /**
871
+ * Latitude
872
+ */
873
+ lat?: number;
874
+ /**
875
+ * Longitude
876
+ */
877
+ lng?: number;
878
+ /**
879
+ * Duration in seconds
880
+ */
881
+ duration?: number;
882
+ /**
883
+ * Score
884
+ */
885
+ score?: number;
886
+ /**
887
+ * Left value for nested set model
888
+ */
889
+ left?: number;
890
+ /**
891
+ * Right value for nested set model
892
+ */
893
+ right?: number;
894
+ /**
895
+ * Quiz answer attempts count
896
+ */
897
+ quiz_answer_attempts?: number;
898
+ /**
899
+ * Responded timestamp (Unix epoch in seconds)
900
+ */
901
+ responded_at?: number;
902
+ /**
903
+ * Updated timestamp (Unix epoch in seconds)
904
+ */
905
+ updated_at?: number;
906
+ /**
907
+ * Deleted timestamp (Unix epoch in seconds)
908
+ */
909
+ deleted_at?: number;
910
+ /**
911
+ * Nested child responses (not validated for performance)
912
+ */
913
+ responses?: Array<ResponseDto>;
914
+ /**
915
+ * Response options (for multi-select questions, not validated for performance)
916
+ */
917
+ response_options?: Array<ResponseOptionDto>;
918
+ /**
919
+ * Extra information fields (not validated for performance)
920
+ */
921
+ extra_infos?: Array<ExtraInfoDto>;
922
+ /**
923
+ * Media attachments directly on response (not validated for performance)
924
+ */
925
+ media?: Array<MediaDto>;
926
+ };
927
+ type SubmitInspectionDto = {
928
+ /**
929
+ * Inspection public ID (UUID)
930
+ */
931
+ public_id: string;
932
+ /**
933
+ * BigInt as string. Company ID
934
+ */
935
+ company_id: string;
936
+ /**
937
+ * BigInt as string. Site ID
938
+ */
939
+ site_id: string;
940
+ /**
941
+ * Inspection type
942
+ */
943
+ type: string;
944
+ /**
945
+ * Embedded flag (accepts boolean or 0/1)
946
+ */
947
+ embedded?: {
948
+ [key: string]: unknown;
949
+ };
950
+ /**
951
+ * Inspection status
952
+ */
953
+ status: string;
954
+ /**
955
+ * BigInt as string. Checklist ID
956
+ */
957
+ checklist_id: string;
958
+ /**
959
+ * BigInt as string. User ID
960
+ */
961
+ user_id: string;
962
+ /**
963
+ * BigInt as string. Asset ID
964
+ */
965
+ asset_id?: string;
966
+ /**
967
+ * BigInt as string. Subject user ID
968
+ */
969
+ subject_user_id?: string;
970
+ /**
971
+ * BigInt as string. Device ID
972
+ */
973
+ device_id?: string;
974
+ /**
975
+ * Started timestamp (Unix epoch in milliseconds)
976
+ */
977
+ started_at?: number;
978
+ /**
979
+ * Ended timestamp (Unix epoch in milliseconds)
980
+ */
981
+ ended_at?: number;
982
+ /**
983
+ * Submitted timestamp (Unix epoch in milliseconds)
984
+ */
985
+ submitted_at?: number;
986
+ /**
987
+ * Duration in seconds
988
+ */
989
+ duration?: number;
990
+ /**
991
+ * Score
992
+ */
993
+ score?: number;
994
+ /**
995
+ * Latitude
996
+ */
997
+ lat?: number;
998
+ /**
999
+ * Longitude
1000
+ */
1001
+ lng?: number;
1002
+ /**
1003
+ * Completion percentage
1004
+ */
1005
+ completion_percentage?: number;
1006
+ /**
1007
+ * Asset selection method
1008
+ */
1009
+ asset_selection_method?: string;
1010
+ /**
1011
+ * App version
1012
+ */
1013
+ app_version?: string;
1014
+ /**
1015
+ * Connection type
1016
+ */
1017
+ connection?: string;
1018
+ /**
1019
+ * Non-billing flag
1020
+ */
1021
+ non_billing?: string;
1022
+ /**
1023
+ * Billing date (Unix epoch in milliseconds)
1024
+ */
1025
+ billing_date?: number;
1026
+ /**
1027
+ * BigInt as string. Submitted project ID
1028
+ */
1029
+ submitted_project_id?: string;
1030
+ /**
1031
+ * BigInt as string. Target project ID
1032
+ */
1033
+ target_project_id?: string;
1034
+ /**
1035
+ * BigInt as string. Project location ID
1036
+ */
1037
+ project_location_id?: string;
1038
+ /**
1039
+ * Updated timestamp (Unix epoch in seconds)
1040
+ */
1041
+ updated_at?: number;
1042
+ /**
1043
+ * Deleted timestamp (Unix epoch in seconds)
1044
+ */
1045
+ deleted_at?: number;
1046
+ /**
1047
+ * Array of responses (nested tree structure)
1048
+ */
1049
+ responses?: Array<ResponseDto>;
1050
+ /**
1051
+ * BigInt as string. Task ID (optional) - if provided, the task status will be updated to match inspection status
1052
+ */
1053
+ task_id?: string;
1054
+ };
1055
+ type InspectionResponseDto = {
1056
+ /**
1057
+ * Inspection public ID (UUID)
1058
+ */
1059
+ inspection_public_id: string;
1060
+ /**
1061
+ * Inspection type
1062
+ */
1063
+ inspection_type: string;
1064
+ /**
1065
+ * Inspection status
1066
+ */
1067
+ inspection_status: string;
1068
+ /**
1069
+ * Site public ID (UUID)
1070
+ */
1071
+ inspection_site_id?: {
1072
+ [key: string]: unknown;
1073
+ };
1074
+ /**
1075
+ * Site name
1076
+ */
1077
+ inspection_site_name?: {
1078
+ [key: string]: unknown;
1079
+ };
1080
+ /**
1081
+ * Asset public ID (UUID)
1082
+ */
1083
+ inspection_asset_id?: {
1084
+ [key: string]: unknown;
1085
+ };
1086
+ /**
1087
+ * Asset number
1088
+ */
1089
+ inspection_asset_number?: {
1090
+ [key: string]: unknown;
1091
+ };
1092
+ /**
1093
+ * Checklist public ID (UUID)
1094
+ */
1095
+ inspection_checklist_id?: {
1096
+ [key: string]: unknown;
1097
+ };
1098
+ /**
1099
+ * Checklist name
1100
+ */
1101
+ inspection_checklist_name?: {
1102
+ [key: string]: unknown;
1103
+ };
1104
+ /**
1105
+ * Checklist category public ID (UUID)
1106
+ */
1107
+ inspection_checklist_category_id?: {
1108
+ [key: string]: unknown;
1109
+ };
1110
+ /**
1111
+ * Checklist category name
1112
+ */
1113
+ inspection_checklist_category?: {
1114
+ [key: string]: unknown;
1115
+ };
1116
+ /**
1117
+ * Submitted user public ID (UUID)
1118
+ */
1119
+ inspection_submitted_user_id?: {
1120
+ [key: string]: unknown;
1121
+ };
1122
+ /**
1123
+ * Submitted user full name
1124
+ */
1125
+ inspection_submitted_user_name?: {
1126
+ [key: string]: unknown;
1127
+ };
1128
+ /**
1129
+ * Subject user public ID (UUID)
1130
+ */
1131
+ inspection_subject_user_id?: {
1132
+ [key: string]: unknown;
1133
+ };
1134
+ /**
1135
+ * Subject user full name
1136
+ */
1137
+ inspection_subject_user_name?: {
1138
+ [key: string]: unknown;
1139
+ };
1140
+ /**
1141
+ * Target project ID. Serialized as a string in public API responses (BigInt-safe).
1142
+ */
1143
+ inspection_target_project_id?: string | null;
1144
+ /**
1145
+ * Device public ID (UUID)
1146
+ */
1147
+ inspection_device_id?: {
1148
+ [key: string]: unknown;
1149
+ };
1150
+ /**
1151
+ * Device name
1152
+ */
1153
+ inspection_device_name?: {
1154
+ [key: string]: unknown;
1155
+ };
1156
+ /**
1157
+ * Inspection score
1158
+ */
1159
+ inspection_score?: {
1160
+ [key: string]: unknown;
1161
+ };
1162
+ /**
1163
+ * Inspection duration in seconds
1164
+ */
1165
+ inspection_duration?: {
1166
+ [key: string]: unknown;
1167
+ };
1168
+ /**
1169
+ * Completion percentage
1170
+ */
1171
+ inspection_completion_percentage?: {
1172
+ [key: string]: unknown;
1173
+ };
1174
+ /**
1175
+ * Started at timestamp
1176
+ */
1177
+ inspection_started_at?: {
1178
+ [key: string]: unknown;
1179
+ };
1180
+ /**
1181
+ * Ended at timestamp
1182
+ */
1183
+ inspection_ended_at?: {
1184
+ [key: string]: unknown;
1185
+ };
1186
+ /**
1187
+ * Submitted at timestamp
1188
+ */
1189
+ inspection_submitted_at?: {
1190
+ [key: string]: unknown;
1191
+ };
1192
+ /**
1193
+ * Created at timestamp (date received)
1194
+ */
1195
+ inspection_created_at: string;
1196
+ /**
1197
+ * Created by user public ID (UUID)
1198
+ */
1199
+ inspection_created_by_id?: {
1200
+ [key: string]: unknown;
1201
+ };
1202
+ /**
1203
+ * Created by user full name
1204
+ */
1205
+ inspection_created_by_name?: {
1206
+ [key: string]: unknown;
1207
+ };
1208
+ /**
1209
+ * Updated at timestamp
1210
+ */
1211
+ inspection_updated_at: string;
1212
+ /**
1213
+ * Updated by user public ID (UUID)
1214
+ */
1215
+ inspection_updated_by_id?: {
1216
+ [key: string]: unknown;
1217
+ };
1218
+ /**
1219
+ * Updated by user full name
1220
+ */
1221
+ inspection_updated_by_name?: {
1222
+ [key: string]: unknown;
1223
+ };
1224
+ };
1225
+ type ListInspectionsResponseDto = {
1226
+ /**
1227
+ * List of inspections
1228
+ */
1229
+ data: Array<InspectionResponseDto>;
1230
+ /**
1231
+ * Current page number
1232
+ */
1233
+ page: number;
1234
+ /**
1235
+ * Number of results per page
1236
+ */
1237
+ per_page: number;
1238
+ /**
1239
+ * Total number of results
1240
+ */
1241
+ total: number;
1242
+ /**
1243
+ * Total number of pages
1244
+ */
1245
+ total_pages: number;
1246
+ };
1247
+ type IssueHistoryDto = {
1248
+ /**
1249
+ * BigInt as string. Issue history entry ID
1250
+ */
1251
+ id: string;
1252
+ /**
1253
+ * BigInt as string. Issue ID this history entry belongs to
1254
+ */
1255
+ issue_id: string;
1256
+ /**
1257
+ * Issue title at the time of change
1258
+ */
1259
+ title?: {
1260
+ [key: string]: unknown;
1261
+ };
1262
+ /**
1263
+ * Assigned user ID at the time of change
1264
+ */
1265
+ assigned_user_id?: {
1266
+ [key: string]: unknown;
1267
+ };
1268
+ /**
1269
+ * Assigned group ID at the time of change
1270
+ */
1271
+ assigned_group_id?: {
1272
+ [key: string]: unknown;
1273
+ };
1274
+ /**
1275
+ * Status at the time of change
1276
+ */
1277
+ status?: {
1278
+ [key: string]: unknown;
1279
+ };
1280
+ /**
1281
+ * Primary action ID at the time of change
1282
+ */
1283
+ primary_action_id?: {
1284
+ [key: string]: unknown;
1285
+ };
1286
+ /**
1287
+ * Resolution ID at the time of change
1288
+ */
1289
+ resolution_id?: {
1290
+ [key: string]: unknown;
1291
+ };
1292
+ /**
1293
+ * Reference text at the time of change
1294
+ */
1295
+ reference?: {
1296
+ [key: string]: unknown;
1297
+ };
1298
+ /**
1299
+ * Target completion date at the time of change
1300
+ */
1301
+ target_completion_on?: {
1302
+ [key: string]: unknown;
1303
+ };
1304
+ /**
1305
+ * Note about the change
1306
+ */
1307
+ note?: {
1308
+ [key: string]: unknown;
1309
+ };
1310
+ /**
1311
+ * Effort spent in minutes
1312
+ */
1313
+ effort_spent?: {
1314
+ [key: string]: unknown;
1315
+ };
1316
+ /**
1317
+ * Cost incurred
1318
+ */
1319
+ cost_incurred?: {
1320
+ [key: string]: unknown;
1321
+ };
1322
+ /**
1323
+ * Chargeable cost
1324
+ */
1325
+ chargeable_cost?: {
1326
+ [key: string]: unknown;
1327
+ };
1328
+ /**
1329
+ * Type of change that occurred
1330
+ */
1331
+ change_type: string;
1332
+ /**
1333
+ * Timestamp when the change occurred
1334
+ */
1335
+ changed_at: string;
1336
+ /**
1337
+ * BigInt as string. User ID who made the change
1338
+ */
1339
+ changed_by_id: string;
1340
+ };
1341
+ type IssueHistoryResponseDto = {
1342
+ /**
1343
+ * Issue public ID
1344
+ */
1345
+ issue_public_id: string;
1346
+ /**
1347
+ * BigInt as string. Issue internal ID
1348
+ */
1349
+ issue_id: string;
1350
+ /**
1351
+ * Array of issue history entries
1352
+ */
1353
+ history: Array<IssueHistoryDto>;
1354
+ };
1355
+ type UpdateIssueDto = {
1356
+ /**
1357
+ * Issue title
1358
+ */
1359
+ title?: string;
1360
+ /**
1361
+ * BigInt as string. Asset ID
1362
+ */
1363
+ asset_id?: string;
1364
+ /**
1365
+ * BigInt as string. Assigned user ID
1366
+ */
1367
+ assigned_user_id?: string;
1368
+ /**
1369
+ * BigInt as string. Assigned group ID
1370
+ */
1371
+ assigned_group_id?: string;
1372
+ /**
1373
+ * Issue status
1374
+ */
1375
+ status?: string;
1376
+ /**
1377
+ * BigInt as string. Primary action ID
1378
+ */
1379
+ primary_action_id?: string;
1380
+ /**
1381
+ * Resolution ID (accepts string or number, will be converted to string)
1382
+ */
1383
+ resolution_id?: string;
1384
+ /**
1385
+ * Response score
1386
+ */
1387
+ response_score?: number;
1388
+ /**
1389
+ * Reference text
1390
+ */
1391
+ reference?: string;
1392
+ /**
1393
+ * Reported at timestamp (Unix epoch in seconds)
1394
+ */
1395
+ reported_at?: number;
1396
+ /**
1397
+ * First actioned at timestamp (Unix epoch in seconds)
1398
+ */
1399
+ first_actioned_at?: number;
1400
+ /**
1401
+ * Target completion on timestamp (Unix epoch in seconds)
1402
+ */
1403
+ target_completion_on?: number;
1404
+ /**
1405
+ * Closed on timestamp (Unix epoch in seconds)
1406
+ */
1407
+ closed_on?: number;
1408
+ /**
1409
+ * Project ID
1410
+ */
1411
+ project_id?: string;
1412
+ /**
1413
+ * User public ID (UUID) performing the update
1414
+ */
1415
+ user_id: string;
1416
+ };
1417
+ type CreateIssueMediaDto = {
1418
+ /**
1419
+ * Media UUID. Auto-generated if not provided.
1420
+ */
1421
+ public_id?: string;
1422
+ /**
1423
+ * Media type
1424
+ */
1425
+ type: 'photo' | 'audio' | 'video';
1426
+ /**
1427
+ * S3 path where the file was uploaded
1428
+ */
1429
+ media_file?: string;
1430
+ /**
1431
+ * JSON metadata (dimensions, duration, etc.)
1432
+ */
1433
+ media_info?: string;
1434
+ /**
1435
+ * Unix timestamp in seconds when media was captured
1436
+ */
1437
+ captured_at?: number;
1438
+ /**
1439
+ * Whether the file upload to S3 is complete
1440
+ */
1441
+ uploaded?: boolean;
1442
+ /**
1443
+ * BigInt as string. Link to specific issue_history record
1444
+ */
1445
+ issue_history_id?: string;
1446
+ };
1447
+ type IssueMediaResponseDto = {
1448
+ /**
1449
+ * Whether the operation was successful
1450
+ */
1451
+ success: boolean;
1452
+ /**
1453
+ * BigInt as string. Database ID of the created issue media record
1454
+ */
1455
+ issue_media_id: string;
1456
+ /**
1457
+ * Public UUID of the issue media
1458
+ */
1459
+ public_id: string;
1460
+ };
1461
+ type IssueResponseDto = {
1462
+ /**
1463
+ * Issue public ID (UUID)
1464
+ */
1465
+ issue_public_id: string;
1466
+ /**
1467
+ * Issue number
1468
+ */
1469
+ issue_number: string;
1470
+ /**
1471
+ * Asset internal ID
1472
+ */
1473
+ issue_asset_id?: {
1474
+ [key: string]: unknown;
1475
+ };
1476
+ /**
1477
+ * Asset number
1478
+ */
1479
+ issue_asset_number?: {
1480
+ [key: string]: unknown;
1481
+ };
1482
+ /**
1483
+ * Asset class name
1484
+ */
1485
+ issue_asset_class?: {
1486
+ [key: string]: unknown;
1487
+ };
1488
+ /**
1489
+ * Asset sub-class name
1490
+ */
1491
+ issue_asset_sub_class?: {
1492
+ [key: string]: unknown;
1493
+ };
1494
+ /**
1495
+ * Asset category name
1496
+ */
1497
+ issue_asset_category?: {
1498
+ [key: string]: unknown;
1499
+ };
1500
+ /**
1501
+ * Inspection name
1502
+ */
1503
+ issue_inspection_name?: {
1504
+ [key: string]: unknown;
1505
+ };
1506
+ /**
1507
+ * Checklist category
1508
+ */
1509
+ issue_inspection_category?: {
1510
+ [key: string]: unknown;
1511
+ };
1512
+ /**
1513
+ * Question title
1514
+ */
1515
+ issues_question_title?: {
1516
+ [key: string]: unknown;
1517
+ };
1518
+ /**
1519
+ * Issue title
1520
+ */
1521
+ issue_title: string;
1522
+ /**
1523
+ * Assignee user ID
1524
+ */
1525
+ issue_assignee_id?: {
1526
+ [key: string]: unknown;
1527
+ };
1528
+ /**
1529
+ * Assignee full name
1530
+ */
1531
+ issue_assignee?: {
1532
+ [key: string]: unknown;
1533
+ };
1534
+ /**
1535
+ * Assigned group ID
1536
+ */
1537
+ issue_assigned_group_id?: {
1538
+ [key: string]: unknown;
1539
+ };
1540
+ /**
1541
+ * Assigned group name
1542
+ */
1543
+ issue_assigned_group?: {
1544
+ [key: string]: unknown;
1545
+ };
1546
+ /**
1547
+ * Reported at timestamp
1548
+ */
1549
+ issue_reported_at?: {
1550
+ [key: string]: unknown;
1551
+ };
1552
+ /**
1553
+ * Reference
1554
+ */
1555
+ issue_reference?: {
1556
+ [key: string]: unknown;
1557
+ };
1558
+ /**
1559
+ * Issue status
1560
+ */
1561
+ issue_status: string;
1562
+ /**
1563
+ * Primary action ID
1564
+ */
1565
+ issue_primary_action_id?: {
1566
+ [key: string]: unknown;
1567
+ };
1568
+ /**
1569
+ * Primary action name
1570
+ */
1571
+ issue_primary_action?: {
1572
+ [key: string]: unknown;
1573
+ };
1574
+ /**
1575
+ * Response score
1576
+ */
1577
+ issue_score?: {
1578
+ [key: string]: unknown;
1579
+ };
1580
+ /**
1581
+ * Resolution ID
1582
+ */
1583
+ issue_resolution_id?: {
1584
+ [key: string]: unknown;
1585
+ };
1586
+ /**
1587
+ * Resolution reason
1588
+ */
1589
+ issue_resolution_reason?: {
1590
+ [key: string]: unknown;
1591
+ };
1592
+ /**
1593
+ * First actioned at timestamp
1594
+ */
1595
+ issue_first_actioned_at?: {
1596
+ [key: string]: unknown;
1597
+ };
1598
+ /**
1599
+ * Target completion date
1600
+ */
1601
+ issue_target_completion_date?: {
1602
+ [key: string]: unknown;
1603
+ };
1604
+ /**
1605
+ * Closed at timestamp
1606
+ */
1607
+ issue_closed_at?: {
1608
+ [key: string]: unknown;
1609
+ };
1610
+ /**
1611
+ * Response status
1612
+ */
1613
+ response_status?: {
1614
+ [key: string]: unknown;
1615
+ };
1616
+ /**
1617
+ * Created at timestamp
1618
+ */
1619
+ issue_created_at: string;
1620
+ /**
1621
+ * Created by user public ID (UUID)
1622
+ */
1623
+ issue_created_by_id: string;
1624
+ /**
1625
+ * Created by user full name
1626
+ */
1627
+ issue_created_by?: {
1628
+ [key: string]: unknown;
1629
+ };
1630
+ /**
1631
+ * Modified at timestamp
1632
+ */
1633
+ issue_modified_at: string;
1634
+ /**
1635
+ * Modified by user public ID (UUID)
1636
+ */
1637
+ issue_modified_by_id: string;
1638
+ /**
1639
+ * Modified by user full name
1640
+ */
1641
+ issue_modified_by?: {
1642
+ [key: string]: unknown;
1643
+ };
1644
+ };
1645
+ type ListIssuesResponseDto = {
1646
+ /**
1647
+ * List of issues
1648
+ */
1649
+ data: Array<IssueResponseDto>;
1650
+ /**
1651
+ * Current page number
1652
+ */
1653
+ page: number;
1654
+ /**
1655
+ * Number of results per page
1656
+ */
1657
+ per_page: number;
1658
+ /**
1659
+ * Total number of results
1660
+ */
1661
+ total: number;
1662
+ /**
1663
+ * Total number of pages
1664
+ */
1665
+ total_pages: number;
1666
+ };
1667
+ type UpdateUserPropertyDto = {
1668
+ /**
1669
+ * Property value (can be string, number, or date depending on property type)
1670
+ */
1671
+ value: {
1672
+ [key: string]: unknown;
1673
+ };
1674
+ };
1675
+ type UserPropertyResponseDto = {
1676
+ /**
1677
+ * User property ID. Serialized as a string in public API responses (BigInt-safe).
1678
+ */
1679
+ id: string;
1680
+ /**
1681
+ * User ID. Serialized as a string in public API responses (BigInt-safe).
1682
+ */
1683
+ user_id: string;
1684
+ /**
1685
+ * Property ID (config item ID). Serialized as a string in public API responses (BigInt-safe).
1686
+ */
1687
+ property_id: string;
1688
+ /**
1689
+ * Text value (if property type is Text, Email, or Phone)
1690
+ */
1691
+ text_value: {
1692
+ [key: string]: unknown;
1693
+ } | null;
1694
+ /**
1695
+ * Numeric value (if property type is Decimal)
1696
+ */
1697
+ numeric_value: {
1698
+ [key: string]: unknown;
1699
+ } | null;
1700
+ /**
1701
+ * Date value (if property type is Date)
1702
+ */
1703
+ date_value: {
1704
+ [key: string]: unknown;
1705
+ } | null;
1706
+ /**
1707
+ * Update method
1708
+ */
1709
+ update_method: {
1710
+ [key: string]: unknown;
1711
+ } | null;
1712
+ /**
1713
+ * Created timestamp
1714
+ */
1715
+ created_at: string;
1716
+ /**
1717
+ * Updated timestamp
1718
+ */
1719
+ updated_at: string;
1720
+ };
1721
+ type DeleteUserPropertyResponseDto = {
1722
+ /**
1723
+ * Success message
1724
+ */
1725
+ message: string;
1726
+ /**
1727
+ * Deleted user property ID. Serialized as a string in public API responses (BigInt-safe).
1728
+ */
1729
+ id: string;
1730
+ };
1731
+ type UpdateAssetPropertyDto = {
1732
+ /**
1733
+ * Property value (can be string, number, or date depending on property type)
1734
+ */
1735
+ value: {
1736
+ [key: string]: unknown;
1737
+ };
1738
+ };
1739
+ type AssetPropertyResponseDto = {
1740
+ /**
1741
+ * Asset property ID. Serialized as a string in public API responses (BigInt-safe).
1742
+ */
1743
+ id: string;
1744
+ /**
1745
+ * Asset ID. Serialized as a string in public API responses (BigInt-safe).
1746
+ */
1747
+ asset_id: string;
1748
+ /**
1749
+ * Property ID (config item ID). Serialized as a string in public API responses (BigInt-safe).
1750
+ */
1751
+ property_id: string;
1752
+ /**
1753
+ * Text value (if property type is Text, Email, or Phone)
1754
+ */
1755
+ text_value: {
1756
+ [key: string]: unknown;
1757
+ } | null;
1758
+ /**
1759
+ * Numeric value (if property type is Decimal)
1760
+ */
1761
+ numeric_value: {
1762
+ [key: string]: unknown;
1763
+ } | null;
1764
+ /**
1765
+ * Date value (if property type is Date)
1766
+ */
1767
+ date_value: {
1768
+ [key: string]: unknown;
1769
+ } | null;
1770
+ /**
1771
+ * Update method
1772
+ */
1773
+ update_method: {
1774
+ [key: string]: unknown;
1775
+ } | null;
1776
+ /**
1777
+ * Created timestamp
1778
+ */
1779
+ created_at: string;
1780
+ /**
1781
+ * Updated timestamp
1782
+ */
1783
+ updated_at: string;
1784
+ };
1785
+ type DeleteAssetPropertyResponseDto = {
1786
+ /**
1787
+ * Success message
1788
+ */
1789
+ message: string;
1790
+ /**
1791
+ * Deleted asset property ID. Serialized as a string in public API responses (BigInt-safe).
1792
+ */
1793
+ id: string;
1794
+ };
1795
+ type AssetClassResponseDto = {
1796
+ /**
1797
+ * Asset class public ID (UUID)
1798
+ */
1799
+ public_id: string;
1800
+ /**
1801
+ * Asset class name (make)
1802
+ */
1803
+ asset_class: string;
1804
+ /**
1805
+ * Asset sub-class name (model)
1806
+ */
1807
+ asset_sub_class?: {
1808
+ [key: string]: unknown;
1809
+ };
1810
+ /**
1811
+ * Asset category ID. Serialized as a string in public API responses (BigInt-safe).
1812
+ */
1813
+ asset_category_id?: string | null;
1814
+ /**
1815
+ * Asset category name
1816
+ */
1817
+ asset_category_name?: {
1818
+ [key: string]: unknown;
1819
+ };
1820
+ /**
1821
+ * Asset class photo file path
1822
+ */
1823
+ asset_class_photo_file?: {
1824
+ [key: string]: unknown;
1825
+ };
1826
+ /**
1827
+ * Asset class photo info
1828
+ */
1829
+ asset_class_photo_info?: {
1830
+ [key: string]: unknown;
1831
+ };
1832
+ /**
1833
+ * Whether on-the-fly creation is enabled
1834
+ */
1835
+ on_the_fly_enabled: boolean;
1836
+ /**
1837
+ * Creation timestamp
1838
+ */
1839
+ created_at: string;
1840
+ /**
1841
+ * Created by user public ID
1842
+ */
1843
+ created_by_id: string;
1844
+ /**
1845
+ * Created by user name
1846
+ */
1847
+ created_by_name?: {
1848
+ [key: string]: unknown;
1849
+ };
1850
+ /**
1851
+ * Last update timestamp
1852
+ */
1853
+ updated_at: string;
1854
+ /**
1855
+ * Updated by user public ID
1856
+ */
1857
+ updated_by_id: string;
1858
+ /**
1859
+ * Updated by user name
1860
+ */
1861
+ updated_by_name?: {
1862
+ [key: string]: unknown;
1863
+ };
1864
+ };
1865
+ type AssetClassListResponseDto = {
1866
+ /**
1867
+ * List of asset classes
1868
+ */
1869
+ data: Array<AssetClassResponseDto>;
1870
+ /**
1871
+ * Total number of records
1872
+ */
1873
+ total: number;
1874
+ /**
1875
+ * Current page number
1876
+ */
1877
+ page: number;
1878
+ /**
1879
+ * Items per page
1880
+ */
1881
+ per_page: number;
1882
+ /**
1883
+ * Total number of pages
1884
+ */
1885
+ total_pages: number;
1886
+ };
1887
+ type CreateAssetClassDto = {
1888
+ /**
1889
+ * Asset class name (make)
1890
+ */
1891
+ asset_class: string;
1892
+ /**
1893
+ * Asset sub-class name (model)
1894
+ */
1895
+ asset_sub_class?: string;
1896
+ /**
1897
+ * BigInt as string. Asset category ID (from config_items table)
1898
+ */
1899
+ asset_category_id?: string;
1900
+ /**
1901
+ * Asset class photo file path
1902
+ */
1903
+ asset_class_photo_file?: string;
1904
+ /**
1905
+ * Asset class photo info (JSON string)
1906
+ */
1907
+ asset_class_photo_info?: string;
1908
+ /**
1909
+ * Whether on-the-fly creation is enabled
1910
+ */
1911
+ on_the_fly_enabled?: boolean;
1912
+ };
1913
+ type UpdateAssetClassDto = {
1914
+ /**
1915
+ * Asset class name (make)
1916
+ */
1917
+ asset_class?: string;
1918
+ /**
1919
+ * Asset sub-class name (model)
1920
+ */
1921
+ asset_sub_class?: string;
1922
+ /**
1923
+ * BigInt as string. Asset category ID (from config_items table)
1924
+ */
1925
+ asset_category_id?: string;
1926
+ /**
1927
+ * Asset class photo file path
1928
+ */
1929
+ asset_class_photo_file?: string;
1930
+ /**
1931
+ * Asset class photo info (JSON string)
1932
+ */
1933
+ asset_class_photo_info?: string;
1934
+ /**
1935
+ * Whether on-the-fly creation is enabled
1936
+ */
1937
+ on_the_fly_enabled?: boolean;
1938
+ };
1939
+ type SiteResponseDto = {
1940
+ /**
1941
+ * Site public ID (UUID)
1942
+ */
1943
+ site_public_id: string;
1944
+ /**
1945
+ * Site name
1946
+ */
1947
+ site_name: string;
1948
+ /**
1949
+ * Base language
1950
+ */
1951
+ site_base_language: string;
1952
+ /**
1953
+ * Logo file path
1954
+ */
1955
+ site_logo_file?: {
1956
+ [key: string]: unknown;
1957
+ };
1958
+ /**
1959
+ * Site category name
1960
+ */
1961
+ site_category?: {
1962
+ [key: string]: unknown;
1963
+ };
1964
+ /**
1965
+ * Site category ID. Serialized as a string in public API responses (BigInt-safe).
1966
+ */
1967
+ site_category_id?: string | null;
1968
+ /**
1969
+ * Asset selection method
1970
+ */
1971
+ site_asset_selection_method: string;
1972
+ /**
1973
+ * Asset affix
1974
+ */
1975
+ site_asset_affix?: {
1976
+ [key: string]: unknown;
1977
+ };
1978
+ /**
1979
+ * Asset affix position
1980
+ */
1981
+ site_asset_affix_position?: {
1982
+ [key: string]: unknown;
1983
+ };
1984
+ /**
1985
+ * Created at timestamp
1986
+ */
1987
+ site_created_at: string;
1988
+ /**
1989
+ * Created by user public ID
1990
+ */
1991
+ site_created_by: string;
1992
+ /**
1993
+ * Created by user name
1994
+ */
1995
+ site_created_by_name?: {
1996
+ [key: string]: unknown;
1997
+ };
1998
+ /**
1999
+ * Updated at timestamp
2000
+ */
2001
+ site_updated_at: string;
2002
+ /**
2003
+ * Updated by user public ID
2004
+ */
2005
+ site_updated_by: string;
2006
+ /**
2007
+ * Updated by user name
2008
+ */
2009
+ site_updated_by_name?: {
2010
+ [key: string]: unknown;
2011
+ };
2012
+ };
2013
+ type ListSitesResponseDto = {
2014
+ /**
2015
+ * List of sites
2016
+ */
2017
+ data: Array<SiteResponseDto>;
2018
+ /**
2019
+ * Total number of sites
2020
+ */
2021
+ total: number;
2022
+ /**
2023
+ * Current page
2024
+ */
2025
+ page: number;
2026
+ /**
2027
+ * Items per page
2028
+ */
2029
+ per_page: number;
2030
+ /**
2031
+ * Total number of pages
2032
+ */
2033
+ total_pages: number;
2034
+ };
2035
+ type CreateSiteDto = {
2036
+ /**
2037
+ * Site name
2038
+ */
2039
+ name: string;
2040
+ /**
2041
+ * Base language for the site
2042
+ */
2043
+ base_language?: string;
2044
+ /**
2045
+ * BigInt as string. Site category ID (config_items.id)
2046
+ */
2047
+ category_id?: string;
2048
+ /**
2049
+ * Asset selection method
2050
+ */
2051
+ asset_selection_method?: string;
2052
+ /**
2053
+ * Asset affix
2054
+ */
2055
+ asset_affix?: string;
2056
+ /**
2057
+ * Asset affix position (prefix or suffix)
2058
+ */
2059
+ asset_affix_position?: string;
2060
+ /**
2061
+ * Public ID (UUID) - if not provided, will be generated
2062
+ */
2063
+ public_id?: string;
2064
+ };
2065
+ type UpdateSiteDto = {
2066
+ /**
2067
+ * Site name
2068
+ */
2069
+ name?: string;
2070
+ /**
2071
+ * Base language for the site
2072
+ */
2073
+ base_language?: string;
2074
+ /**
2075
+ * BigInt as string. Site category ID (config_items.id)
2076
+ */
2077
+ category_id?: string;
2078
+ /**
2079
+ * Asset selection method
2080
+ */
2081
+ asset_selection_method?: string;
2082
+ /**
2083
+ * Asset affix
2084
+ */
2085
+ asset_affix?: string;
2086
+ /**
2087
+ * Asset affix position (prefix or suffix)
2088
+ */
2089
+ asset_affix_position?: string;
2090
+ };
2091
+ type DeleteSiteResponseDto = {
2092
+ /**
2093
+ * Success message
2094
+ */
2095
+ message: string;
2096
+ /**
2097
+ * Deleted site public ID
2098
+ */
2099
+ site_public_id: string;
2100
+ };
2101
+ type AssetControllerCreateAssetPublicData = {
2102
+ /**
2103
+ * Asset creation data with entity public IDs
2104
+ */
2105
+ body: PublicCreateAssetDto;
2106
+ headers?: {
2107
+ /**
2108
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
2109
+ */
2110
+ 'Idempotency-Key'?: string;
2111
+ };
2112
+ path?: never;
2113
+ query?: never;
2114
+ url: '/api/v1/public/asset';
2115
+ };
2116
+ type AssetControllerCreateAssetPublicErrors = {
2117
+ /**
2118
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
2119
+ */
2120
+ 400: ApiErrorResponse;
2121
+ /**
2122
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
2123
+ */
2124
+ 401: ApiErrorResponse;
2125
+ /**
2126
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
2127
+ */
2128
+ 403: ApiErrorResponse;
2129
+ /**
2130
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
2131
+ */
2132
+ 404: ApiErrorResponse;
2133
+ /**
2134
+ * The request conflicts with current state. Common cases: a unique business identifier already exists (`conflict`), or an `Idempotency-Key` was reused with a different request body (`idempotency_key_conflict`).
2135
+ */
2136
+ 409: ApiErrorResponse;
2137
+ /**
2138
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
2139
+ */
2140
+ 429: ApiErrorResponse;
2141
+ /**
2142
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
2143
+ */
2144
+ 500: ApiErrorResponse;
2145
+ };
2146
+ type AssetControllerCreateAssetPublicError = AssetControllerCreateAssetPublicErrors[keyof AssetControllerCreateAssetPublicErrors];
2147
+ type AssetControllerCreateAssetPublicResponses = {
2148
+ /**
2149
+ * Asset successfully created
2150
+ */
2151
+ 201: {
2152
+ id?: string;
2153
+ publicId?: string;
2154
+ assetNumber?: string;
2155
+ assetClassId?: string;
2156
+ siteId?: string;
2157
+ companyId?: string;
2158
+ assetPhotoFile?: string | null;
2159
+ assetPhotoInfo?: string | null;
2160
+ lat?: number | null;
2161
+ lng?: number | null;
2162
+ createdById?: string;
2163
+ updatedById?: string;
2164
+ createdAt?: string;
2165
+ updatedAt?: string;
2166
+ deletedAt?: string | null;
2167
+ deletedById?: string | null;
2168
+ };
2169
+ };
2170
+ type AssetControllerCreateAssetPublicResponse = AssetControllerCreateAssetPublicResponses[keyof AssetControllerCreateAssetPublicResponses];
2171
+ type AssetControllerListAssetsData = {
2172
+ body?: never;
2173
+ path?: never;
2174
+ query?: {
2175
+ /**
2176
+ * Page number (1-indexed)
2177
+ */
2178
+ page?: number;
2179
+ /**
2180
+ * Number of items per page
2181
+ */
2182
+ per_page?: number;
2183
+ /**
2184
+ * Field to sort by
2185
+ */
2186
+ sort_by?: 'id' | 'asset_number' | 'created_at' | 'updated_at' | 'lat' | 'lng' | 'company_id' | 'site_id' | 'asset_class_id';
2187
+ /**
2188
+ * Sort direction
2189
+ */
2190
+ direction?: 'asc' | 'desc';
2191
+ /**
2192
+ * Filter by user public_id who created the asset
2193
+ */
2194
+ created_by?: string;
2195
+ /**
2196
+ * Filter by creation date (ISO 8601 format)
2197
+ */
2198
+ created_at?: string;
2199
+ /**
2200
+ * Filter by asset number (exact match)
2201
+ */
2202
+ asset_number?: string;
2203
+ /**
2204
+ * Filter by asset class name
2205
+ */
2206
+ asset_class_name?: string;
2207
+ /**
2208
+ * Filter by site name
2209
+ */
2210
+ site_name?: string;
2211
+ };
2212
+ url: '/api/v1/asset/list';
2213
+ };
2214
+ type AssetControllerListAssetsErrors = {
2215
+ /**
2216
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
2217
+ */
2218
+ 400: ApiErrorResponse;
2219
+ /**
2220
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
2221
+ */
2222
+ 401: ApiErrorResponse;
2223
+ /**
2224
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
2225
+ */
2226
+ 403: ApiErrorResponse;
2227
+ /**
2228
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
2229
+ */
2230
+ 429: ApiErrorResponse;
2231
+ /**
2232
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
2233
+ */
2234
+ 500: ApiErrorResponse;
2235
+ };
2236
+ type AssetControllerListAssetsError = AssetControllerListAssetsErrors[keyof AssetControllerListAssetsErrors];
2237
+ type AssetControllerListAssetsResponses = {
2238
+ /**
2239
+ * List of assets
2240
+ */
2241
+ 200: {
2242
+ data?: Array<{
2243
+ id?: string;
2244
+ publicId?: string;
2245
+ assetNumber?: string;
2246
+ assetClassId?: string;
2247
+ siteId?: string;
2248
+ companyId?: string;
2249
+ assetPhotoFile?: string | null;
2250
+ assetPhotoInfo?: string | null;
2251
+ lat?: number | null;
2252
+ lng?: number | null;
2253
+ createdById?: string;
2254
+ updatedById?: string;
2255
+ createdAt?: string;
2256
+ updatedAt?: string;
2257
+ deletedAt?: string | null;
2258
+ deletedById?: string | null;
2259
+ }>;
2260
+ pagination?: {
2261
+ page?: number;
2262
+ per_page?: number;
2263
+ total?: number;
2264
+ total_pages?: number;
2265
+ };
2266
+ };
2267
+ };
2268
+ type AssetControllerListAssetsResponse = AssetControllerListAssetsResponses[keyof AssetControllerListAssetsResponses];
2269
+ type AssetControllerGetAssetData = {
2270
+ body?: never;
2271
+ path: {
2272
+ id: string;
2273
+ };
2274
+ query?: never;
2275
+ url: '/api/v1/asset/{id}';
2276
+ };
2277
+ type AssetControllerGetAssetErrors = {
2278
+ /**
2279
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
2280
+ */
2281
+ 401: ApiErrorResponse;
2282
+ /**
2283
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
2284
+ */
2285
+ 403: ApiErrorResponse;
2286
+ /**
2287
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
2288
+ */
2289
+ 404: ApiErrorResponse;
2290
+ /**
2291
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
2292
+ */
2293
+ 429: ApiErrorResponse;
2294
+ /**
2295
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
2296
+ */
2297
+ 500: ApiErrorResponse;
2298
+ };
2299
+ type AssetControllerGetAssetError = AssetControllerGetAssetErrors[keyof AssetControllerGetAssetErrors];
2300
+ type AssetControllerGetAssetResponses = {
2301
+ /**
2302
+ * Asset found
2303
+ */
2304
+ 200: {
2305
+ id?: string;
2306
+ publicId?: string;
2307
+ assetNumber?: string;
2308
+ assetClassId?: string;
2309
+ siteId?: string;
2310
+ companyId?: string;
2311
+ assetPhotoFile?: string | null;
2312
+ assetPhotoInfo?: string | null;
2313
+ lat?: number | null;
2314
+ lng?: number | null;
2315
+ createdById?: string;
2316
+ updatedById?: string;
2317
+ createdAt?: string;
2318
+ updatedAt?: string;
2319
+ deletedAt?: string | null;
2320
+ deletedById?: string | null;
2321
+ };
2322
+ };
2323
+ type AssetControllerGetAssetResponse = AssetControllerGetAssetResponses[keyof AssetControllerGetAssetResponses];
2324
+ type AssetControllerUpdateAssetData = {
2325
+ /**
2326
+ * Asset update data
2327
+ */
2328
+ body: UpdateAssetDto;
2329
+ headers?: {
2330
+ /**
2331
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
2332
+ */
2333
+ 'Idempotency-Key'?: string;
2334
+ };
2335
+ path: {
2336
+ id: string;
2337
+ };
2338
+ query?: never;
2339
+ url: '/api/v1/asset/{id}';
2340
+ };
2341
+ type AssetControllerUpdateAssetErrors = {
2342
+ /**
2343
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
2344
+ */
2345
+ 400: ApiErrorResponse;
2346
+ /**
2347
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
2348
+ */
2349
+ 401: ApiErrorResponse;
2350
+ /**
2351
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
2352
+ */
2353
+ 403: ApiErrorResponse;
2354
+ /**
2355
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
2356
+ */
2357
+ 404: ApiErrorResponse;
2358
+ /**
2359
+ * The request conflicts with current state. Common cases: a unique business identifier already exists (`conflict`), or an `Idempotency-Key` was reused with a different request body (`idempotency_key_conflict`).
2360
+ */
2361
+ 409: ApiErrorResponse;
2362
+ /**
2363
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
2364
+ */
2365
+ 429: ApiErrorResponse;
2366
+ /**
2367
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
2368
+ */
2369
+ 500: ApiErrorResponse;
2370
+ };
2371
+ type AssetControllerUpdateAssetError = AssetControllerUpdateAssetErrors[keyof AssetControllerUpdateAssetErrors];
2372
+ type AssetControllerUpdateAssetResponses = {
2373
+ /**
2374
+ * Asset successfully updated
2375
+ */
2376
+ 200: {
2377
+ id?: string;
2378
+ publicId?: string;
2379
+ assetNumber?: string;
2380
+ assetClassId?: string;
2381
+ siteId?: string;
2382
+ companyId?: string;
2383
+ assetPhotoFile?: string | null;
2384
+ assetPhotoInfo?: string | null;
2385
+ lat?: number | null;
2386
+ lng?: number | null;
2387
+ createdById?: string;
2388
+ updatedById?: string;
2389
+ createdAt?: string;
2390
+ updatedAt?: string;
2391
+ deletedAt?: string | null;
2392
+ deletedById?: string | null;
2393
+ };
2394
+ };
2395
+ type AssetControllerUpdateAssetResponse = AssetControllerUpdateAssetResponses[keyof AssetControllerUpdateAssetResponses];
2396
+ type UserControllerListUsersData = {
2397
+ body?: never;
2398
+ path?: never;
2399
+ query?: {
2400
+ /**
2401
+ * Number of results per page (default: 15)
2402
+ */
2403
+ per_page?: number;
2404
+ /**
2405
+ * Page number (default: 1)
2406
+ */
2407
+ page?: number;
2408
+ /**
2409
+ * Sort direction (default: asc)
2410
+ */
2411
+ direction?: 'asc' | 'desc';
2412
+ /**
2413
+ * Field to sort by
2414
+ */
2415
+ sort?: string;
2416
+ /**
2417
+ * Filter by user public ID
2418
+ */
2419
+ public_id?: string;
2420
+ /**
2421
+ * Filter by first name (partial match)
2422
+ */
2423
+ first_name?: string;
2424
+ /**
2425
+ * Filter by last name (partial match)
2426
+ */
2427
+ last_name?: string;
2428
+ /**
2429
+ * Filter by email (partial match)
2430
+ */
2431
+ email?: string;
2432
+ /**
2433
+ * Filter by employee ID (partial match)
2434
+ */
2435
+ employee_id?: string;
2436
+ /**
2437
+ * Filter by PIN (exact match)
2438
+ */
2439
+ pin?: string;
2440
+ /**
2441
+ * Filter by contact number (partial match)
2442
+ */
2443
+ contact_number?: string;
2444
+ /**
2445
+ * Filter by last login date
2446
+ */
2447
+ last_login_at?: string;
2448
+ /**
2449
+ * Filter by creation date
2450
+ */
2451
+ created_at?: string;
2452
+ /**
2453
+ * Filter by creator public ID (UUID)
2454
+ */
2455
+ created_by?: string;
2456
+ };
2457
+ url: '/api/v1/user/list';
2458
+ };
2459
+ type UserControllerListUsersErrors = {
2460
+ /**
2461
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
2462
+ */
2463
+ 400: ApiErrorResponse;
2464
+ /**
2465
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
2466
+ */
2467
+ 401: ApiErrorResponse;
2468
+ /**
2469
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
2470
+ */
2471
+ 403: ApiErrorResponse;
2472
+ /**
2473
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
2474
+ */
2475
+ 429: ApiErrorResponse;
2476
+ /**
2477
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
2478
+ */
2479
+ 500: ApiErrorResponse;
2480
+ };
2481
+ type UserControllerListUsersError = UserControllerListUsersErrors[keyof UserControllerListUsersErrors];
2482
+ type UserControllerListUsersResponses = {
2483
+ /**
2484
+ * List of users with pagination info
2485
+ */
2486
+ 200: {
2487
+ data?: Array<UserResponseDto>;
2488
+ page?: number;
2489
+ per_page?: number;
2490
+ total?: number;
2491
+ total_pages?: number;
2492
+ };
2493
+ };
2494
+ type UserControllerListUsersResponse = UserControllerListUsersResponses[keyof UserControllerListUsersResponses];
2495
+ type UserControllerGetUserData = {
2496
+ body?: never;
2497
+ path: {
2498
+ /**
2499
+ * User public ID (UUID)
2500
+ */
2501
+ id: string;
2502
+ };
2503
+ query?: never;
2504
+ url: '/api/v1/user/{id}';
2505
+ };
2506
+ type UserControllerGetUserErrors = {
2507
+ /**
2508
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
2509
+ */
2510
+ 401: ApiErrorResponse;
2511
+ /**
2512
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
2513
+ */
2514
+ 403: ApiErrorResponse;
2515
+ /**
2516
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
2517
+ */
2518
+ 404: ApiErrorResponse;
2519
+ /**
2520
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
2521
+ */
2522
+ 429: ApiErrorResponse;
2523
+ /**
2524
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
2525
+ */
2526
+ 500: ApiErrorResponse;
2527
+ };
2528
+ type UserControllerGetUserError = UserControllerGetUserErrors[keyof UserControllerGetUserErrors];
2529
+ type UserControllerGetUserResponses = {
2530
+ /**
2531
+ * User details with properties
2532
+ */
2533
+ 200: UserResponseDto;
2534
+ };
2535
+ type UserControllerGetUserResponse = UserControllerGetUserResponses[keyof UserControllerGetUserResponses];
2536
+ type UserControllerUpdateUserData = {
2537
+ body: {
2538
+ /**
2539
+ * User first name
2540
+ */
2541
+ first_name?: string;
2542
+ /**
2543
+ * User last name
2544
+ */
2545
+ last_name?: string;
2546
+ /**
2547
+ * User email address
2548
+ */
2549
+ email?: string;
2550
+ /**
2551
+ * User contact number
2552
+ */
2553
+ contact_number?: string;
2554
+ /**
2555
+ * Profile photo file
2556
+ */
2557
+ photo?: Blob | File;
2558
+ /**
2559
+ * Photo width in pixels (required if photo is uploaded)
2560
+ */
2561
+ photo_width?: number;
2562
+ /**
2563
+ * Photo height in pixels (required if photo is uploaded)
2564
+ */
2565
+ photo_height?: number;
2566
+ };
2567
+ headers?: {
2568
+ /**
2569
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
2570
+ */
2571
+ 'Idempotency-Key'?: string;
2572
+ };
2573
+ path: {
2574
+ /**
2575
+ * User public UUID
2576
+ */
2577
+ id: string;
2578
+ };
2579
+ query?: never;
2580
+ url: '/api/v1/user/{id}';
2581
+ };
2582
+ type UserControllerUpdateUserErrors = {
2583
+ /**
2584
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
2585
+ */
2586
+ 400: ApiErrorResponse;
2587
+ /**
2588
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
2589
+ */
2590
+ 401: ApiErrorResponse;
2591
+ /**
2592
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
2593
+ */
2594
+ 403: ApiErrorResponse;
2595
+ /**
2596
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
2597
+ */
2598
+ 404: ApiErrorResponse;
2599
+ /**
2600
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
2601
+ */
2602
+ 429: ApiErrorResponse;
2603
+ /**
2604
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
2605
+ */
2606
+ 500: ApiErrorResponse;
2607
+ };
2608
+ type UserControllerUpdateUserError = UserControllerUpdateUserErrors[keyof UserControllerUpdateUserErrors];
2609
+ type UserControllerUpdateUserResponses = {
2610
+ /**
2611
+ * User successfully updated
2612
+ */
2613
+ 200: {
2614
+ id?: string;
2615
+ publicId?: string;
2616
+ firstName?: string;
2617
+ lastName?: string;
2618
+ email?: string;
2619
+ preferredLanguage?: string | null;
2620
+ contactNumber?: string | null;
2621
+ profilePhotoFile?: string | null;
2622
+ profilePhotoInfo?: string | null;
2623
+ employeeId?: string | null;
2624
+ pin?: string | null;
2625
+ changePinRequired?: boolean;
2626
+ lastLoginAt?: string | null;
2627
+ loginAttemptCount?: number;
2628
+ loginDisabledAt?: string | null;
2629
+ createdById?: string;
2630
+ updatedById?: string;
2631
+ createdAt?: string;
2632
+ updatedAt?: string;
2633
+ deletedAt?: string | null;
2634
+ deletedById?: string | null;
2635
+ };
2636
+ };
2637
+ type UserControllerUpdateUserResponse = UserControllerUpdateUserResponses[keyof UserControllerUpdateUserResponses];
2638
+ type UserControllerCreateUserData = {
2639
+ body: {
2640
+ first_name: string;
2641
+ last_name: string;
2642
+ /**
2643
+ * Site public UUID
2644
+ */
2645
+ site_id: string;
2646
+ contact_number?: string;
2647
+ email?: string;
2648
+ /**
2649
+ * Up to 12 characters
2650
+ */
2651
+ employee_id?: string;
2652
+ /**
2653
+ * Exactly 4 digits
2654
+ */
2655
+ pin?: string;
2656
+ /**
2657
+ * Profile photo file
2658
+ */
2659
+ photo?: Blob | File;
2660
+ /**
2661
+ * Photo width in pixels (required if photo is uploaded)
2662
+ */
2663
+ photo_width?: number;
2664
+ /**
2665
+ * Photo height in pixels (required if photo is uploaded)
2666
+ */
2667
+ photo_height?: number;
2668
+ /**
2669
+ * Set to true to override name duplicate warning at the same site
2670
+ */
2671
+ force?: boolean;
2672
+ };
2673
+ headers?: {
2674
+ /**
2675
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
2676
+ */
2677
+ 'Idempotency-Key'?: string;
2678
+ };
2679
+ path?: never;
2680
+ query?: never;
2681
+ url: '/api/v1/user';
2682
+ };
2683
+ type UserControllerCreateUserErrors = {
2684
+ /**
2685
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
2686
+ */
2687
+ 400: ApiErrorResponse;
2688
+ /**
2689
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
2690
+ */
2691
+ 401: ApiErrorResponse;
2692
+ /**
2693
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
2694
+ */
2695
+ 403: ApiErrorResponse;
2696
+ /**
2697
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
2698
+ */
2699
+ 404: ApiErrorResponse;
2700
+ /**
2701
+ * The request conflicts with current state. Common cases: a unique business identifier already exists (`conflict`), or an `Idempotency-Key` was reused with a different request body (`idempotency_key_conflict`).
2702
+ */
2703
+ 409: ApiErrorResponse;
2704
+ /**
2705
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
2706
+ */
2707
+ 429: ApiErrorResponse;
2708
+ /**
2709
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
2710
+ */
2711
+ 500: ApiErrorResponse;
2712
+ };
2713
+ type UserControllerCreateUserError = UserControllerCreateUserErrors[keyof UserControllerCreateUserErrors];
2714
+ type UserControllerCreateUserResponses = {
2715
+ /**
2716
+ * User successfully created with associated relationships (user, user_site, user_role)
2717
+ */
2718
+ 201: {
2719
+ /**
2720
+ * Created user entity
2721
+ */
2722
+ user?: {
2723
+ id?: string;
2724
+ publicId?: string;
2725
+ firstName?: string;
2726
+ lastName?: string;
2727
+ email?: string;
2728
+ preferredLanguage?: string | null;
2729
+ contactNumber?: string | null;
2730
+ profilePhotoFile?: string | null;
2731
+ profilePhotoInfo?: string | null;
2732
+ employeeId?: string | null;
2733
+ pin?: string | null;
2734
+ changePinRequired?: boolean;
2735
+ lastLoginAt?: string | null;
2736
+ loginAttemptCount?: number;
2737
+ loginDisabledAt?: string | null;
2738
+ createdById?: string;
2739
+ updatedById?: string;
2740
+ createdAt?: string;
2741
+ updatedAt?: string;
2742
+ deletedAt?: string | null;
2743
+ deletedById?: string | null;
2744
+ };
2745
+ /**
2746
+ * User-site relationship entity
2747
+ */
2748
+ userSite?: {
2749
+ id?: string;
2750
+ userId?: string;
2751
+ siteId?: string;
2752
+ companyId?: string;
2753
+ createdById?: string;
2754
+ updatedById?: string;
2755
+ createdAt?: string;
2756
+ updatedAt?: string;
2757
+ deletedAt?: string | null;
2758
+ deletedById?: string | null;
2759
+ };
2760
+ /**
2761
+ * User role assignment entity (defaults to viewer role, id=5)
2762
+ */
2763
+ userRole?: {
2764
+ id?: string;
2765
+ userId?: string;
2766
+ companyId?: string;
2767
+ roleId?: string;
2768
+ assignedById?: string;
2769
+ assignedAt?: string;
2770
+ expiresAt?: string | null;
2771
+ createdById?: string;
2772
+ updatedById?: string;
2773
+ createdAt?: string;
2774
+ updatedAt?: string;
2775
+ deletedAt?: string | null;
2776
+ deletedById?: string | null;
2777
+ };
2778
+ };
2779
+ };
2780
+ type UserControllerCreateUserResponse = UserControllerCreateUserResponses[keyof UserControllerCreateUserResponses];
2781
+ type InspectionControllerListInspectionsData = {
2782
+ body?: never;
2783
+ path?: never;
2784
+ query?: {
2785
+ /**
2786
+ * Number of results per page (default: 15)
2787
+ */
2788
+ per_page?: number;
2789
+ /**
2790
+ * Page number (default: 1)
2791
+ */
2792
+ page?: number;
2793
+ /**
2794
+ * Sort direction (default: asc)
2795
+ */
2796
+ direction?: 'asc' | 'desc';
2797
+ /**
2798
+ * Field to sort by
2799
+ */
2800
+ sort?: string;
2801
+ /**
2802
+ * Filter by inspection public_id (UUID)
2803
+ */
2804
+ inspection_id?: string;
2805
+ /**
2806
+ * Filter by site name
2807
+ */
2808
+ inspection_site_name?: string;
2809
+ /**
2810
+ * Filter by site public_id (UUID)
2811
+ */
2812
+ inspection_site_id?: string;
2813
+ /**
2814
+ * Filter by asset number
2815
+ */
2816
+ inspection_asset_number?: string;
2817
+ /**
2818
+ * Filter by asset public_id (UUID)
2819
+ */
2820
+ inspection_asset_id?: string;
2821
+ /**
2822
+ * Filter by checklist name
2823
+ */
2824
+ inspection_checklist_name?: string;
2825
+ /**
2826
+ * Filter by checklist public_id (UUID)
2827
+ */
2828
+ inspection_checklist_id?: string;
2829
+ /**
2830
+ * Filter by checklist category name
2831
+ */
2832
+ inspection_checklist_category?: string;
2833
+ /**
2834
+ * Filter by checklist category public_id (UUID)
2835
+ */
2836
+ inspection_checklist_category_id?: string;
2837
+ /**
2838
+ * Filter by submitted user public_id (UUID)
2839
+ */
2840
+ inspection_submitted_user_id?: string;
2841
+ /**
2842
+ * Filter by subject user public_id (UUID)
2843
+ */
2844
+ inspection_subject_user_id?: string;
2845
+ /**
2846
+ * BigInt as string. IDs are stringified at the serialization boundary.
2847
+ */
2848
+ inspection_target_project_id?: string;
2849
+ /**
2850
+ * Filter by device name
2851
+ */
2852
+ inspection_device_name?: string;
2853
+ /**
2854
+ * Filter by device public_id (UUID)
2855
+ */
2856
+ inspection_device_id?: string;
2857
+ /**
2858
+ * Filter by date submitted from (inclusive)
2859
+ */
2860
+ inspection_date_submitted_from?: string;
2861
+ /**
2862
+ * Filter by date submitted to (inclusive)
2863
+ */
2864
+ inspection_date_submitted_to?: string;
2865
+ /**
2866
+ * Filter by date received from (inclusive)
2867
+ */
2868
+ inspection_date_received_from?: string;
2869
+ /**
2870
+ * Filter by date received to (inclusive)
2871
+ */
2872
+ inspection_date_received_to?: string;
2873
+ };
2874
+ url: '/api/v1/public/inspection/list';
2875
+ };
2876
+ type InspectionControllerListInspectionsErrors = {
2877
+ /**
2878
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
2879
+ */
2880
+ 400: ApiErrorResponse;
2881
+ /**
2882
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
2883
+ */
2884
+ 401: ApiErrorResponse;
2885
+ /**
2886
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
2887
+ */
2888
+ 403: ApiErrorResponse;
2889
+ /**
2890
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
2891
+ */
2892
+ 429: ApiErrorResponse;
2893
+ /**
2894
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
2895
+ */
2896
+ 500: ApiErrorResponse;
2897
+ };
2898
+ type InspectionControllerListInspectionsError = InspectionControllerListInspectionsErrors[keyof InspectionControllerListInspectionsErrors];
2899
+ type InspectionControllerListInspectionsResponses = {
2900
+ /**
2901
+ * List of inspections with pagination info
2902
+ */
2903
+ 200: ListInspectionsResponseDto;
2904
+ };
2905
+ type InspectionControllerListInspectionsResponse = InspectionControllerListInspectionsResponses[keyof InspectionControllerListInspectionsResponses];
2906
+ type InspectionControllerSubmitInspectionPublicData = {
2907
+ /**
2908
+ * Complete inspection data with nested structure
2909
+ */
2910
+ body: SubmitInspectionDto;
2911
+ headers?: {
2912
+ /**
2913
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
2914
+ */
2915
+ 'Idempotency-Key'?: string;
2916
+ };
2917
+ path?: never;
2918
+ query?: never;
2919
+ url: '/api/v1/public/inspection/submit';
2920
+ };
2921
+ type InspectionControllerSubmitInspectionPublicErrors = {
2922
+ /**
2923
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
2924
+ */
2925
+ 400: ApiErrorResponse;
2926
+ /**
2927
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
2928
+ */
2929
+ 401: ApiErrorResponse;
2930
+ /**
2931
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
2932
+ */
2933
+ 403: ApiErrorResponse;
2934
+ /**
2935
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
2936
+ */
2937
+ 404: ApiErrorResponse;
2938
+ /**
2939
+ * The request conflicts with current state. Common cases: a unique business identifier already exists (`conflict`), or an `Idempotency-Key` was reused with a different request body (`idempotency_key_conflict`).
2940
+ */
2941
+ 409: ApiErrorResponse;
2942
+ /**
2943
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
2944
+ */
2945
+ 429: ApiErrorResponse;
2946
+ /**
2947
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
2948
+ */
2949
+ 500: ApiErrorResponse;
2950
+ };
2951
+ type InspectionControllerSubmitInspectionPublicError = InspectionControllerSubmitInspectionPublicErrors[keyof InspectionControllerSubmitInspectionPublicErrors];
2952
+ type InspectionControllerSubmitInspectionPublicResponses = {
2953
+ /**
2954
+ * Inspection successfully submitted
2955
+ */
2956
+ 201: {
2957
+ success?: boolean;
2958
+ inspection_public_id?: string;
2959
+ /**
2960
+ * BigInt-safe stringified ID of the created inspection.
2961
+ */
2962
+ inspection_id?: string;
2963
+ };
2964
+ };
2965
+ type InspectionControllerSubmitInspectionPublicResponse = InspectionControllerSubmitInspectionPublicResponses[keyof InspectionControllerSubmitInspectionPublicResponses];
2966
+ type IssueControllerListIssuesData = {
2967
+ body?: never;
2968
+ path?: never;
2969
+ query?: {
2970
+ /**
2971
+ * Number of results per page (default: 15)
2972
+ */
2973
+ per_page?: number;
2974
+ /**
2975
+ * Page number (default: 1)
2976
+ */
2977
+ page?: number;
2978
+ /**
2979
+ * Sort direction (default: asc)
2980
+ */
2981
+ direction?: 'asc' | 'desc';
2982
+ /**
2983
+ * Field to sort by
2984
+ */
2985
+ sort?: string;
2986
+ /**
2987
+ * Filter by asset number (equipment unit_number)
2988
+ */
2989
+ asset_number?: string;
2990
+ /**
2991
+ * Filter by asset public ID (UUID)
2992
+ */
2993
+ asset_id?: string;
2994
+ /**
2995
+ * Filter by raised user public ID (UUID)
2996
+ */
2997
+ raised_user_id?: string;
2998
+ /**
2999
+ * Filter by modified user public ID (UUID)
3000
+ */
3001
+ modified_user_id?: string;
3002
+ /**
3003
+ * Filter by assigned user public ID (UUID)
3004
+ */
3005
+ assigned_user?: string;
3006
+ /**
3007
+ * Filter by date reported
3008
+ */
3009
+ date_reported?: string;
3010
+ /**
3011
+ * Filter by issue status
3012
+ */
3013
+ issue_status?: string;
3014
+ /**
3015
+ * Filter by date closed
3016
+ */
3017
+ date_closed?: string;
3018
+ /**
3019
+ * Filter by issue number (company_issue_number)
3020
+ */
3021
+ issue_number?: string;
3022
+ /**
3023
+ * Filter by issue public ID (UUID)
3024
+ */
3025
+ issue_id?: string;
3026
+ };
3027
+ url: '/api/v1/public/issue/list';
3028
+ };
3029
+ type IssueControllerListIssuesErrors = {
3030
+ /**
3031
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
3032
+ */
3033
+ 400: ApiErrorResponse;
3034
+ /**
3035
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3036
+ */
3037
+ 401: ApiErrorResponse;
3038
+ /**
3039
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3040
+ */
3041
+ 403: ApiErrorResponse;
3042
+ /**
3043
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3044
+ */
3045
+ 429: ApiErrorResponse;
3046
+ /**
3047
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3048
+ */
3049
+ 500: ApiErrorResponse;
3050
+ };
3051
+ type IssueControllerListIssuesError = IssueControllerListIssuesErrors[keyof IssueControllerListIssuesErrors];
3052
+ type IssueControllerListIssuesResponses = {
3053
+ /**
3054
+ * List of issues with pagination info
3055
+ */
3056
+ 200: ListIssuesResponseDto;
3057
+ };
3058
+ type IssueControllerListIssuesResponse = IssueControllerListIssuesResponses[keyof IssueControllerListIssuesResponses];
3059
+ type IssueControllerGetIssuePublicData = {
3060
+ body?: never;
3061
+ path: {
3062
+ /**
3063
+ * Issue public ID (UUID)
3064
+ */
3065
+ public_id: string;
3066
+ };
3067
+ query?: never;
3068
+ url: '/api/v1/public/issue/{public_id}';
3069
+ };
3070
+ type IssueControllerGetIssuePublicErrors = {
3071
+ /**
3072
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3073
+ */
3074
+ 401: ApiErrorResponse;
3075
+ /**
3076
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3077
+ */
3078
+ 403: ApiErrorResponse;
3079
+ /**
3080
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
3081
+ */
3082
+ 404: ApiErrorResponse;
3083
+ /**
3084
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3085
+ */
3086
+ 429: ApiErrorResponse;
3087
+ /**
3088
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3089
+ */
3090
+ 500: ApiErrorResponse;
3091
+ };
3092
+ type IssueControllerGetIssuePublicError = IssueControllerGetIssuePublicErrors[keyof IssueControllerGetIssuePublicErrors];
3093
+ type IssueControllerGetIssuePublicResponses = {
3094
+ /**
3095
+ * Issue details
3096
+ */
3097
+ 200: IssueResponseDto;
3098
+ };
3099
+ type IssueControllerGetIssuePublicResponse = IssueControllerGetIssuePublicResponses[keyof IssueControllerGetIssuePublicResponses];
3100
+ type IssueControllerUpdateIssuePublicData = {
3101
+ /**
3102
+ * Issue update data
3103
+ */
3104
+ body: UpdateIssueDto;
3105
+ headers?: {
3106
+ /**
3107
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
3108
+ */
3109
+ 'Idempotency-Key'?: string;
3110
+ };
3111
+ path: {
3112
+ /**
3113
+ * Issue public ID (UUID)
3114
+ */
3115
+ public_id: string;
3116
+ };
3117
+ query?: never;
3118
+ url: '/api/v1/public/issue/{public_id}';
3119
+ };
3120
+ type IssueControllerUpdateIssuePublicErrors = {
3121
+ /**
3122
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
3123
+ */
3124
+ 400: ApiErrorResponse;
3125
+ /**
3126
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3127
+ */
3128
+ 401: ApiErrorResponse;
3129
+ /**
3130
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3131
+ */
3132
+ 403: ApiErrorResponse;
3133
+ /**
3134
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
3135
+ */
3136
+ 404: ApiErrorResponse;
3137
+ /**
3138
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3139
+ */
3140
+ 429: ApiErrorResponse;
3141
+ /**
3142
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3143
+ */
3144
+ 500: ApiErrorResponse;
3145
+ };
3146
+ type IssueControllerUpdateIssuePublicError = IssueControllerUpdateIssuePublicErrors[keyof IssueControllerUpdateIssuePublicErrors];
3147
+ type IssueControllerUpdateIssuePublicResponses = {
3148
+ /**
3149
+ * Issue updated successfully
3150
+ */
3151
+ 200: {
3152
+ success?: boolean;
3153
+ /**
3154
+ * BigInt-safe stringified ID of the updated issue.
3155
+ */
3156
+ issue_id?: string;
3157
+ };
3158
+ };
3159
+ type IssueControllerUpdateIssuePublicResponse = IssueControllerUpdateIssuePublicResponses[keyof IssueControllerUpdateIssuePublicResponses];
3160
+ type IssueControllerGetIssueHistoryPublicData = {
3161
+ body?: never;
3162
+ path: {
3163
+ /**
3164
+ * Issue public ID (UUID)
3165
+ */
3166
+ public_id: string;
3167
+ };
3168
+ query?: never;
3169
+ url: '/api/v1/public/issue/{public_id}/history';
3170
+ };
3171
+ type IssueControllerGetIssueHistoryPublicErrors = {
3172
+ /**
3173
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3174
+ */
3175
+ 401: ApiErrorResponse;
3176
+ /**
3177
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3178
+ */
3179
+ 403: ApiErrorResponse;
3180
+ /**
3181
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
3182
+ */
3183
+ 404: ApiErrorResponse;
3184
+ /**
3185
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3186
+ */
3187
+ 429: ApiErrorResponse;
3188
+ /**
3189
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3190
+ */
3191
+ 500: ApiErrorResponse;
3192
+ };
3193
+ type IssueControllerGetIssueHistoryPublicError = IssueControllerGetIssueHistoryPublicErrors[keyof IssueControllerGetIssueHistoryPublicErrors];
3194
+ type IssueControllerGetIssueHistoryPublicResponses = {
3195
+ /**
3196
+ * Issue history entries
3197
+ */
3198
+ 200: IssueHistoryResponseDto;
3199
+ };
3200
+ type IssueControllerGetIssueHistoryPublicResponse = IssueControllerGetIssueHistoryPublicResponses[keyof IssueControllerGetIssueHistoryPublicResponses];
3201
+ type UserPropertyControllerDeleteUserPropertyData = {
3202
+ body?: never;
3203
+ path: {
3204
+ /**
3205
+ * User property ID. On public responses this is returned as a string.
3206
+ */
3207
+ id: string;
3208
+ };
3209
+ query?: never;
3210
+ url: '/api/v1/user-property/{id}';
3211
+ };
3212
+ type UserPropertyControllerDeleteUserPropertyErrors = {
3213
+ /**
3214
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3215
+ */
3216
+ 401: ApiErrorResponse;
3217
+ /**
3218
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3219
+ */
3220
+ 403: ApiErrorResponse;
3221
+ /**
3222
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
3223
+ */
3224
+ 404: ApiErrorResponse;
3225
+ /**
3226
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3227
+ */
3228
+ 429: ApiErrorResponse;
3229
+ /**
3230
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3231
+ */
3232
+ 500: ApiErrorResponse;
3233
+ };
3234
+ type UserPropertyControllerDeleteUserPropertyError = UserPropertyControllerDeleteUserPropertyErrors[keyof UserPropertyControllerDeleteUserPropertyErrors];
3235
+ type UserPropertyControllerDeleteUserPropertyResponses = {
3236
+ /**
3237
+ * User property successfully deleted
3238
+ */
3239
+ 200: DeleteUserPropertyResponseDto;
3240
+ };
3241
+ type UserPropertyControllerDeleteUserPropertyResponse = UserPropertyControllerDeleteUserPropertyResponses[keyof UserPropertyControllerDeleteUserPropertyResponses];
3242
+ type UserPropertyControllerUpdateUserPropertyData = {
3243
+ /**
3244
+ * User property update data
3245
+ */
3246
+ body: UpdateUserPropertyDto;
3247
+ headers?: {
3248
+ /**
3249
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
3250
+ */
3251
+ 'Idempotency-Key'?: string;
3252
+ };
3253
+ path: {
3254
+ /**
3255
+ * User property ID. On public responses this is returned as a string.
3256
+ */
3257
+ id: string;
3258
+ };
3259
+ query?: never;
3260
+ url: '/api/v1/user-property/{id}';
3261
+ };
3262
+ type UserPropertyControllerUpdateUserPropertyErrors = {
3263
+ /**
3264
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
3265
+ */
3266
+ 400: ApiErrorResponse;
3267
+ /**
3268
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3269
+ */
3270
+ 401: ApiErrorResponse;
3271
+ /**
3272
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3273
+ */
3274
+ 403: ApiErrorResponse;
3275
+ /**
3276
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
3277
+ */
3278
+ 404: ApiErrorResponse;
3279
+ /**
3280
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3281
+ */
3282
+ 429: ApiErrorResponse;
3283
+ /**
3284
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3285
+ */
3286
+ 500: ApiErrorResponse;
3287
+ };
3288
+ type UserPropertyControllerUpdateUserPropertyError = UserPropertyControllerUpdateUserPropertyErrors[keyof UserPropertyControllerUpdateUserPropertyErrors];
3289
+ type UserPropertyControllerUpdateUserPropertyResponses = {
3290
+ /**
3291
+ * User property successfully updated
3292
+ */
3293
+ 200: UserPropertyResponseDto;
3294
+ };
3295
+ type UserPropertyControllerUpdateUserPropertyResponse = UserPropertyControllerUpdateUserPropertyResponses[keyof UserPropertyControllerUpdateUserPropertyResponses];
3296
+ type AssetPropertyControllerDeleteAssetPropertyData = {
3297
+ body?: never;
3298
+ path: {
3299
+ /**
3300
+ * Asset property ID. On public responses this is returned as a string.
3301
+ */
3302
+ id: string;
3303
+ };
3304
+ query?: never;
3305
+ url: '/api/v1/asset-property/{id}';
3306
+ };
3307
+ type AssetPropertyControllerDeleteAssetPropertyErrors = {
3308
+ /**
3309
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3310
+ */
3311
+ 401: ApiErrorResponse;
3312
+ /**
3313
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3314
+ */
3315
+ 403: ApiErrorResponse;
3316
+ /**
3317
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
3318
+ */
3319
+ 404: ApiErrorResponse;
3320
+ /**
3321
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3322
+ */
3323
+ 429: ApiErrorResponse;
3324
+ /**
3325
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3326
+ */
3327
+ 500: ApiErrorResponse;
3328
+ };
3329
+ type AssetPropertyControllerDeleteAssetPropertyError = AssetPropertyControllerDeleteAssetPropertyErrors[keyof AssetPropertyControllerDeleteAssetPropertyErrors];
3330
+ type AssetPropertyControllerDeleteAssetPropertyResponses = {
3331
+ /**
3332
+ * Asset property successfully deleted
3333
+ */
3334
+ 200: DeleteAssetPropertyResponseDto;
3335
+ };
3336
+ type AssetPropertyControllerDeleteAssetPropertyResponse = AssetPropertyControllerDeleteAssetPropertyResponses[keyof AssetPropertyControllerDeleteAssetPropertyResponses];
3337
+ type AssetPropertyControllerUpdateAssetPropertyData = {
3338
+ /**
3339
+ * Asset property update data
3340
+ */
3341
+ body: UpdateAssetPropertyDto;
3342
+ headers?: {
3343
+ /**
3344
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
3345
+ */
3346
+ 'Idempotency-Key'?: string;
3347
+ };
3348
+ path: {
3349
+ /**
3350
+ * Asset property ID. On public responses this is returned as a string.
3351
+ */
3352
+ id: string;
3353
+ };
3354
+ query?: never;
3355
+ url: '/api/v1/asset-property/{id}';
3356
+ };
3357
+ type AssetPropertyControllerUpdateAssetPropertyErrors = {
3358
+ /**
3359
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
3360
+ */
3361
+ 400: ApiErrorResponse;
3362
+ /**
3363
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3364
+ */
3365
+ 401: ApiErrorResponse;
3366
+ /**
3367
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3368
+ */
3369
+ 403: ApiErrorResponse;
3370
+ /**
3371
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
3372
+ */
3373
+ 404: ApiErrorResponse;
3374
+ /**
3375
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3376
+ */
3377
+ 429: ApiErrorResponse;
3378
+ /**
3379
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3380
+ */
3381
+ 500: ApiErrorResponse;
3382
+ };
3383
+ type AssetPropertyControllerUpdateAssetPropertyError = AssetPropertyControllerUpdateAssetPropertyErrors[keyof AssetPropertyControllerUpdateAssetPropertyErrors];
3384
+ type AssetPropertyControllerUpdateAssetPropertyResponses = {
3385
+ /**
3386
+ * Asset property successfully updated
3387
+ */
3388
+ 200: AssetPropertyResponseDto;
3389
+ };
3390
+ type AssetPropertyControllerUpdateAssetPropertyResponse = AssetPropertyControllerUpdateAssetPropertyResponses[keyof AssetPropertyControllerUpdateAssetPropertyResponses];
3391
+ type AssetClassControllerGetAssetClassListData = {
3392
+ body?: never;
3393
+ path?: never;
3394
+ query?: {
3395
+ /**
3396
+ * Number of items per page
3397
+ */
3398
+ per_page?: number;
3399
+ /**
3400
+ * Page number
3401
+ */
3402
+ page?: number;
3403
+ /**
3404
+ * Sort direction
3405
+ */
3406
+ direction?: 'asc' | 'desc';
3407
+ /**
3408
+ * Sort field
3409
+ */
3410
+ sort?: string;
3411
+ /**
3412
+ * Filter on the make field of asset classes
3413
+ */
3414
+ asset_class_name?: string;
3415
+ /**
3416
+ * Filter on the model field of asset classes
3417
+ */
3418
+ asset_sub_class_name?: string;
3419
+ /**
3420
+ * Filter on the category name field of asset classes
3421
+ */
3422
+ asset_category?: string;
3423
+ /**
3424
+ * Range filter on the modified field (from date)
3425
+ */
3426
+ date_modified_from?: string;
3427
+ /**
3428
+ * Range filter on the modified field (to date)
3429
+ */
3430
+ date_modified_to?: string;
3431
+ };
3432
+ url: '/api/v1/asset-class/list';
3433
+ };
3434
+ type AssetClassControllerGetAssetClassListErrors = {
3435
+ /**
3436
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
3437
+ */
3438
+ 400: ApiErrorResponse;
3439
+ /**
3440
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3441
+ */
3442
+ 401: ApiErrorResponse;
3443
+ /**
3444
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3445
+ */
3446
+ 403: ApiErrorResponse;
3447
+ /**
3448
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3449
+ */
3450
+ 429: ApiErrorResponse;
3451
+ /**
3452
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3453
+ */
3454
+ 500: ApiErrorResponse;
3455
+ };
3456
+ type AssetClassControllerGetAssetClassListError = AssetClassControllerGetAssetClassListErrors[keyof AssetClassControllerGetAssetClassListErrors];
3457
+ type AssetClassControllerGetAssetClassListResponses = {
3458
+ /**
3459
+ * Paginated list of asset classes
3460
+ */
3461
+ 200: AssetClassListResponseDto;
3462
+ };
3463
+ type AssetClassControllerGetAssetClassListResponse = AssetClassControllerGetAssetClassListResponses[keyof AssetClassControllerGetAssetClassListResponses];
3464
+ type AssetClassControllerCreateAssetClassData = {
3465
+ /**
3466
+ * Asset class creation data
3467
+ */
3468
+ body: CreateAssetClassDto;
3469
+ headers?: {
3470
+ /**
3471
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
3472
+ */
3473
+ 'Idempotency-Key'?: string;
3474
+ };
3475
+ path?: never;
3476
+ query?: never;
3477
+ url: '/api/v1/asset-class';
3478
+ };
3479
+ type AssetClassControllerCreateAssetClassErrors = {
3480
+ /**
3481
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
3482
+ */
3483
+ 400: ApiErrorResponse;
3484
+ /**
3485
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3486
+ */
3487
+ 401: ApiErrorResponse;
3488
+ /**
3489
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3490
+ */
3491
+ 403: ApiErrorResponse;
3492
+ /**
3493
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
3494
+ */
3495
+ 404: ApiErrorResponse;
3496
+ /**
3497
+ * The request conflicts with current state. Common cases: a unique business identifier already exists (`conflict`), or an `Idempotency-Key` was reused with a different request body (`idempotency_key_conflict`).
3498
+ */
3499
+ 409: ApiErrorResponse;
3500
+ /**
3501
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3502
+ */
3503
+ 429: ApiErrorResponse;
3504
+ /**
3505
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3506
+ */
3507
+ 500: ApiErrorResponse;
3508
+ };
3509
+ type AssetClassControllerCreateAssetClassError = AssetClassControllerCreateAssetClassErrors[keyof AssetClassControllerCreateAssetClassErrors];
3510
+ type AssetClassControllerCreateAssetClassResponses = {
3511
+ /**
3512
+ * Asset class successfully created
3513
+ */
3514
+ 201: AssetClassResponseDto;
3515
+ };
3516
+ type AssetClassControllerCreateAssetClassResponse = AssetClassControllerCreateAssetClassResponses[keyof AssetClassControllerCreateAssetClassResponses];
3517
+ type AssetClassControllerUpdateAssetClassData = {
3518
+ /**
3519
+ * Asset class update data
3520
+ */
3521
+ body: UpdateAssetClassDto;
3522
+ headers?: {
3523
+ /**
3524
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
3525
+ */
3526
+ 'Idempotency-Key'?: string;
3527
+ };
3528
+ path: {
3529
+ /**
3530
+ * Asset class public ID (UUID)
3531
+ */
3532
+ id: string;
3533
+ };
3534
+ query?: never;
3535
+ url: '/api/v1/asset-class/{id}';
3536
+ };
3537
+ type AssetClassControllerUpdateAssetClassErrors = {
3538
+ /**
3539
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
3540
+ */
3541
+ 400: ApiErrorResponse;
3542
+ /**
3543
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3544
+ */
3545
+ 401: ApiErrorResponse;
3546
+ /**
3547
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3548
+ */
3549
+ 403: ApiErrorResponse;
3550
+ /**
3551
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
3552
+ */
3553
+ 404: ApiErrorResponse;
3554
+ /**
3555
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3556
+ */
3557
+ 429: ApiErrorResponse;
3558
+ /**
3559
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3560
+ */
3561
+ 500: ApiErrorResponse;
3562
+ };
3563
+ type AssetClassControllerUpdateAssetClassError = AssetClassControllerUpdateAssetClassErrors[keyof AssetClassControllerUpdateAssetClassErrors];
3564
+ type AssetClassControllerUpdateAssetClassResponses = {
3565
+ /**
3566
+ * Asset class successfully updated
3567
+ */
3568
+ 200: AssetClassResponseDto;
3569
+ };
3570
+ type AssetClassControllerUpdateAssetClassResponse = AssetClassControllerUpdateAssetClassResponses[keyof AssetClassControllerUpdateAssetClassResponses];
3571
+ type SiteControllerListSitesData = {
3572
+ body?: never;
3573
+ path?: never;
3574
+ query?: {
3575
+ /**
3576
+ * Number of results per page (default: 15)
3577
+ */
3578
+ per_page?: number;
3579
+ /**
3580
+ * Page number (default: 1)
3581
+ */
3582
+ page?: number;
3583
+ /**
3584
+ * Sort direction (default: asc)
3585
+ */
3586
+ direction?: 'asc' | 'desc';
3587
+ /**
3588
+ * Field to sort by (name, created_at, updated_at, category)
3589
+ */
3590
+ sort?: string;
3591
+ /**
3592
+ * Filter by site name (partial match)
3593
+ */
3594
+ site_name?: string;
3595
+ /**
3596
+ * Filter by site category name
3597
+ */
3598
+ site_category?: string;
3599
+ /**
3600
+ * BigInt as string. IDs are stringified at the serialization boundary.
3601
+ */
3602
+ site_category_id?: string;
3603
+ /**
3604
+ * Return sites modified since the date provided
3605
+ */
3606
+ date_modified_from?: string;
3607
+ /**
3608
+ * Return sites modified to the date provided
3609
+ */
3610
+ date_modified_to?: string;
3611
+ };
3612
+ url: '/api/v1/site/list';
3613
+ };
3614
+ type SiteControllerListSitesErrors = {
3615
+ /**
3616
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
3617
+ */
3618
+ 400: ApiErrorResponse;
3619
+ /**
3620
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3621
+ */
3622
+ 401: ApiErrorResponse;
3623
+ /**
3624
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3625
+ */
3626
+ 403: ApiErrorResponse;
3627
+ /**
3628
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3629
+ */
3630
+ 429: ApiErrorResponse;
3631
+ /**
3632
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3633
+ */
3634
+ 500: ApiErrorResponse;
3635
+ };
3636
+ type SiteControllerListSitesError = SiteControllerListSitesErrors[keyof SiteControllerListSitesErrors];
3637
+ type SiteControllerListSitesResponses = {
3638
+ /**
3639
+ * List of sites with pagination info
3640
+ */
3641
+ 200: ListSitesResponseDto;
3642
+ };
3643
+ type SiteControllerListSitesResponse = SiteControllerListSitesResponses[keyof SiteControllerListSitesResponses];
3644
+ type SiteControllerCreateSiteData = {
3645
+ /**
3646
+ * Site creation data
3647
+ */
3648
+ body: CreateSiteDto;
3649
+ headers?: {
3650
+ /**
3651
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
3652
+ */
3653
+ 'Idempotency-Key'?: string;
3654
+ };
3655
+ path?: never;
3656
+ query?: never;
3657
+ url: '/api/v1/site';
3658
+ };
3659
+ type SiteControllerCreateSiteErrors = {
3660
+ /**
3661
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
3662
+ */
3663
+ 400: ApiErrorResponse;
3664
+ /**
3665
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3666
+ */
3667
+ 401: ApiErrorResponse;
3668
+ /**
3669
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3670
+ */
3671
+ 403: ApiErrorResponse;
3672
+ /**
3673
+ * The request conflicts with current state. Common cases: a unique business identifier already exists (`conflict`), or an `Idempotency-Key` was reused with a different request body (`idempotency_key_conflict`).
3674
+ */
3675
+ 409: ApiErrorResponse;
3676
+ /**
3677
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3678
+ */
3679
+ 429: ApiErrorResponse;
3680
+ /**
3681
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3682
+ */
3683
+ 500: ApiErrorResponse;
3684
+ };
3685
+ type SiteControllerCreateSiteError = SiteControllerCreateSiteErrors[keyof SiteControllerCreateSiteErrors];
3686
+ type SiteControllerCreateSiteResponses = {
3687
+ /**
3688
+ * Site successfully created
3689
+ */
3690
+ 201: SiteResponseDto;
3691
+ };
3692
+ type SiteControllerCreateSiteResponse = SiteControllerCreateSiteResponses[keyof SiteControllerCreateSiteResponses];
3693
+ type SiteControllerDeleteSiteData = {
3694
+ body?: never;
3695
+ path: {
3696
+ /**
3697
+ * Site public ID (UUID)
3698
+ */
3699
+ id: string;
3700
+ };
3701
+ query?: never;
3702
+ url: '/api/v1/site/{id}';
3703
+ };
3704
+ type SiteControllerDeleteSiteErrors = {
3705
+ /**
3706
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3707
+ */
3708
+ 401: ApiErrorResponse;
3709
+ /**
3710
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3711
+ */
3712
+ 403: ApiErrorResponse;
3713
+ /**
3714
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
3715
+ */
3716
+ 404: ApiErrorResponse;
3717
+ /**
3718
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3719
+ */
3720
+ 429: ApiErrorResponse;
3721
+ /**
3722
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3723
+ */
3724
+ 500: ApiErrorResponse;
3725
+ };
3726
+ type SiteControllerDeleteSiteError = SiteControllerDeleteSiteErrors[keyof SiteControllerDeleteSiteErrors];
3727
+ type SiteControllerDeleteSiteResponses = {
3728
+ /**
3729
+ * Site successfully deleted
3730
+ */
3731
+ 200: DeleteSiteResponseDto;
3732
+ };
3733
+ type SiteControllerDeleteSiteResponse = SiteControllerDeleteSiteResponses[keyof SiteControllerDeleteSiteResponses];
3734
+ type SiteControllerUpdateSiteData = {
3735
+ /**
3736
+ * Site update data
3737
+ */
3738
+ body: UpdateSiteDto;
3739
+ headers?: {
3740
+ /**
3741
+ * Opaque client-generated key (any string up to 255 chars, ULID or UUID recommended) that makes this POST/PATCH safe to retry. The server stores the first successful response under this key for 24 hours; retries with the same key replay the stored response and set `Idempotent-Replayed: true`. Reusing the key with a different body returns `409 idempotency_key_conflict`. Omit on read-only GETs — they are already idempotent.
3742
+ */
3743
+ 'Idempotency-Key'?: string;
3744
+ };
3745
+ path: {
3746
+ /**
3747
+ * Site public ID (UUID)
3748
+ */
3749
+ id: string;
3750
+ };
3751
+ query?: never;
3752
+ url: '/api/v1/site/{id}';
3753
+ };
3754
+ type SiteControllerUpdateSiteErrors = {
3755
+ /**
3756
+ * Validation failed or the request was malformed. The response body will use `code: validation_error` (with `details[]` populated when the failure can be pinpointed to specific fields) or the more generic `code: bad_request`.
3757
+ */
3758
+ 400: ApiErrorResponse;
3759
+ /**
3760
+ * The Bearer token is missing, malformed, or no longer valid. Verify the `Authorization` header is set to `Bearer wk_…` and that the key has not been revoked or rotated out.
3761
+ */
3762
+ 401: ApiErrorResponse;
3763
+ /**
3764
+ * The Bearer token authenticated successfully but cannot perform this action. Two distinct codes share this status: `forbidden` (missing permission scope) and `ip_not_allowed` (source IP not in the API key's allowlist).
3765
+ */
3766
+ 403: ApiErrorResponse;
3767
+ /**
3768
+ * No resource was found at the requested location, or a referenced resource (`publicId` in the body) doesn't exist or is not visible to the calling company.
3769
+ */
3770
+ 404: ApiErrorResponse;
3771
+ /**
3772
+ * Rate limit exceeded for this API key. Inspect `X-RateLimit-Reset` and `Retry-After` to find out when the window resets.
3773
+ */
3774
+ 429: ApiErrorResponse;
3775
+ /**
3776
+ * Something went wrong on our side. The `request_id` field in the response body matches the entry in our logs — include it when reporting the issue.
3777
+ */
3778
+ 500: ApiErrorResponse;
3779
+ };
3780
+ type SiteControllerUpdateSiteError = SiteControllerUpdateSiteErrors[keyof SiteControllerUpdateSiteErrors];
3781
+ type SiteControllerUpdateSiteResponses = {
3782
+ /**
3783
+ * Site successfully updated
3784
+ */
3785
+ 200: SiteResponseDto;
3786
+ };
3787
+ type SiteControllerUpdateSiteResponse = SiteControllerUpdateSiteResponses[keyof SiteControllerUpdateSiteResponses];
3788
+ type ClientOptions = {
3789
+ baseUrl: 'https://lrfq4vihdi.execute-api.ap-southeast-2.amazonaws.com' | (string & {});
3790
+ };
3791
+
3792
+ type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options$1<TData, ThrowOnError> & {
3793
+ /**
3794
+ * You can provide a client instance returned by `createClient()` instead of
3795
+ * individual options. This might be also useful if you want to implement a
3796
+ * custom client.
3797
+ */
3798
+ client?: Client;
3799
+ /**
3800
+ * You can pass arbitrary values through the `meta` object. This can be
3801
+ * used to access values that aren't defined as part of the SDK function.
3802
+ */
3803
+ meta?: Record<string, unknown>;
3804
+ };
3805
+ /**
3806
+ * Create a new asset (Public API)
3807
+ * Creates a new asset entry in the database via public API. Requires Bearer token authentication. Validates all entity references by their public_id and ensures they belong to the authenticated company. Supports `Idempotency-Key` for safe retries.
3808
+ */
3809
+ declare const assetControllerCreateAssetPublic: <ThrowOnError extends boolean = false>(options: Options<AssetControllerCreateAssetPublicData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<{
3810
+ id?: string;
3811
+ publicId?: string;
3812
+ assetNumber?: string;
3813
+ assetClassId?: string;
3814
+ siteId?: string;
3815
+ companyId?: string;
3816
+ assetPhotoFile?: string | null;
3817
+ assetPhotoInfo?: string | null;
3818
+ lat?: number | null;
3819
+ lng?: number | null;
3820
+ createdById?: string;
3821
+ updatedById?: string;
3822
+ createdAt?: string;
3823
+ updatedAt?: string;
3824
+ deletedAt?: string | null;
3825
+ deletedById?: string | null;
3826
+ }, ApiErrorResponse, ThrowOnError>;
3827
+ /**
3828
+ * List assets with filters
3829
+ * Returns a paginated list of assets. Supports filtering by asset_class_name, created_by (user public_id), asset_number, and site_name. Also supports sorting and pagination. Requires Bearer token authentication.
3830
+ */
3831
+ declare const assetControllerListAssets: <ThrowOnError extends boolean = false>(options?: Options<AssetControllerListAssetsData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<{
3832
+ data?: Array<{
3833
+ id?: string;
3834
+ publicId?: string;
3835
+ assetNumber?: string;
3836
+ assetClassId?: string;
3837
+ siteId?: string;
3838
+ companyId?: string;
3839
+ assetPhotoFile?: string | null;
3840
+ assetPhotoInfo?: string | null;
3841
+ lat?: number | null;
3842
+ lng?: number | null;
3843
+ createdById?: string;
3844
+ updatedById?: string;
3845
+ createdAt?: string;
3846
+ updatedAt?: string;
3847
+ deletedAt?: string | null;
3848
+ deletedById?: string | null;
3849
+ }>;
3850
+ pagination?: {
3851
+ page?: number;
3852
+ per_page?: number;
3853
+ total?: number;
3854
+ total_pages?: number;
3855
+ };
3856
+ }, ApiErrorResponse, ThrowOnError>;
3857
+ /**
3858
+ * Get asset by public ID
3859
+ * Retrieves an asset by its public_id. Returns complete asset information. Requires Bearer token authentication.
3860
+ */
3861
+ declare const assetControllerGetAsset: <ThrowOnError extends boolean = false>(options: Options<AssetControllerGetAssetData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<{
3862
+ id?: string;
3863
+ publicId?: string;
3864
+ assetNumber?: string;
3865
+ assetClassId?: string;
3866
+ siteId?: string;
3867
+ companyId?: string;
3868
+ assetPhotoFile?: string | null;
3869
+ assetPhotoInfo?: string | null;
3870
+ lat?: number | null;
3871
+ lng?: number | null;
3872
+ createdById?: string;
3873
+ updatedById?: string;
3874
+ createdAt?: string;
3875
+ updatedAt?: string;
3876
+ deletedAt?: string | null;
3877
+ deletedById?: string | null;
3878
+ }, ApiErrorResponse, ThrowOnError>;
3879
+ /**
3880
+ * Update asset by public ID
3881
+ * Partially updates an asset by its public_id. All fields are optional. Requires Bearer token authentication with asset:update permission. Validates asset_class and site_id references by public_id and ensures they belong to the same company as the asset. Supports `Idempotency-Key` for safe retries.
3882
+ */
3883
+ declare const assetControllerUpdateAsset: <ThrowOnError extends boolean = false>(options: Options<AssetControllerUpdateAssetData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<{
3884
+ id?: string;
3885
+ publicId?: string;
3886
+ assetNumber?: string;
3887
+ assetClassId?: string;
3888
+ siteId?: string;
3889
+ companyId?: string;
3890
+ assetPhotoFile?: string | null;
3891
+ assetPhotoInfo?: string | null;
3892
+ lat?: number | null;
3893
+ lng?: number | null;
3894
+ createdById?: string;
3895
+ updatedById?: string;
3896
+ createdAt?: string;
3897
+ updatedAt?: string;
3898
+ deletedAt?: string | null;
3899
+ deletedById?: string | null;
3900
+ }, ApiErrorResponse, ThrowOnError>;
3901
+ /**
3902
+ * List users
3903
+ * Returns a paginated list of users for the authenticated company. Supports filtering by various fields and sorting. Requires Bearer token authentication with user:list permission.
3904
+ */
3905
+ declare const userControllerListUsers: <ThrowOnError extends boolean = false>(options?: Options<UserControllerListUsersData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<{
3906
+ data?: Array<UserResponseDto>;
3907
+ page?: number;
3908
+ per_page?: number;
3909
+ total?: number;
3910
+ total_pages?: number;
3911
+ }, ApiErrorResponse, ThrowOnError>;
3912
+ /**
3913
+ * Get user by public ID
3914
+ * Returns detailed information about a specific user including their properties. Requires Bearer token authentication with user:read permission.
3915
+ */
3916
+ declare const userControllerGetUser: <ThrowOnError extends boolean = false>(options: Options<UserControllerGetUserData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<UserResponseDto, ApiErrorResponse, ThrowOnError>;
3917
+ /**
3918
+ * Update user information
3919
+ * Updates user fields including first name, last name, email, contact number, and profile photo. Photo is uploaded to S3 at :company_id/user-profile-photos/:filename. Requires Bearer token authentication with user:update permission for public API. Supports `Idempotency-Key` for safe retries.
3920
+ */
3921
+ declare const userControllerUpdateUser: <ThrowOnError extends boolean = false>(options: Options<UserControllerUpdateUserData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<{
3922
+ id?: string;
3923
+ publicId?: string;
3924
+ firstName?: string;
3925
+ lastName?: string;
3926
+ email?: string;
3927
+ preferredLanguage?: string | null;
3928
+ contactNumber?: string | null;
3929
+ profilePhotoFile?: string | null;
3930
+ profilePhotoInfo?: string | null;
3931
+ employeeId?: string | null;
3932
+ pin?: string | null;
3933
+ changePinRequired?: boolean;
3934
+ lastLoginAt?: string | null;
3935
+ loginAttemptCount?: number;
3936
+ loginDisabledAt?: string | null;
3937
+ createdById?: string;
3938
+ updatedById?: string;
3939
+ createdAt?: string;
3940
+ updatedAt?: string;
3941
+ deletedAt?: string | null;
3942
+ deletedById?: string | null;
3943
+ }, ApiErrorResponse, ThrowOnError>;
3944
+ /**
3945
+ * Create a new user
3946
+ * Creates a new user entry in the database along with associated relationships (user_site, user_company, user_role). Validates all entity references by their public_id. Supports optional profile photo upload. Duplicate detection: returns 409 if phone number already exists in the company (hard block) or if same name exists at the site (soft block, override with force=true). Requires Bearer token authentication with user:create permission. Supports `Idempotency-Key` for safe retries.
3947
+ */
3948
+ declare const userControllerCreateUser: <ThrowOnError extends boolean = false>(options: Options<UserControllerCreateUserData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<{
3949
+ user?: {
3950
+ id?: string;
3951
+ publicId?: string;
3952
+ firstName?: string;
3953
+ lastName?: string;
3954
+ email?: string;
3955
+ preferredLanguage?: string | null;
3956
+ contactNumber?: string | null;
3957
+ profilePhotoFile?: string | null;
3958
+ profilePhotoInfo?: string | null;
3959
+ employeeId?: string | null;
3960
+ pin?: string | null;
3961
+ changePinRequired?: boolean;
3962
+ lastLoginAt?: string | null;
3963
+ loginAttemptCount?: number;
3964
+ loginDisabledAt?: string | null;
3965
+ createdById?: string;
3966
+ updatedById?: string;
3967
+ createdAt?: string;
3968
+ updatedAt?: string;
3969
+ deletedAt?: string | null;
3970
+ deletedById?: string | null;
3971
+ };
3972
+ userSite?: {
3973
+ id?: string;
3974
+ userId?: string;
3975
+ siteId?: string;
3976
+ companyId?: string;
3977
+ createdById?: string;
3978
+ updatedById?: string;
3979
+ createdAt?: string;
3980
+ updatedAt?: string;
3981
+ deletedAt?: string | null;
3982
+ deletedById?: string | null;
3983
+ };
3984
+ userRole?: {
3985
+ id?: string;
3986
+ userId?: string;
3987
+ companyId?: string;
3988
+ roleId?: string;
3989
+ assignedById?: string;
3990
+ assignedAt?: string;
3991
+ expiresAt?: string | null;
3992
+ createdById?: string;
3993
+ updatedById?: string;
3994
+ createdAt?: string;
3995
+ updatedAt?: string;
3996
+ deletedAt?: string | null;
3997
+ deletedById?: string | null;
3998
+ };
3999
+ }, ApiErrorResponse, ThrowOnError>;
4000
+ /**
4001
+ * List inspections
4002
+ * Returns a paginated list of inspections for the authenticated company. Supports filtering by various fields and sorting. Requires Bearer token authentication with inspection:read permission.
4003
+ */
4004
+ declare const inspectionControllerListInspections: <ThrowOnError extends boolean = false>(options?: Options<InspectionControllerListInspectionsData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<ListInspectionsResponseDto, ApiErrorResponse, ThrowOnError>;
4005
+ /**
4006
+ * Submit inspection with nested data
4007
+ * Submits a complete inspection with nested responses, response options, extra infos, and media. Uses PostgreSQL transactions to ensure atomicity. Checks if inspection already exists by public_id to avoid duplicates. Handles nested response tree structure with left/right values. Timestamps in input are Unix epoch (milliseconds for inspection times, seconds for others). Requires Bearer token authentication. Internal tokens bypass permission check, public tokens require inspection:create permission. Supports `Idempotency-Key` for safe retries.
4008
+ */
4009
+ declare const inspectionControllerSubmitInspectionPublic: <ThrowOnError extends boolean = false>(options: Options<InspectionControllerSubmitInspectionPublicData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<{
4010
+ success?: boolean;
4011
+ inspection_public_id?: string;
4012
+ inspection_id?: string;
4013
+ }, ApiErrorResponse, ThrowOnError>;
4014
+ /**
4015
+ * List issues
4016
+ * Returns a paginated list of issues for the authenticated company. Supports filtering by various fields and sorting. Requires Bearer token authentication with issue:read permission.
4017
+ */
4018
+ declare const issueControllerListIssues: <ThrowOnError extends boolean = false>(options?: Options<IssueControllerListIssuesData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<ListIssuesResponseDto, ApiErrorResponse, ThrowOnError>;
4019
+ /**
4020
+ * Get issue by public ID
4021
+ * Returns detailed information about a specific issue. Requires Bearer token authentication with issue:read permission.
4022
+ */
4023
+ declare const issueControllerGetIssuePublic: <ThrowOnError extends boolean = false>(options: Options<IssueControllerGetIssuePublicData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<IssueResponseDto, ApiErrorResponse, ThrowOnError>;
4024
+ /**
4025
+ * Update an issue
4026
+ * Updates an issue by its public_id. Requires Bearer token authentication with issue:update permission. Supports `Idempotency-Key` for safe retries.
4027
+ */
4028
+ declare const issueControllerUpdateIssuePublic: <ThrowOnError extends boolean = false>(options: Options<IssueControllerUpdateIssuePublicData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<{
4029
+ success?: boolean;
4030
+ issue_id?: string;
4031
+ }, ApiErrorResponse, ThrowOnError>;
4032
+ /**
4033
+ * Get issue history by public ID
4034
+ * Returns all history entries for an issue identified by its public_id. History entries are ordered by changed_at timestamp in descending order (most recent first). Requires Bearer token authentication with issue:read permission.
4035
+ */
4036
+ declare const issueControllerGetIssueHistoryPublic: <ThrowOnError extends boolean = false>(options: Options<IssueControllerGetIssueHistoryPublicData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<IssueHistoryResponseDto, ApiErrorResponse, ThrowOnError>;
4037
+ /**
4038
+ * Delete user property by ID
4039
+ * Performs a soft delete on a user property by its ID. Sets deletedAt and deletedById fields instead of permanently removing the record. Also creates a history record of the deletion. Requires Bearer token authentication with user:update permission.
4040
+ */
4041
+ declare const userPropertyControllerDeleteUserProperty: <ThrowOnError extends boolean = false>(options: Options<UserPropertyControllerDeleteUserPropertyData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<DeleteUserPropertyResponseDto, ApiErrorResponse, ThrowOnError>;
4042
+ /**
4043
+ * Update user property value by ID
4044
+ * Partially updates the value of a user property by its ID. The value is stored in the appropriate column (text_value, numeric_value, or date_value) based on the property type defined in config_items. Also creates a history record of the change. Requires Bearer token authentication with user:update permission. Supports `Idempotency-Key` for safe retries.
4045
+ */
4046
+ declare const userPropertyControllerUpdateUserProperty: <ThrowOnError extends boolean = false>(options: Options<UserPropertyControllerUpdateUserPropertyData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<UserPropertyResponseDto, ApiErrorResponse, ThrowOnError>;
4047
+ /**
4048
+ * List sites
4049
+ * Returns a paginated list of sites for the authenticated company. Supports filtering by name, category, and date modified. Requires Bearer token authentication with site:read permission.
4050
+ */
4051
+ declare const siteControllerListSites: <ThrowOnError extends boolean = false>(options?: Options<SiteControllerListSitesData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<ListSitesResponseDto, ApiErrorResponse, ThrowOnError>;
4052
+ /**
4053
+ * Create a new site
4054
+ * Creates a new site for the authenticated company. Requires Bearer token authentication with site:update permission. Supports `Idempotency-Key` for safe retries.
4055
+ */
4056
+ declare const siteControllerCreateSite: <ThrowOnError extends boolean = false>(options: Options<SiteControllerCreateSiteData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<SiteResponseDto, ApiErrorResponse, ThrowOnError>;
4057
+ /**
4058
+ * Delete site by public ID
4059
+ * Performs a soft delete on a site by its public_id (UUID). Sets deletedAt and deletedById fields instead of permanently removing the record. Requires Bearer token authentication with site:update permission.
4060
+ */
4061
+ declare const siteControllerDeleteSite: <ThrowOnError extends boolean = false>(options: Options<SiteControllerDeleteSiteData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<DeleteSiteResponseDto, ApiErrorResponse, ThrowOnError>;
4062
+ /**
4063
+ * Update site by public ID
4064
+ * Updates a site by its public_id (UUID). Only provided fields will be updated. Requires Bearer token authentication with site:update permission. Supports `Idempotency-Key` for safe retries.
4065
+ */
4066
+ declare const siteControllerUpdateSite: <ThrowOnError extends boolean = false>(options: Options<SiteControllerUpdateSiteData, ThrowOnError>) => _hey_api_client_fetch.RequestResult<SiteResponseDto, ApiErrorResponse, ThrowOnError>;
4067
+
4068
+ /**
4069
+ * WakataClient — the hand-written ergonomic wrapper on top of the generated
4070
+ * `@hey-api/openapi-ts` output.
4071
+ *
4072
+ * Responsibilities:
4073
+ * - Hold the API key and base URL.
4074
+ * - Attach `Authorization`, `User-Agent`, and (on POST/PATCH) `Idempotency-Key`
4075
+ * headers via fetch interceptors.
4076
+ * - Map non-2xx responses to the typed error hierarchy in `./errors.ts`.
4077
+ * - Expose every generated operation under a per-tag namespace
4078
+ * (`client.assets.list(...)`, `client.users.list(...)`, etc.).
4079
+ *
4080
+ * Consumers who need the unwrapped generated operations can import them
4081
+ * directly from `@wakata-dev/api-client/generated`.
4082
+ */
4083
+
4084
+ interface WakataClientOptions {
4085
+ /** Wakata API key (`wk_...`). Required. */
4086
+ apiKey: string;
4087
+ /** Override base URL. Defaults to `https://api.wakata.ai/api/v1`. */
4088
+ baseUrl?: string;
4089
+ /**
4090
+ * Custom `fetch` implementation. Defaults to `globalThis.fetch`. Useful
4091
+ * for tests or Node <18 polyfills.
4092
+ */
4093
+ fetch?: typeof fetch;
4094
+ }
4095
+ /**
4096
+ * The wrapper takes Options from the generated `sdk.gen` but reshapes them so
4097
+ * the consumer doesn't have to think about the underlying client.
4098
+ *
4099
+ * We strip the generated `client` and `throwOnError` fields and tell the
4100
+ * generated function to throw via our interceptor instead.
4101
+ */
4102
+ type WakataMethodOptions<T> = Omit<T, 'client' | 'throwOnError'>;
4103
+ /** Resource namespaces — one per OpenAPI tag, mirroring the spec. */
4104
+ interface AssetsResource {
4105
+ list: (options?: WakataMethodOptions<Parameters<typeof assetControllerListAssets>[0] extends infer O ? O : never>) => Promise<Awaited<ReturnType<typeof assetControllerListAssets>>['data']>;
4106
+ create: (options: WakataMethodOptions<Parameters<typeof assetControllerCreateAssetPublic>[0]>) => Promise<Awaited<ReturnType<typeof assetControllerCreateAssetPublic>>['data']>;
4107
+ get: (options: WakataMethodOptions<Parameters<typeof assetControllerGetAsset>[0]>) => Promise<Awaited<ReturnType<typeof assetControllerGetAsset>>['data']>;
4108
+ update: (options: WakataMethodOptions<Parameters<typeof assetControllerUpdateAsset>[0]>) => Promise<Awaited<ReturnType<typeof assetControllerUpdateAsset>>['data']>;
4109
+ }
4110
+ interface UsersResource {
4111
+ list: (options?: WakataMethodOptions<Parameters<typeof userControllerListUsers>[0] extends infer O ? O : never>) => Promise<Awaited<ReturnType<typeof userControllerListUsers>>['data']>;
4112
+ get: (options: WakataMethodOptions<Parameters<typeof userControllerGetUser>[0]>) => Promise<Awaited<ReturnType<typeof userControllerGetUser>>['data']>;
4113
+ create: (options: WakataMethodOptions<Parameters<typeof userControllerCreateUser>[0]>) => Promise<Awaited<ReturnType<typeof userControllerCreateUser>>['data']>;
4114
+ update: (options: WakataMethodOptions<Parameters<typeof userControllerUpdateUser>[0]>) => Promise<Awaited<ReturnType<typeof userControllerUpdateUser>>['data']>;
4115
+ }
4116
+ interface SitesResource {
4117
+ list: (options?: WakataMethodOptions<Parameters<typeof siteControllerListSites>[0] extends infer O ? O : never>) => Promise<Awaited<ReturnType<typeof siteControllerListSites>>['data']>;
4118
+ create: (options: WakataMethodOptions<Parameters<typeof siteControllerCreateSite>[0]>) => Promise<Awaited<ReturnType<typeof siteControllerCreateSite>>['data']>;
4119
+ update: (options: WakataMethodOptions<Parameters<typeof siteControllerUpdateSite>[0]>) => Promise<Awaited<ReturnType<typeof siteControllerUpdateSite>>['data']>;
4120
+ delete: (options: WakataMethodOptions<Parameters<typeof siteControllerDeleteSite>[0]>) => Promise<Awaited<ReturnType<typeof siteControllerDeleteSite>>['data']>;
4121
+ }
4122
+ interface InspectionsResource {
4123
+ list: (options?: WakataMethodOptions<Parameters<typeof inspectionControllerListInspections>[0] extends infer O ? O : never>) => Promise<Awaited<ReturnType<typeof inspectionControllerListInspections>>['data']>;
4124
+ submit: (options: WakataMethodOptions<Parameters<typeof inspectionControllerSubmitInspectionPublic>[0]>) => Promise<Awaited<ReturnType<typeof inspectionControllerSubmitInspectionPublic>>['data']>;
4125
+ }
4126
+ interface IssuesResource {
4127
+ list: (options?: WakataMethodOptions<Parameters<typeof issueControllerListIssues>[0] extends infer O ? O : never>) => Promise<Awaited<ReturnType<typeof issueControllerListIssues>>['data']>;
4128
+ get: (options: WakataMethodOptions<Parameters<typeof issueControllerGetIssuePublic>[0]>) => Promise<Awaited<ReturnType<typeof issueControllerGetIssuePublic>>['data']>;
4129
+ update: (options: WakataMethodOptions<Parameters<typeof issueControllerUpdateIssuePublic>[0]>) => Promise<Awaited<ReturnType<typeof issueControllerUpdateIssuePublic>>['data']>;
4130
+ getHistory: (options: WakataMethodOptions<Parameters<typeof issueControllerGetIssueHistoryPublic>[0]>) => Promise<Awaited<ReturnType<typeof issueControllerGetIssueHistoryPublic>>['data']>;
4131
+ }
4132
+ interface UserPropertiesResource {
4133
+ update: (options: WakataMethodOptions<Parameters<typeof userPropertyControllerUpdateUserProperty>[0]>) => Promise<Awaited<ReturnType<typeof userPropertyControllerUpdateUserProperty>>['data']>;
4134
+ delete: (options: WakataMethodOptions<Parameters<typeof userPropertyControllerDeleteUserProperty>[0]>) => Promise<Awaited<ReturnType<typeof userPropertyControllerDeleteUserProperty>>['data']>;
4135
+ }
4136
+ /**
4137
+ * The main entry point for the Wakata API client.
4138
+ *
4139
+ * ```ts
4140
+ * import { WakataClient, WakataNotFoundError } from '@wakata-dev/api-client';
4141
+ *
4142
+ * const wakata = new WakataClient({ apiKey: process.env.WAKATA_API_KEY! });
4143
+ *
4144
+ * try {
4145
+ * const { items } = await wakata.assets.list({ query: { page: 1, page_size: 50 } });
4146
+ * console.log(items);
4147
+ * } catch (err) {
4148
+ * if (err instanceof WakataNotFoundError) console.error('not found:', err.message);
4149
+ * throw err;
4150
+ * }
4151
+ * ```
4152
+ */
4153
+ declare class WakataClient {
4154
+ /** Underlying generated fetch client. Exposed for advanced customisation. */
4155
+ readonly raw: Client;
4156
+ readonly assets: AssetsResource;
4157
+ readonly users: UsersResource;
4158
+ readonly sites: SitesResource;
4159
+ readonly inspections: InspectionsResource;
4160
+ readonly issues: IssuesResource;
4161
+ readonly userProperties: UserPropertiesResource;
4162
+ constructor(options: WakataClientOptions);
4163
+ }
4164
+
4165
+ /**
4166
+ * Typed error hierarchy for the Wakata API client.
4167
+ *
4168
+ * The Wakata Public API always returns a standardized error envelope on
4169
+ * non-2xx responses (see `apps/api/docs/QUICKSTART.md`):
4170
+ *
4171
+ * ```json
4172
+ * {
4173
+ * "error": {
4174
+ * "code": "validation_error",
4175
+ * "message": "Request validation failed.",
4176
+ * "request_id": "req_01HX...",
4177
+ * "docs_url": "https://docs.wakata.ai/errors/validation_error",
4178
+ * "param": "site_id",
4179
+ * "details": [ { "field": "site_id", "code": "isUuid", "message": "..." } ]
4180
+ * }
4181
+ * }
4182
+ * ```
4183
+ *
4184
+ * The client maps each non-2xx response to the most specific subclass below.
4185
+ * Use `instanceof` checks to branch on the error type ergonomically:
4186
+ *
4187
+ * ```ts
4188
+ * try {
4189
+ * const asset = await wakata.assets.get('abc-123');
4190
+ * } catch (err) {
4191
+ * if (err instanceof WakataNotFoundError) { ... }
4192
+ * if (err instanceof WakataRateLimitError) {
4193
+ * await sleep((err.retryAfterSeconds ?? 60) * 1000);
4194
+ * }
4195
+ * throw err;
4196
+ * }
4197
+ * ```
4198
+ */
4199
+ /**
4200
+ * A single validation detail emitted by class-validator on `400` responses.
4201
+ */
4202
+ interface ErrorDetail {
4203
+ field: string;
4204
+ code: string;
4205
+ message: string;
4206
+ }
4207
+ /**
4208
+ * Raw shape of the error envelope returned by the API.
4209
+ *
4210
+ * Mirrors {@link https://docs.wakata.ai/errors} — kept loose because new
4211
+ * canonical codes may be added without breaking the SDK.
4212
+ */
4213
+ interface WakataErrorEnvelope {
4214
+ code: string;
4215
+ message: string;
4216
+ request_id: string;
4217
+ docs_url?: string;
4218
+ param?: string;
4219
+ details?: ErrorDetail[];
4220
+ }
4221
+ /**
4222
+ * Base error class for everything thrown by the Wakata API client when the
4223
+ * server responds with a non-2xx status. Network failures and unparseable
4224
+ * responses also surface as this base class with `code === 'unknown_error'`.
4225
+ */
4226
+ declare class WakataApiError extends Error {
4227
+ /** Canonical error code from `error.code` in the response envelope. */
4228
+ readonly code: string;
4229
+ /** HTTP status code from the response. */
4230
+ readonly statusCode: number;
4231
+ /** Server-assigned request ID (`X-Request-Id` / `error.request_id`). */
4232
+ readonly requestId: string;
4233
+ /** Optional URL pointing at the docs page for this error code. */
4234
+ readonly docsUrl: string | undefined;
4235
+ /** For validation-style errors, the offending parameter name. */
4236
+ readonly param: string | undefined;
4237
+ /** For validation-style errors, the full field-level breakdown. */
4238
+ readonly details: ErrorDetail[] | undefined;
4239
+ constructor(args: {
4240
+ code: string;
4241
+ statusCode: number;
4242
+ requestId: string;
4243
+ docsUrl?: string | undefined;
4244
+ param?: string | undefined;
4245
+ details?: ErrorDetail[] | undefined;
4246
+ message: string;
4247
+ });
4248
+ }
4249
+ /**
4250
+ * 4xx with `details` (typically 400 `validation_error` from class-validator).
4251
+ * `details` is guaranteed populated.
4252
+ */
4253
+ declare class WakataValidationError extends WakataApiError {
4254
+ readonly name = "WakataValidationError";
4255
+ }
4256
+ /** 401 — missing, malformed, revoked or expired API key. */
4257
+ declare class WakataAuthError extends WakataApiError {
4258
+ readonly name = "WakataAuthError";
4259
+ }
4260
+ /** 403 — authenticated key lacks the required permission / role. */
4261
+ declare class WakataPermissionError extends WakataApiError {
4262
+ readonly name = "WakataPermissionError";
4263
+ }
4264
+ /** 404 — resource not found, or not visible to this API key. */
4265
+ declare class WakataNotFoundError extends WakataApiError {
4266
+ readonly name = "WakataNotFoundError";
4267
+ }
4268
+ /** 409 — conflict, e.g. unique constraint violation or idempotency-key reuse with a different body. */
4269
+ declare class WakataConflictError extends WakataApiError {
4270
+ readonly name = "WakataConflictError";
4271
+ }
4272
+ /**
4273
+ * 429 — rate limited. `retryAfterSeconds` is derived from the
4274
+ * `X-RateLimit-Reset` header (seconds until the window resets) where present.
4275
+ */
4276
+ declare class WakataRateLimitError extends WakataApiError {
4277
+ readonly name = "WakataRateLimitError";
4278
+ readonly retryAfterSeconds: number | undefined;
4279
+ constructor(args: {
4280
+ code: string;
4281
+ statusCode: number;
4282
+ requestId: string;
4283
+ docsUrl?: string | undefined;
4284
+ param?: string | undefined;
4285
+ details?: ErrorDetail[] | undefined;
4286
+ message: string;
4287
+ retryAfterSeconds?: number | undefined;
4288
+ });
4289
+ }
4290
+ /** 5xx — server error. Safe to retry with exponential backoff. */
4291
+ declare class WakataServerError extends WakataApiError {
4292
+ readonly name = "WakataServerError";
4293
+ }
4294
+ /**
4295
+ * Map an HTTP status + response envelope to the most specific error subclass.
4296
+ *
4297
+ * Exported so callers can build their own retry/error layers on top.
4298
+ */
4299
+ declare function mapApiError(statusCode: number, envelope: WakataErrorEnvelope | undefined, fallbackRequestId: string, retryAfterSeconds?: number): WakataApiError;
4300
+
4301
+ /**
4302
+ * Idempotency helpers.
4303
+ *
4304
+ * The Wakata Public API accepts an optional `Idempotency-Key` header on every
4305
+ * `POST` and `PATCH` write endpoint. Sending the same key with the same body
4306
+ * within 24h returns the cached original response instead of re-executing the
4307
+ * write — making it safe to retry network failures.
4308
+ *
4309
+ * This SDK auto-attaches a freshly-generated key on every POST/PATCH if the
4310
+ * caller hasn't provided one. Callers who want true cross-attempt idempotency
4311
+ * (i.e. the same logical operation across multiple retry attempts) should
4312
+ * generate their own key once and pass it via `headers: { 'Idempotency-Key': ... }`.
4313
+ *
4314
+ * See `apps/api/docs/QUICKSTART.md` § 9.
4315
+ */
4316
+ /**
4317
+ * Generate an idempotency key prefixed with `wak_idem_`. Uses Web Crypto's
4318
+ * `randomUUID` where available, falling back to a v4-style UUID built from
4319
+ * `getRandomValues` for older Node runtimes.
4320
+ */
4321
+ declare function generateIdempotencyKey(): string;
4322
+
4323
+ /**
4324
+ * `@wakata-dev/api-client` — the official TypeScript SDK for the Wakata Public API.
4325
+ *
4326
+ * See README.md for usage.
4327
+ */
4328
+ declare const PACKAGE_NAME = "@wakata-dev/api-client";
4329
+ declare const PACKAGE_VERSION = "0.1.0";
4330
+ /** Default base URL for the Wakata Public API (production). */
4331
+ declare const DEFAULT_BASE_URL = "https://api.wakata.ai/api/v1";
4332
+
4333
+ export { type ApiErrorBody, type ApiErrorDetail, type ApiErrorResponse, type AssetClassControllerCreateAssetClassData, type AssetClassControllerCreateAssetClassError, type AssetClassControllerCreateAssetClassErrors, type AssetClassControllerCreateAssetClassResponse, type AssetClassControllerCreateAssetClassResponses, type AssetClassControllerGetAssetClassListData, type AssetClassControllerGetAssetClassListError, type AssetClassControllerGetAssetClassListErrors, type AssetClassControllerGetAssetClassListResponse, type AssetClassControllerGetAssetClassListResponses, type AssetClassControllerUpdateAssetClassData, type AssetClassControllerUpdateAssetClassError, type AssetClassControllerUpdateAssetClassErrors, type AssetClassControllerUpdateAssetClassResponse, type AssetClassControllerUpdateAssetClassResponses, type AssetClassListResponseDto, type AssetClassResponseDto, type AssetControllerCreateAssetPublicData, type AssetControllerCreateAssetPublicError, type AssetControllerCreateAssetPublicErrors, type AssetControllerCreateAssetPublicResponse, type AssetControllerCreateAssetPublicResponses, type AssetControllerGetAssetData, type AssetControllerGetAssetError, type AssetControllerGetAssetErrors, type AssetControllerGetAssetResponse, type AssetControllerGetAssetResponses, type AssetControllerListAssetsData, type AssetControllerListAssetsError, type AssetControllerListAssetsErrors, type AssetControllerListAssetsResponse, type AssetControllerListAssetsResponses, type AssetControllerUpdateAssetData, type AssetControllerUpdateAssetError, type AssetControllerUpdateAssetErrors, type AssetControllerUpdateAssetResponse, type AssetControllerUpdateAssetResponses, type AssetPropertyControllerDeleteAssetPropertyData, type AssetPropertyControllerDeleteAssetPropertyError, type AssetPropertyControllerDeleteAssetPropertyErrors, type AssetPropertyControllerDeleteAssetPropertyResponse, type AssetPropertyControllerDeleteAssetPropertyResponses, type AssetPropertyControllerUpdateAssetPropertyData, type AssetPropertyControllerUpdateAssetPropertyError, type AssetPropertyControllerUpdateAssetPropertyErrors, type AssetPropertyControllerUpdateAssetPropertyResponse, type AssetPropertyControllerUpdateAssetPropertyResponses, type AssetPropertyResponseDto, type AssetsResource, type ChangePinDto, type ClientOptions, type CreateAssetClassDto, type CreateAssetDto, type CreateInspectionDto, type CreateIssueMediaDto, type CreateSiteDto, type CreateTokenDto, DEFAULT_BASE_URL, type DeleteAssetPropertyResponseDto, type DeleteInspectionDto, type DeleteSiteResponseDto, type DeleteUserPropertyResponseDto, type DownloadResponseDto, type EmbeddedUserPropertyDto, type ErrorDetail, type ExtraInfoDto, type InspectionControllerListInspectionsData, type InspectionControllerListInspectionsError, type InspectionControllerListInspectionsErrors, type InspectionControllerListInspectionsResponse, type InspectionControllerListInspectionsResponses, type InspectionControllerSubmitInspectionPublicData, type InspectionControllerSubmitInspectionPublicError, type InspectionControllerSubmitInspectionPublicErrors, type InspectionControllerSubmitInspectionPublicResponse, type InspectionControllerSubmitInspectionPublicResponses, type InspectionResponseDto, type InspectionsResource, type IssueControllerGetIssueHistoryPublicData, type IssueControllerGetIssueHistoryPublicError, type IssueControllerGetIssueHistoryPublicErrors, type IssueControllerGetIssueHistoryPublicResponse, type IssueControllerGetIssueHistoryPublicResponses, type IssueControllerGetIssuePublicData, type IssueControllerGetIssuePublicError, type IssueControllerGetIssuePublicErrors, type IssueControllerGetIssuePublicResponse, type IssueControllerGetIssuePublicResponses, type IssueControllerListIssuesData, type IssueControllerListIssuesError, type IssueControllerListIssuesErrors, type IssueControllerListIssuesResponse, type IssueControllerListIssuesResponses, type IssueControllerUpdateIssuePublicData, type IssueControllerUpdateIssuePublicError, type IssueControllerUpdateIssuePublicErrors, type IssueControllerUpdateIssuePublicResponse, type IssueControllerUpdateIssuePublicResponses, type IssueHistoryDto, type IssueHistoryResponseDto, type IssueMediaResponseDto, type IssueResponseDto, type IssuesResource, type ListInspectionsResponseDto, type ListIssuesResponseDto, type ListSitesResponseDto, type MediaDto, PACKAGE_NAME, PACKAGE_VERSION, type PublicCreateAssetDto, type RegisterDeviceDto, type RegisterDeviceResponseDto, type RepeatInspectionDto, type RequestDownloadDto, type RequestLogUploadDto, type RequestUploadDto, type ResponseDto, type ResponseOptionDto, type ResumeInspectionDto, type SendCredentialsDto, type SiteControllerCreateSiteData, type SiteControllerCreateSiteError, type SiteControllerCreateSiteErrors, type SiteControllerCreateSiteResponse, type SiteControllerCreateSiteResponses, type SiteControllerDeleteSiteData, type SiteControllerDeleteSiteError, type SiteControllerDeleteSiteErrors, type SiteControllerDeleteSiteResponse, type SiteControllerDeleteSiteResponses, type SiteControllerListSitesData, type SiteControllerListSitesError, type SiteControllerListSitesErrors, type SiteControllerListSitesResponse, type SiteControllerListSitesResponses, type SiteControllerUpdateSiteData, type SiteControllerUpdateSiteError, type SiteControllerUpdateSiteErrors, type SiteControllerUpdateSiteResponse, type SiteControllerUpdateSiteResponses, type SiteResponseDto, type SitesResource, type SubmitInspectionDto, type TokenCompanyDto, type TokenResponseDto, type TokenUserDto, type UpdateAssetClassDto, type UpdateAssetDto, type UpdateAssetPropertyDto, type UpdateInspectionDto, type UpdateIssueDto, type UpdateSiteDto, type UpdateUserPropertyDto, type UploadCredentialsResponseDto, type UserControllerCreateUserData, type UserControllerCreateUserError, type UserControllerCreateUserErrors, type UserControllerCreateUserResponse, type UserControllerCreateUserResponses, type UserControllerGetUserData, type UserControllerGetUserError, type UserControllerGetUserErrors, type UserControllerGetUserResponse, type UserControllerGetUserResponses, type UserControllerListUsersData, type UserControllerListUsersError, type UserControllerListUsersErrors, type UserControllerListUsersResponse, type UserControllerListUsersResponses, type UserControllerUpdateUserData, type UserControllerUpdateUserError, type UserControllerUpdateUserErrors, type UserControllerUpdateUserResponse, type UserControllerUpdateUserResponses, type UserPropertiesResource, type UserPropertyControllerDeleteUserPropertyData, type UserPropertyControllerDeleteUserPropertyError, type UserPropertyControllerDeleteUserPropertyErrors, type UserPropertyControllerDeleteUserPropertyResponse, type UserPropertyControllerDeleteUserPropertyResponses, type UserPropertyControllerUpdateUserPropertyData, type UserPropertyControllerUpdateUserPropertyError, type UserPropertyControllerUpdateUserPropertyErrors, type UserPropertyControllerUpdateUserPropertyResponse, type UserPropertyControllerUpdateUserPropertyResponses, type UserPropertyResponseDto, type UserResponseDto, type UsersResource, WakataApiError, WakataAuthError, WakataClient, type WakataClientOptions, WakataConflictError, type WakataErrorEnvelope, WakataNotFoundError, WakataPermissionError, WakataRateLimitError, WakataServerError, WakataValidationError, generateIdempotencyKey, mapApiError };