haystack-contracts 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/index.d.mts +82 -68
- package/dist/index.d.ts +82 -68
- package/openapi.json +22 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -10,14 +10,14 @@ Public API contracts for Haystack Robotics — TypeScript types, path constants,
|
|
|
10
10
|
pnpm add haystack-contracts
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
Pin a specific version in production apps (e.g. `"haystack-contracts": "1.0.
|
|
13
|
+
Pin a specific version in production apps (e.g. `"haystack-contracts": "1.0.2"`).
|
|
14
14
|
|
|
15
15
|
## What ships on npm
|
|
16
16
|
|
|
17
|
-
| Import
|
|
18
|
-
|
|
19
|
-
| `haystack-contracts`
|
|
20
|
-
| `haystack-contracts/openapi.json` | OpenAPI 3 spec for API reference sites
|
|
17
|
+
| Import | Use |
|
|
18
|
+
| --------------------------------- | ------------------------------------------------- |
|
|
19
|
+
| `haystack-contracts` | Types, `PublicApiPath`, enums, response envelopes |
|
|
20
|
+
| `haystack-contracts/openapi.json` | OpenAPI 3 spec for API reference sites |
|
|
21
21
|
|
|
22
22
|
## Docs frontend (React static API page)
|
|
23
23
|
|
|
@@ -30,7 +30,7 @@ import openApiSpec from 'haystack-contracts/openapi.json';
|
|
|
30
30
|
Or load from CDN:
|
|
31
31
|
|
|
32
32
|
```text
|
|
33
|
-
https://unpkg.com/haystack-contracts@1.0.
|
|
33
|
+
https://unpkg.com/haystack-contracts@1.0.2/openapi.json
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
Requires `resolveJsonModule: true` in `tsconfig.json` for the import pattern.
|
package/dist/index.d.mts
CHANGED
|
@@ -90,7 +90,7 @@ declare const AnalyticsAggregateStatus: {
|
|
|
90
90
|
type AnalyticsAggregateStatus = (typeof AnalyticsAggregateStatus)[keyof typeof AnalyticsAggregateStatus];
|
|
91
91
|
|
|
92
92
|
interface paths {
|
|
93
|
-
|
|
93
|
+
'/auth/login': {
|
|
94
94
|
parameters: {
|
|
95
95
|
query?: never;
|
|
96
96
|
header?: never;
|
|
@@ -112,7 +112,7 @@ interface paths {
|
|
|
112
112
|
};
|
|
113
113
|
requestBody: {
|
|
114
114
|
content: {
|
|
115
|
-
|
|
115
|
+
'application/json': components['schemas']['LoginDto'];
|
|
116
116
|
};
|
|
117
117
|
};
|
|
118
118
|
responses: {
|
|
@@ -122,7 +122,7 @@ interface paths {
|
|
|
122
122
|
[name: string]: unknown;
|
|
123
123
|
};
|
|
124
124
|
content: {
|
|
125
|
-
|
|
125
|
+
'application/json': {
|
|
126
126
|
/** @example true */
|
|
127
127
|
success: boolean;
|
|
128
128
|
/** @example 200 */
|
|
@@ -132,7 +132,7 @@ interface paths {
|
|
|
132
132
|
* @example 2026-05-29T12:00:00.000Z
|
|
133
133
|
*/
|
|
134
134
|
timestamp: string;
|
|
135
|
-
data: components[
|
|
135
|
+
data: components['schemas']['AuthResponseDto'];
|
|
136
136
|
};
|
|
137
137
|
};
|
|
138
138
|
};
|
|
@@ -150,7 +150,7 @@ interface paths {
|
|
|
150
150
|
* "message": "email must be an email"
|
|
151
151
|
* }
|
|
152
152
|
*/
|
|
153
|
-
|
|
153
|
+
'application/json': unknown;
|
|
154
154
|
};
|
|
155
155
|
};
|
|
156
156
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -167,7 +167,7 @@ interface paths {
|
|
|
167
167
|
* "message": "Unauthorized"
|
|
168
168
|
* }
|
|
169
169
|
*/
|
|
170
|
-
|
|
170
|
+
'application/json': unknown;
|
|
171
171
|
};
|
|
172
172
|
};
|
|
173
173
|
};
|
|
@@ -178,7 +178,7 @@ interface paths {
|
|
|
178
178
|
patch?: never;
|
|
179
179
|
trace?: never;
|
|
180
180
|
};
|
|
181
|
-
|
|
181
|
+
'/robots': {
|
|
182
182
|
parameters: {
|
|
183
183
|
query?: never;
|
|
184
184
|
header?: never;
|
|
@@ -204,7 +204,7 @@ interface paths {
|
|
|
204
204
|
[name: string]: unknown;
|
|
205
205
|
};
|
|
206
206
|
content: {
|
|
207
|
-
|
|
207
|
+
'application/json': {
|
|
208
208
|
/** @example true */
|
|
209
209
|
success: boolean;
|
|
210
210
|
/** @example 200 */
|
|
@@ -214,7 +214,7 @@ interface paths {
|
|
|
214
214
|
* @example 2026-05-29T12:00:00.000Z
|
|
215
215
|
*/
|
|
216
216
|
timestamp: string;
|
|
217
|
-
data: components[
|
|
217
|
+
data: components['schemas']['RobotListItemDto'][];
|
|
218
218
|
};
|
|
219
219
|
};
|
|
220
220
|
};
|
|
@@ -232,7 +232,7 @@ interface paths {
|
|
|
232
232
|
* "message": "Unauthorized"
|
|
233
233
|
* }
|
|
234
234
|
*/
|
|
235
|
-
|
|
235
|
+
'application/json': unknown;
|
|
236
236
|
};
|
|
237
237
|
};
|
|
238
238
|
};
|
|
@@ -245,7 +245,7 @@ interface paths {
|
|
|
245
245
|
patch?: never;
|
|
246
246
|
trace?: never;
|
|
247
247
|
};
|
|
248
|
-
|
|
248
|
+
'/robots/{id}': {
|
|
249
249
|
parameters: {
|
|
250
250
|
query?: never;
|
|
251
251
|
header?: never;
|
|
@@ -274,7 +274,7 @@ interface paths {
|
|
|
274
274
|
[name: string]: unknown;
|
|
275
275
|
};
|
|
276
276
|
content: {
|
|
277
|
-
|
|
277
|
+
'application/json': {
|
|
278
278
|
/** @example true */
|
|
279
279
|
success: boolean;
|
|
280
280
|
/** @example 200 */
|
|
@@ -284,7 +284,7 @@ interface paths {
|
|
|
284
284
|
* @example 2026-05-29T12:00:00.000Z
|
|
285
285
|
*/
|
|
286
286
|
timestamp: string;
|
|
287
|
-
data: components[
|
|
287
|
+
data: components['schemas']['RobotListItemDto'];
|
|
288
288
|
};
|
|
289
289
|
};
|
|
290
290
|
};
|
|
@@ -302,7 +302,7 @@ interface paths {
|
|
|
302
302
|
* "message": "email must be an email"
|
|
303
303
|
* }
|
|
304
304
|
*/
|
|
305
|
-
|
|
305
|
+
'application/json': unknown;
|
|
306
306
|
};
|
|
307
307
|
};
|
|
308
308
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -319,7 +319,7 @@ interface paths {
|
|
|
319
319
|
* "message": "Unauthorized"
|
|
320
320
|
* }
|
|
321
321
|
*/
|
|
322
|
-
|
|
322
|
+
'application/json': unknown;
|
|
323
323
|
};
|
|
324
324
|
};
|
|
325
325
|
/** @description Robot not found in the current tenant. */
|
|
@@ -336,7 +336,7 @@ interface paths {
|
|
|
336
336
|
* "message": "Robot not found"
|
|
337
337
|
* }
|
|
338
338
|
*/
|
|
339
|
-
|
|
339
|
+
'application/json': unknown;
|
|
340
340
|
};
|
|
341
341
|
};
|
|
342
342
|
};
|
|
@@ -349,7 +349,7 @@ interface paths {
|
|
|
349
349
|
patch?: never;
|
|
350
350
|
trace?: never;
|
|
351
351
|
};
|
|
352
|
-
|
|
352
|
+
'/metrics/types': {
|
|
353
353
|
parameters: {
|
|
354
354
|
query?: never;
|
|
355
355
|
header?: never;
|
|
@@ -375,7 +375,7 @@ interface paths {
|
|
|
375
375
|
[name: string]: unknown;
|
|
376
376
|
};
|
|
377
377
|
content: {
|
|
378
|
-
|
|
378
|
+
'application/json': {
|
|
379
379
|
/** @example true */
|
|
380
380
|
success: boolean;
|
|
381
381
|
/** @example 200 */
|
|
@@ -385,7 +385,7 @@ interface paths {
|
|
|
385
385
|
* @example 2026-05-29T12:00:00.000Z
|
|
386
386
|
*/
|
|
387
387
|
timestamp: string;
|
|
388
|
-
data: components[
|
|
388
|
+
data: components['schemas']['MetricTypeResponseDto'][];
|
|
389
389
|
};
|
|
390
390
|
};
|
|
391
391
|
};
|
|
@@ -403,7 +403,7 @@ interface paths {
|
|
|
403
403
|
* "message": "Unauthorized"
|
|
404
404
|
* }
|
|
405
405
|
*/
|
|
406
|
-
|
|
406
|
+
'application/json': unknown;
|
|
407
407
|
};
|
|
408
408
|
};
|
|
409
409
|
};
|
|
@@ -416,7 +416,7 @@ interface paths {
|
|
|
416
416
|
patch?: never;
|
|
417
417
|
trace?: never;
|
|
418
418
|
};
|
|
419
|
-
|
|
419
|
+
'/metrics/robot-values/{robotId}': {
|
|
420
420
|
parameters: {
|
|
421
421
|
query?: never;
|
|
422
422
|
header?: never;
|
|
@@ -448,7 +448,7 @@ interface paths {
|
|
|
448
448
|
[name: string]: unknown;
|
|
449
449
|
};
|
|
450
450
|
content: {
|
|
451
|
-
|
|
451
|
+
'application/json': {
|
|
452
452
|
/** @example true */
|
|
453
453
|
success: boolean;
|
|
454
454
|
/** @example 200 */
|
|
@@ -458,7 +458,7 @@ interface paths {
|
|
|
458
458
|
* @example 2026-05-29T12:00:00.000Z
|
|
459
459
|
*/
|
|
460
460
|
timestamp: string;
|
|
461
|
-
data: components[
|
|
461
|
+
data: components['schemas']['RobotMetricLiveDto'][];
|
|
462
462
|
};
|
|
463
463
|
};
|
|
464
464
|
};
|
|
@@ -476,7 +476,7 @@ interface paths {
|
|
|
476
476
|
* "message": "email must be an email"
|
|
477
477
|
* }
|
|
478
478
|
*/
|
|
479
|
-
|
|
479
|
+
'application/json': unknown;
|
|
480
480
|
};
|
|
481
481
|
};
|
|
482
482
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -493,7 +493,7 @@ interface paths {
|
|
|
493
493
|
* "message": "Unauthorized"
|
|
494
494
|
* }
|
|
495
495
|
*/
|
|
496
|
-
|
|
496
|
+
'application/json': unknown;
|
|
497
497
|
};
|
|
498
498
|
};
|
|
499
499
|
};
|
|
@@ -506,7 +506,7 @@ interface paths {
|
|
|
506
506
|
patch?: never;
|
|
507
507
|
trace?: never;
|
|
508
508
|
};
|
|
509
|
-
|
|
509
|
+
'/disinfection/robots': {
|
|
510
510
|
parameters: {
|
|
511
511
|
query?: never;
|
|
512
512
|
header?: never;
|
|
@@ -532,7 +532,7 @@ interface paths {
|
|
|
532
532
|
[name: string]: unknown;
|
|
533
533
|
};
|
|
534
534
|
content: {
|
|
535
|
-
|
|
535
|
+
'application/json': {
|
|
536
536
|
/** @example true */
|
|
537
537
|
success: boolean;
|
|
538
538
|
/** @example 200 */
|
|
@@ -542,7 +542,7 @@ interface paths {
|
|
|
542
542
|
* @example 2026-05-29T12:00:00.000Z
|
|
543
543
|
*/
|
|
544
544
|
timestamp: string;
|
|
545
|
-
data: components[
|
|
545
|
+
data: components['schemas']['RobotDisinfectionStatsDto'][];
|
|
546
546
|
};
|
|
547
547
|
};
|
|
548
548
|
};
|
|
@@ -560,7 +560,7 @@ interface paths {
|
|
|
560
560
|
* "message": "Unauthorized"
|
|
561
561
|
* }
|
|
562
562
|
*/
|
|
563
|
-
|
|
563
|
+
'application/json': unknown;
|
|
564
564
|
};
|
|
565
565
|
};
|
|
566
566
|
};
|
|
@@ -573,7 +573,7 @@ interface paths {
|
|
|
573
573
|
patch?: never;
|
|
574
574
|
trace?: never;
|
|
575
575
|
};
|
|
576
|
-
|
|
576
|
+
'/disinfection/ongoing-jobs': {
|
|
577
577
|
parameters: {
|
|
578
578
|
query?: never;
|
|
579
579
|
header?: never;
|
|
@@ -599,7 +599,7 @@ interface paths {
|
|
|
599
599
|
[name: string]: unknown;
|
|
600
600
|
};
|
|
601
601
|
content: {
|
|
602
|
-
|
|
602
|
+
'application/json': {
|
|
603
603
|
/** @example true */
|
|
604
604
|
success: boolean;
|
|
605
605
|
/** @example 200 */
|
|
@@ -609,7 +609,7 @@ interface paths {
|
|
|
609
609
|
* @example 2026-05-29T12:00:00.000Z
|
|
610
610
|
*/
|
|
611
611
|
timestamp: string;
|
|
612
|
-
data: components[
|
|
612
|
+
data: components['schemas']['DisinfectionJobDto'][];
|
|
613
613
|
};
|
|
614
614
|
};
|
|
615
615
|
};
|
|
@@ -627,7 +627,7 @@ interface paths {
|
|
|
627
627
|
* "message": "Unauthorized"
|
|
628
628
|
* }
|
|
629
629
|
*/
|
|
630
|
-
|
|
630
|
+
'application/json': unknown;
|
|
631
631
|
};
|
|
632
632
|
};
|
|
633
633
|
};
|
|
@@ -640,7 +640,7 @@ interface paths {
|
|
|
640
640
|
patch?: never;
|
|
641
641
|
trace?: never;
|
|
642
642
|
};
|
|
643
|
-
|
|
643
|
+
'/disinfection/jobs': {
|
|
644
644
|
parameters: {
|
|
645
645
|
query?: never;
|
|
646
646
|
header?: never;
|
|
@@ -655,7 +655,7 @@ interface paths {
|
|
|
655
655
|
parameters: {
|
|
656
656
|
query?: {
|
|
657
657
|
/** @description Job outcome filter. Defaults to "all" (no status filtering) when omitted. */
|
|
658
|
-
status?:
|
|
658
|
+
status?: 'passed' | 'partial' | 'failed' | 'all';
|
|
659
659
|
/** @description UUID of a specific robot to filter by. */
|
|
660
660
|
robotId?: string;
|
|
661
661
|
};
|
|
@@ -671,7 +671,7 @@ interface paths {
|
|
|
671
671
|
[name: string]: unknown;
|
|
672
672
|
};
|
|
673
673
|
content: {
|
|
674
|
-
|
|
674
|
+
'application/json': {
|
|
675
675
|
/** @example true */
|
|
676
676
|
success: boolean;
|
|
677
677
|
/** @example 200 */
|
|
@@ -681,7 +681,7 @@ interface paths {
|
|
|
681
681
|
* @example 2026-05-29T12:00:00.000Z
|
|
682
682
|
*/
|
|
683
683
|
timestamp: string;
|
|
684
|
-
data: components[
|
|
684
|
+
data: components['schemas']['DisinfectionJobDto'][];
|
|
685
685
|
};
|
|
686
686
|
};
|
|
687
687
|
};
|
|
@@ -699,7 +699,7 @@ interface paths {
|
|
|
699
699
|
* "message": "email must be an email"
|
|
700
700
|
* }
|
|
701
701
|
*/
|
|
702
|
-
|
|
702
|
+
'application/json': unknown;
|
|
703
703
|
};
|
|
704
704
|
};
|
|
705
705
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -716,7 +716,7 @@ interface paths {
|
|
|
716
716
|
* "message": "Unauthorized"
|
|
717
717
|
* }
|
|
718
718
|
*/
|
|
719
|
-
|
|
719
|
+
'application/json': unknown;
|
|
720
720
|
};
|
|
721
721
|
};
|
|
722
722
|
};
|
|
@@ -729,7 +729,7 @@ interface paths {
|
|
|
729
729
|
patch?: never;
|
|
730
730
|
trace?: never;
|
|
731
731
|
};
|
|
732
|
-
|
|
732
|
+
'/analytics-agg/robots-count': {
|
|
733
733
|
parameters: {
|
|
734
734
|
query?: never;
|
|
735
735
|
header?: never;
|
|
@@ -755,7 +755,7 @@ interface paths {
|
|
|
755
755
|
[name: string]: unknown;
|
|
756
756
|
};
|
|
757
757
|
content: {
|
|
758
|
-
|
|
758
|
+
'application/json': {
|
|
759
759
|
/** @example true */
|
|
760
760
|
success: boolean;
|
|
761
761
|
/** @example 200 */
|
|
@@ -765,7 +765,7 @@ interface paths {
|
|
|
765
765
|
* @example 2026-05-29T12:00:00.000Z
|
|
766
766
|
*/
|
|
767
767
|
timestamp: string;
|
|
768
|
-
data: components[
|
|
768
|
+
data: components['schemas']['RobotsCountAnalyticsDataDto'];
|
|
769
769
|
};
|
|
770
770
|
};
|
|
771
771
|
};
|
|
@@ -783,7 +783,7 @@ interface paths {
|
|
|
783
783
|
* "message": "Unauthorized"
|
|
784
784
|
* }
|
|
785
785
|
*/
|
|
786
|
-
|
|
786
|
+
'application/json': unknown;
|
|
787
787
|
};
|
|
788
788
|
};
|
|
789
789
|
};
|
|
@@ -796,7 +796,7 @@ interface paths {
|
|
|
796
796
|
patch?: never;
|
|
797
797
|
trace?: never;
|
|
798
798
|
};
|
|
799
|
-
|
|
799
|
+
'/analytics-agg/disinfection-count': {
|
|
800
800
|
parameters: {
|
|
801
801
|
query?: never;
|
|
802
802
|
header?: never;
|
|
@@ -822,7 +822,7 @@ interface paths {
|
|
|
822
822
|
[name: string]: unknown;
|
|
823
823
|
};
|
|
824
824
|
content: {
|
|
825
|
-
|
|
825
|
+
'application/json': {
|
|
826
826
|
/** @example true */
|
|
827
827
|
success: boolean;
|
|
828
828
|
/** @example 200 */
|
|
@@ -832,7 +832,7 @@ interface paths {
|
|
|
832
832
|
* @example 2026-05-29T12:00:00.000Z
|
|
833
833
|
*/
|
|
834
834
|
timestamp: string;
|
|
835
|
-
data: components[
|
|
835
|
+
data: components['schemas']['DisinfectionCountAnalyticsDataDto'];
|
|
836
836
|
};
|
|
837
837
|
};
|
|
838
838
|
};
|
|
@@ -850,7 +850,7 @@ interface paths {
|
|
|
850
850
|
* "message": "Unauthorized"
|
|
851
851
|
* }
|
|
852
852
|
*/
|
|
853
|
-
|
|
853
|
+
'application/json': unknown;
|
|
854
854
|
};
|
|
855
855
|
};
|
|
856
856
|
};
|
|
@@ -863,7 +863,7 @@ interface paths {
|
|
|
863
863
|
patch?: never;
|
|
864
864
|
trace?: never;
|
|
865
865
|
};
|
|
866
|
-
|
|
866
|
+
'/analytics-agg/disinfection-operator': {
|
|
867
867
|
parameters: {
|
|
868
868
|
query?: never;
|
|
869
869
|
header?: never;
|
|
@@ -889,7 +889,7 @@ interface paths {
|
|
|
889
889
|
[name: string]: unknown;
|
|
890
890
|
};
|
|
891
891
|
content: {
|
|
892
|
-
|
|
892
|
+
'application/json': {
|
|
893
893
|
/** @example true */
|
|
894
894
|
success: boolean;
|
|
895
895
|
/** @example 200 */
|
|
@@ -899,7 +899,7 @@ interface paths {
|
|
|
899
899
|
* @example 2026-05-29T12:00:00.000Z
|
|
900
900
|
*/
|
|
901
901
|
timestamp: string;
|
|
902
|
-
data: components[
|
|
902
|
+
data: components['schemas']['DisinfectionOperatorsAnalyticsDataDto'];
|
|
903
903
|
};
|
|
904
904
|
};
|
|
905
905
|
};
|
|
@@ -917,7 +917,7 @@ interface paths {
|
|
|
917
917
|
* "message": "Unauthorized"
|
|
918
918
|
* }
|
|
919
919
|
*/
|
|
920
|
-
|
|
920
|
+
'application/json': unknown;
|
|
921
921
|
};
|
|
922
922
|
};
|
|
923
923
|
};
|
|
@@ -930,7 +930,7 @@ interface paths {
|
|
|
930
930
|
patch?: never;
|
|
931
931
|
trace?: never;
|
|
932
932
|
};
|
|
933
|
-
|
|
933
|
+
'/analytics-agg/disinfection-status': {
|
|
934
934
|
parameters: {
|
|
935
935
|
query?: never;
|
|
936
936
|
header?: never;
|
|
@@ -956,7 +956,7 @@ interface paths {
|
|
|
956
956
|
[name: string]: unknown;
|
|
957
957
|
};
|
|
958
958
|
content: {
|
|
959
|
-
|
|
959
|
+
'application/json': {
|
|
960
960
|
/** @example true */
|
|
961
961
|
success: boolean;
|
|
962
962
|
/** @example 200 */
|
|
@@ -966,7 +966,7 @@ interface paths {
|
|
|
966
966
|
* @example 2026-05-29T12:00:00.000Z
|
|
967
967
|
*/
|
|
968
968
|
timestamp: string;
|
|
969
|
-
data: components[
|
|
969
|
+
data: components['schemas']['DisinfectionStatusAnalyticsDataDto'];
|
|
970
970
|
};
|
|
971
971
|
};
|
|
972
972
|
};
|
|
@@ -984,7 +984,7 @@ interface paths {
|
|
|
984
984
|
* "message": "Unauthorized"
|
|
985
985
|
* }
|
|
986
986
|
*/
|
|
987
|
-
|
|
987
|
+
'application/json': unknown;
|
|
988
988
|
};
|
|
989
989
|
};
|
|
990
990
|
};
|
|
@@ -1017,17 +1017,17 @@ interface components {
|
|
|
1017
1017
|
*/
|
|
1018
1018
|
expiresIn: number;
|
|
1019
1019
|
/** @description Sanitized authenticated user snapshot returned with the token response. */
|
|
1020
|
-
user: components[
|
|
1020
|
+
user: components['schemas']['PublicUserDto'];
|
|
1021
1021
|
};
|
|
1022
1022
|
DisinfectionCountAnalyticsDataDto: {
|
|
1023
|
-
data: components[
|
|
1023
|
+
data: components['schemas']['DisinfectionCountResponseDto'];
|
|
1024
1024
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1025
1025
|
timestamp: string;
|
|
1026
1026
|
/**
|
|
1027
1027
|
* @example success
|
|
1028
1028
|
* @enum {string}
|
|
1029
1029
|
*/
|
|
1030
|
-
status:
|
|
1030
|
+
status: 'success' | 'error';
|
|
1031
1031
|
};
|
|
1032
1032
|
DisinfectionCountResponseDto: {
|
|
1033
1033
|
/** @example Warehouse Bot Alpha */
|
|
@@ -1068,24 +1068,24 @@ interface components {
|
|
|
1068
1068
|
totalJobs: number;
|
|
1069
1069
|
};
|
|
1070
1070
|
DisinfectionOperatorsAnalyticsDataDto: {
|
|
1071
|
-
data: components[
|
|
1071
|
+
data: components['schemas']['DisinfectionOperatorResponseDto'][];
|
|
1072
1072
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1073
1073
|
timestamp: string;
|
|
1074
1074
|
/**
|
|
1075
1075
|
* @example success
|
|
1076
1076
|
* @enum {string}
|
|
1077
1077
|
*/
|
|
1078
|
-
status:
|
|
1078
|
+
status: 'success' | 'error';
|
|
1079
1079
|
};
|
|
1080
1080
|
DisinfectionStatusAnalyticsDataDto: {
|
|
1081
|
-
data: components[
|
|
1081
|
+
data: components['schemas']['DisinfectionStatusResponseDto'][];
|
|
1082
1082
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1083
1083
|
timestamp: string;
|
|
1084
1084
|
/**
|
|
1085
1085
|
* @example success
|
|
1086
1086
|
* @enum {string}
|
|
1087
1087
|
*/
|
|
1088
|
-
status:
|
|
1088
|
+
status: 'success' | 'error';
|
|
1089
1089
|
};
|
|
1090
1090
|
DisinfectionStatusResponseDto: {
|
|
1091
1091
|
/** @example COVERAGE_DONE */
|
|
@@ -1125,12 +1125,12 @@ interface components {
|
|
|
1125
1125
|
* @example numeric
|
|
1126
1126
|
* @enum {string}
|
|
1127
1127
|
*/
|
|
1128
|
-
dataType:
|
|
1128
|
+
dataType: 'numeric' | 'string';
|
|
1129
1129
|
/**
|
|
1130
1130
|
* @example stream
|
|
1131
1131
|
* @enum {string}
|
|
1132
1132
|
*/
|
|
1133
|
-
sourceType?:
|
|
1133
|
+
sourceType?: 'non_stream' | 'stream';
|
|
1134
1134
|
};
|
|
1135
1135
|
PublicUserDto: {
|
|
1136
1136
|
/** @example c3d4e5f6-a1b2-3456-abcd-789012345678 */
|
|
@@ -1149,10 +1149,14 @@ interface components {
|
|
|
1149
1149
|
facilityId?: string | null;
|
|
1150
1150
|
fleetId?: string | null;
|
|
1151
1151
|
/** @enum {string|null} */
|
|
1152
|
-
role?:
|
|
1152
|
+
role?: 'TENANT_ADMIN' | 'WORKSPACE_ADMIN' | 'FACILITY_ADMIN' | 'FLEET_OPERATOR' | 'FLEET_VIEWER' | null;
|
|
1153
1153
|
/** @enum {string|null} */
|
|
1154
|
-
scopeType?:
|
|
1154
|
+
scopeType?: 'tenant' | 'workspace' | 'facility' | 'fleet' | null;
|
|
1155
1155
|
scopeId?: string | null;
|
|
1156
|
+
/** @description UUID of user who created this record. */
|
|
1157
|
+
createdBy?: string | null;
|
|
1158
|
+
/** @description UUID of user who last updated this record. */
|
|
1159
|
+
updatedBy?: string | null;
|
|
1156
1160
|
/**
|
|
1157
1161
|
* Format: date-time
|
|
1158
1162
|
* @example 2026-01-15T08:00:00.000Z
|
|
@@ -1283,6 +1287,16 @@ interface components {
|
|
|
1283
1287
|
* @example 2026-05-20T10:00:00.000Z
|
|
1284
1288
|
*/
|
|
1285
1289
|
lastStreamed?: string | null;
|
|
1290
|
+
/**
|
|
1291
|
+
* @description Software version currently running on the robot, or null if not yet received.
|
|
1292
|
+
* @example 2.0.84
|
|
1293
|
+
*/
|
|
1294
|
+
botVersion?: string | null;
|
|
1295
|
+
/**
|
|
1296
|
+
* @description Hardware model of the robot, or null if not yet identified.
|
|
1297
|
+
* @example Violet Gen 4 AI
|
|
1298
|
+
*/
|
|
1299
|
+
botModel?: string | null;
|
|
1286
1300
|
};
|
|
1287
1301
|
RobotMetricLiveDto: {
|
|
1288
1302
|
/**
|
|
@@ -1307,14 +1321,14 @@ interface components {
|
|
|
1307
1321
|
lastSyncTime: Record<string, never>;
|
|
1308
1322
|
};
|
|
1309
1323
|
RobotsCountAnalyticsDataDto: {
|
|
1310
|
-
data: components[
|
|
1324
|
+
data: components['schemas']['RobotsCountResponseDto'];
|
|
1311
1325
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1312
1326
|
timestamp: string;
|
|
1313
1327
|
/**
|
|
1314
1328
|
* @example success
|
|
1315
1329
|
* @enum {string}
|
|
1316
1330
|
*/
|
|
1317
|
-
status:
|
|
1331
|
+
status: 'success' | 'error';
|
|
1318
1332
|
};
|
|
1319
1333
|
RobotsCountResponseDto: {
|
|
1320
1334
|
/** @example 24 */
|
package/dist/index.d.ts
CHANGED
|
@@ -90,7 +90,7 @@ declare const AnalyticsAggregateStatus: {
|
|
|
90
90
|
type AnalyticsAggregateStatus = (typeof AnalyticsAggregateStatus)[keyof typeof AnalyticsAggregateStatus];
|
|
91
91
|
|
|
92
92
|
interface paths {
|
|
93
|
-
|
|
93
|
+
'/auth/login': {
|
|
94
94
|
parameters: {
|
|
95
95
|
query?: never;
|
|
96
96
|
header?: never;
|
|
@@ -112,7 +112,7 @@ interface paths {
|
|
|
112
112
|
};
|
|
113
113
|
requestBody: {
|
|
114
114
|
content: {
|
|
115
|
-
|
|
115
|
+
'application/json': components['schemas']['LoginDto'];
|
|
116
116
|
};
|
|
117
117
|
};
|
|
118
118
|
responses: {
|
|
@@ -122,7 +122,7 @@ interface paths {
|
|
|
122
122
|
[name: string]: unknown;
|
|
123
123
|
};
|
|
124
124
|
content: {
|
|
125
|
-
|
|
125
|
+
'application/json': {
|
|
126
126
|
/** @example true */
|
|
127
127
|
success: boolean;
|
|
128
128
|
/** @example 200 */
|
|
@@ -132,7 +132,7 @@ interface paths {
|
|
|
132
132
|
* @example 2026-05-29T12:00:00.000Z
|
|
133
133
|
*/
|
|
134
134
|
timestamp: string;
|
|
135
|
-
data: components[
|
|
135
|
+
data: components['schemas']['AuthResponseDto'];
|
|
136
136
|
};
|
|
137
137
|
};
|
|
138
138
|
};
|
|
@@ -150,7 +150,7 @@ interface paths {
|
|
|
150
150
|
* "message": "email must be an email"
|
|
151
151
|
* }
|
|
152
152
|
*/
|
|
153
|
-
|
|
153
|
+
'application/json': unknown;
|
|
154
154
|
};
|
|
155
155
|
};
|
|
156
156
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -167,7 +167,7 @@ interface paths {
|
|
|
167
167
|
* "message": "Unauthorized"
|
|
168
168
|
* }
|
|
169
169
|
*/
|
|
170
|
-
|
|
170
|
+
'application/json': unknown;
|
|
171
171
|
};
|
|
172
172
|
};
|
|
173
173
|
};
|
|
@@ -178,7 +178,7 @@ interface paths {
|
|
|
178
178
|
patch?: never;
|
|
179
179
|
trace?: never;
|
|
180
180
|
};
|
|
181
|
-
|
|
181
|
+
'/robots': {
|
|
182
182
|
parameters: {
|
|
183
183
|
query?: never;
|
|
184
184
|
header?: never;
|
|
@@ -204,7 +204,7 @@ interface paths {
|
|
|
204
204
|
[name: string]: unknown;
|
|
205
205
|
};
|
|
206
206
|
content: {
|
|
207
|
-
|
|
207
|
+
'application/json': {
|
|
208
208
|
/** @example true */
|
|
209
209
|
success: boolean;
|
|
210
210
|
/** @example 200 */
|
|
@@ -214,7 +214,7 @@ interface paths {
|
|
|
214
214
|
* @example 2026-05-29T12:00:00.000Z
|
|
215
215
|
*/
|
|
216
216
|
timestamp: string;
|
|
217
|
-
data: components[
|
|
217
|
+
data: components['schemas']['RobotListItemDto'][];
|
|
218
218
|
};
|
|
219
219
|
};
|
|
220
220
|
};
|
|
@@ -232,7 +232,7 @@ interface paths {
|
|
|
232
232
|
* "message": "Unauthorized"
|
|
233
233
|
* }
|
|
234
234
|
*/
|
|
235
|
-
|
|
235
|
+
'application/json': unknown;
|
|
236
236
|
};
|
|
237
237
|
};
|
|
238
238
|
};
|
|
@@ -245,7 +245,7 @@ interface paths {
|
|
|
245
245
|
patch?: never;
|
|
246
246
|
trace?: never;
|
|
247
247
|
};
|
|
248
|
-
|
|
248
|
+
'/robots/{id}': {
|
|
249
249
|
parameters: {
|
|
250
250
|
query?: never;
|
|
251
251
|
header?: never;
|
|
@@ -274,7 +274,7 @@ interface paths {
|
|
|
274
274
|
[name: string]: unknown;
|
|
275
275
|
};
|
|
276
276
|
content: {
|
|
277
|
-
|
|
277
|
+
'application/json': {
|
|
278
278
|
/** @example true */
|
|
279
279
|
success: boolean;
|
|
280
280
|
/** @example 200 */
|
|
@@ -284,7 +284,7 @@ interface paths {
|
|
|
284
284
|
* @example 2026-05-29T12:00:00.000Z
|
|
285
285
|
*/
|
|
286
286
|
timestamp: string;
|
|
287
|
-
data: components[
|
|
287
|
+
data: components['schemas']['RobotListItemDto'];
|
|
288
288
|
};
|
|
289
289
|
};
|
|
290
290
|
};
|
|
@@ -302,7 +302,7 @@ interface paths {
|
|
|
302
302
|
* "message": "email must be an email"
|
|
303
303
|
* }
|
|
304
304
|
*/
|
|
305
|
-
|
|
305
|
+
'application/json': unknown;
|
|
306
306
|
};
|
|
307
307
|
};
|
|
308
308
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -319,7 +319,7 @@ interface paths {
|
|
|
319
319
|
* "message": "Unauthorized"
|
|
320
320
|
* }
|
|
321
321
|
*/
|
|
322
|
-
|
|
322
|
+
'application/json': unknown;
|
|
323
323
|
};
|
|
324
324
|
};
|
|
325
325
|
/** @description Robot not found in the current tenant. */
|
|
@@ -336,7 +336,7 @@ interface paths {
|
|
|
336
336
|
* "message": "Robot not found"
|
|
337
337
|
* }
|
|
338
338
|
*/
|
|
339
|
-
|
|
339
|
+
'application/json': unknown;
|
|
340
340
|
};
|
|
341
341
|
};
|
|
342
342
|
};
|
|
@@ -349,7 +349,7 @@ interface paths {
|
|
|
349
349
|
patch?: never;
|
|
350
350
|
trace?: never;
|
|
351
351
|
};
|
|
352
|
-
|
|
352
|
+
'/metrics/types': {
|
|
353
353
|
parameters: {
|
|
354
354
|
query?: never;
|
|
355
355
|
header?: never;
|
|
@@ -375,7 +375,7 @@ interface paths {
|
|
|
375
375
|
[name: string]: unknown;
|
|
376
376
|
};
|
|
377
377
|
content: {
|
|
378
|
-
|
|
378
|
+
'application/json': {
|
|
379
379
|
/** @example true */
|
|
380
380
|
success: boolean;
|
|
381
381
|
/** @example 200 */
|
|
@@ -385,7 +385,7 @@ interface paths {
|
|
|
385
385
|
* @example 2026-05-29T12:00:00.000Z
|
|
386
386
|
*/
|
|
387
387
|
timestamp: string;
|
|
388
|
-
data: components[
|
|
388
|
+
data: components['schemas']['MetricTypeResponseDto'][];
|
|
389
389
|
};
|
|
390
390
|
};
|
|
391
391
|
};
|
|
@@ -403,7 +403,7 @@ interface paths {
|
|
|
403
403
|
* "message": "Unauthorized"
|
|
404
404
|
* }
|
|
405
405
|
*/
|
|
406
|
-
|
|
406
|
+
'application/json': unknown;
|
|
407
407
|
};
|
|
408
408
|
};
|
|
409
409
|
};
|
|
@@ -416,7 +416,7 @@ interface paths {
|
|
|
416
416
|
patch?: never;
|
|
417
417
|
trace?: never;
|
|
418
418
|
};
|
|
419
|
-
|
|
419
|
+
'/metrics/robot-values/{robotId}': {
|
|
420
420
|
parameters: {
|
|
421
421
|
query?: never;
|
|
422
422
|
header?: never;
|
|
@@ -448,7 +448,7 @@ interface paths {
|
|
|
448
448
|
[name: string]: unknown;
|
|
449
449
|
};
|
|
450
450
|
content: {
|
|
451
|
-
|
|
451
|
+
'application/json': {
|
|
452
452
|
/** @example true */
|
|
453
453
|
success: boolean;
|
|
454
454
|
/** @example 200 */
|
|
@@ -458,7 +458,7 @@ interface paths {
|
|
|
458
458
|
* @example 2026-05-29T12:00:00.000Z
|
|
459
459
|
*/
|
|
460
460
|
timestamp: string;
|
|
461
|
-
data: components[
|
|
461
|
+
data: components['schemas']['RobotMetricLiveDto'][];
|
|
462
462
|
};
|
|
463
463
|
};
|
|
464
464
|
};
|
|
@@ -476,7 +476,7 @@ interface paths {
|
|
|
476
476
|
* "message": "email must be an email"
|
|
477
477
|
* }
|
|
478
478
|
*/
|
|
479
|
-
|
|
479
|
+
'application/json': unknown;
|
|
480
480
|
};
|
|
481
481
|
};
|
|
482
482
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -493,7 +493,7 @@ interface paths {
|
|
|
493
493
|
* "message": "Unauthorized"
|
|
494
494
|
* }
|
|
495
495
|
*/
|
|
496
|
-
|
|
496
|
+
'application/json': unknown;
|
|
497
497
|
};
|
|
498
498
|
};
|
|
499
499
|
};
|
|
@@ -506,7 +506,7 @@ interface paths {
|
|
|
506
506
|
patch?: never;
|
|
507
507
|
trace?: never;
|
|
508
508
|
};
|
|
509
|
-
|
|
509
|
+
'/disinfection/robots': {
|
|
510
510
|
parameters: {
|
|
511
511
|
query?: never;
|
|
512
512
|
header?: never;
|
|
@@ -532,7 +532,7 @@ interface paths {
|
|
|
532
532
|
[name: string]: unknown;
|
|
533
533
|
};
|
|
534
534
|
content: {
|
|
535
|
-
|
|
535
|
+
'application/json': {
|
|
536
536
|
/** @example true */
|
|
537
537
|
success: boolean;
|
|
538
538
|
/** @example 200 */
|
|
@@ -542,7 +542,7 @@ interface paths {
|
|
|
542
542
|
* @example 2026-05-29T12:00:00.000Z
|
|
543
543
|
*/
|
|
544
544
|
timestamp: string;
|
|
545
|
-
data: components[
|
|
545
|
+
data: components['schemas']['RobotDisinfectionStatsDto'][];
|
|
546
546
|
};
|
|
547
547
|
};
|
|
548
548
|
};
|
|
@@ -560,7 +560,7 @@ interface paths {
|
|
|
560
560
|
* "message": "Unauthorized"
|
|
561
561
|
* }
|
|
562
562
|
*/
|
|
563
|
-
|
|
563
|
+
'application/json': unknown;
|
|
564
564
|
};
|
|
565
565
|
};
|
|
566
566
|
};
|
|
@@ -573,7 +573,7 @@ interface paths {
|
|
|
573
573
|
patch?: never;
|
|
574
574
|
trace?: never;
|
|
575
575
|
};
|
|
576
|
-
|
|
576
|
+
'/disinfection/ongoing-jobs': {
|
|
577
577
|
parameters: {
|
|
578
578
|
query?: never;
|
|
579
579
|
header?: never;
|
|
@@ -599,7 +599,7 @@ interface paths {
|
|
|
599
599
|
[name: string]: unknown;
|
|
600
600
|
};
|
|
601
601
|
content: {
|
|
602
|
-
|
|
602
|
+
'application/json': {
|
|
603
603
|
/** @example true */
|
|
604
604
|
success: boolean;
|
|
605
605
|
/** @example 200 */
|
|
@@ -609,7 +609,7 @@ interface paths {
|
|
|
609
609
|
* @example 2026-05-29T12:00:00.000Z
|
|
610
610
|
*/
|
|
611
611
|
timestamp: string;
|
|
612
|
-
data: components[
|
|
612
|
+
data: components['schemas']['DisinfectionJobDto'][];
|
|
613
613
|
};
|
|
614
614
|
};
|
|
615
615
|
};
|
|
@@ -627,7 +627,7 @@ interface paths {
|
|
|
627
627
|
* "message": "Unauthorized"
|
|
628
628
|
* }
|
|
629
629
|
*/
|
|
630
|
-
|
|
630
|
+
'application/json': unknown;
|
|
631
631
|
};
|
|
632
632
|
};
|
|
633
633
|
};
|
|
@@ -640,7 +640,7 @@ interface paths {
|
|
|
640
640
|
patch?: never;
|
|
641
641
|
trace?: never;
|
|
642
642
|
};
|
|
643
|
-
|
|
643
|
+
'/disinfection/jobs': {
|
|
644
644
|
parameters: {
|
|
645
645
|
query?: never;
|
|
646
646
|
header?: never;
|
|
@@ -655,7 +655,7 @@ interface paths {
|
|
|
655
655
|
parameters: {
|
|
656
656
|
query?: {
|
|
657
657
|
/** @description Job outcome filter. Defaults to "all" (no status filtering) when omitted. */
|
|
658
|
-
status?:
|
|
658
|
+
status?: 'passed' | 'partial' | 'failed' | 'all';
|
|
659
659
|
/** @description UUID of a specific robot to filter by. */
|
|
660
660
|
robotId?: string;
|
|
661
661
|
};
|
|
@@ -671,7 +671,7 @@ interface paths {
|
|
|
671
671
|
[name: string]: unknown;
|
|
672
672
|
};
|
|
673
673
|
content: {
|
|
674
|
-
|
|
674
|
+
'application/json': {
|
|
675
675
|
/** @example true */
|
|
676
676
|
success: boolean;
|
|
677
677
|
/** @example 200 */
|
|
@@ -681,7 +681,7 @@ interface paths {
|
|
|
681
681
|
* @example 2026-05-29T12:00:00.000Z
|
|
682
682
|
*/
|
|
683
683
|
timestamp: string;
|
|
684
|
-
data: components[
|
|
684
|
+
data: components['schemas']['DisinfectionJobDto'][];
|
|
685
685
|
};
|
|
686
686
|
};
|
|
687
687
|
};
|
|
@@ -699,7 +699,7 @@ interface paths {
|
|
|
699
699
|
* "message": "email must be an email"
|
|
700
700
|
* }
|
|
701
701
|
*/
|
|
702
|
-
|
|
702
|
+
'application/json': unknown;
|
|
703
703
|
};
|
|
704
704
|
};
|
|
705
705
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -716,7 +716,7 @@ interface paths {
|
|
|
716
716
|
* "message": "Unauthorized"
|
|
717
717
|
* }
|
|
718
718
|
*/
|
|
719
|
-
|
|
719
|
+
'application/json': unknown;
|
|
720
720
|
};
|
|
721
721
|
};
|
|
722
722
|
};
|
|
@@ -729,7 +729,7 @@ interface paths {
|
|
|
729
729
|
patch?: never;
|
|
730
730
|
trace?: never;
|
|
731
731
|
};
|
|
732
|
-
|
|
732
|
+
'/analytics-agg/robots-count': {
|
|
733
733
|
parameters: {
|
|
734
734
|
query?: never;
|
|
735
735
|
header?: never;
|
|
@@ -755,7 +755,7 @@ interface paths {
|
|
|
755
755
|
[name: string]: unknown;
|
|
756
756
|
};
|
|
757
757
|
content: {
|
|
758
|
-
|
|
758
|
+
'application/json': {
|
|
759
759
|
/** @example true */
|
|
760
760
|
success: boolean;
|
|
761
761
|
/** @example 200 */
|
|
@@ -765,7 +765,7 @@ interface paths {
|
|
|
765
765
|
* @example 2026-05-29T12:00:00.000Z
|
|
766
766
|
*/
|
|
767
767
|
timestamp: string;
|
|
768
|
-
data: components[
|
|
768
|
+
data: components['schemas']['RobotsCountAnalyticsDataDto'];
|
|
769
769
|
};
|
|
770
770
|
};
|
|
771
771
|
};
|
|
@@ -783,7 +783,7 @@ interface paths {
|
|
|
783
783
|
* "message": "Unauthorized"
|
|
784
784
|
* }
|
|
785
785
|
*/
|
|
786
|
-
|
|
786
|
+
'application/json': unknown;
|
|
787
787
|
};
|
|
788
788
|
};
|
|
789
789
|
};
|
|
@@ -796,7 +796,7 @@ interface paths {
|
|
|
796
796
|
patch?: never;
|
|
797
797
|
trace?: never;
|
|
798
798
|
};
|
|
799
|
-
|
|
799
|
+
'/analytics-agg/disinfection-count': {
|
|
800
800
|
parameters: {
|
|
801
801
|
query?: never;
|
|
802
802
|
header?: never;
|
|
@@ -822,7 +822,7 @@ interface paths {
|
|
|
822
822
|
[name: string]: unknown;
|
|
823
823
|
};
|
|
824
824
|
content: {
|
|
825
|
-
|
|
825
|
+
'application/json': {
|
|
826
826
|
/** @example true */
|
|
827
827
|
success: boolean;
|
|
828
828
|
/** @example 200 */
|
|
@@ -832,7 +832,7 @@ interface paths {
|
|
|
832
832
|
* @example 2026-05-29T12:00:00.000Z
|
|
833
833
|
*/
|
|
834
834
|
timestamp: string;
|
|
835
|
-
data: components[
|
|
835
|
+
data: components['schemas']['DisinfectionCountAnalyticsDataDto'];
|
|
836
836
|
};
|
|
837
837
|
};
|
|
838
838
|
};
|
|
@@ -850,7 +850,7 @@ interface paths {
|
|
|
850
850
|
* "message": "Unauthorized"
|
|
851
851
|
* }
|
|
852
852
|
*/
|
|
853
|
-
|
|
853
|
+
'application/json': unknown;
|
|
854
854
|
};
|
|
855
855
|
};
|
|
856
856
|
};
|
|
@@ -863,7 +863,7 @@ interface paths {
|
|
|
863
863
|
patch?: never;
|
|
864
864
|
trace?: never;
|
|
865
865
|
};
|
|
866
|
-
|
|
866
|
+
'/analytics-agg/disinfection-operator': {
|
|
867
867
|
parameters: {
|
|
868
868
|
query?: never;
|
|
869
869
|
header?: never;
|
|
@@ -889,7 +889,7 @@ interface paths {
|
|
|
889
889
|
[name: string]: unknown;
|
|
890
890
|
};
|
|
891
891
|
content: {
|
|
892
|
-
|
|
892
|
+
'application/json': {
|
|
893
893
|
/** @example true */
|
|
894
894
|
success: boolean;
|
|
895
895
|
/** @example 200 */
|
|
@@ -899,7 +899,7 @@ interface paths {
|
|
|
899
899
|
* @example 2026-05-29T12:00:00.000Z
|
|
900
900
|
*/
|
|
901
901
|
timestamp: string;
|
|
902
|
-
data: components[
|
|
902
|
+
data: components['schemas']['DisinfectionOperatorsAnalyticsDataDto'];
|
|
903
903
|
};
|
|
904
904
|
};
|
|
905
905
|
};
|
|
@@ -917,7 +917,7 @@ interface paths {
|
|
|
917
917
|
* "message": "Unauthorized"
|
|
918
918
|
* }
|
|
919
919
|
*/
|
|
920
|
-
|
|
920
|
+
'application/json': unknown;
|
|
921
921
|
};
|
|
922
922
|
};
|
|
923
923
|
};
|
|
@@ -930,7 +930,7 @@ interface paths {
|
|
|
930
930
|
patch?: never;
|
|
931
931
|
trace?: never;
|
|
932
932
|
};
|
|
933
|
-
|
|
933
|
+
'/analytics-agg/disinfection-status': {
|
|
934
934
|
parameters: {
|
|
935
935
|
query?: never;
|
|
936
936
|
header?: never;
|
|
@@ -956,7 +956,7 @@ interface paths {
|
|
|
956
956
|
[name: string]: unknown;
|
|
957
957
|
};
|
|
958
958
|
content: {
|
|
959
|
-
|
|
959
|
+
'application/json': {
|
|
960
960
|
/** @example true */
|
|
961
961
|
success: boolean;
|
|
962
962
|
/** @example 200 */
|
|
@@ -966,7 +966,7 @@ interface paths {
|
|
|
966
966
|
* @example 2026-05-29T12:00:00.000Z
|
|
967
967
|
*/
|
|
968
968
|
timestamp: string;
|
|
969
|
-
data: components[
|
|
969
|
+
data: components['schemas']['DisinfectionStatusAnalyticsDataDto'];
|
|
970
970
|
};
|
|
971
971
|
};
|
|
972
972
|
};
|
|
@@ -984,7 +984,7 @@ interface paths {
|
|
|
984
984
|
* "message": "Unauthorized"
|
|
985
985
|
* }
|
|
986
986
|
*/
|
|
987
|
-
|
|
987
|
+
'application/json': unknown;
|
|
988
988
|
};
|
|
989
989
|
};
|
|
990
990
|
};
|
|
@@ -1017,17 +1017,17 @@ interface components {
|
|
|
1017
1017
|
*/
|
|
1018
1018
|
expiresIn: number;
|
|
1019
1019
|
/** @description Sanitized authenticated user snapshot returned with the token response. */
|
|
1020
|
-
user: components[
|
|
1020
|
+
user: components['schemas']['PublicUserDto'];
|
|
1021
1021
|
};
|
|
1022
1022
|
DisinfectionCountAnalyticsDataDto: {
|
|
1023
|
-
data: components[
|
|
1023
|
+
data: components['schemas']['DisinfectionCountResponseDto'];
|
|
1024
1024
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1025
1025
|
timestamp: string;
|
|
1026
1026
|
/**
|
|
1027
1027
|
* @example success
|
|
1028
1028
|
* @enum {string}
|
|
1029
1029
|
*/
|
|
1030
|
-
status:
|
|
1030
|
+
status: 'success' | 'error';
|
|
1031
1031
|
};
|
|
1032
1032
|
DisinfectionCountResponseDto: {
|
|
1033
1033
|
/** @example Warehouse Bot Alpha */
|
|
@@ -1068,24 +1068,24 @@ interface components {
|
|
|
1068
1068
|
totalJobs: number;
|
|
1069
1069
|
};
|
|
1070
1070
|
DisinfectionOperatorsAnalyticsDataDto: {
|
|
1071
|
-
data: components[
|
|
1071
|
+
data: components['schemas']['DisinfectionOperatorResponseDto'][];
|
|
1072
1072
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1073
1073
|
timestamp: string;
|
|
1074
1074
|
/**
|
|
1075
1075
|
* @example success
|
|
1076
1076
|
* @enum {string}
|
|
1077
1077
|
*/
|
|
1078
|
-
status:
|
|
1078
|
+
status: 'success' | 'error';
|
|
1079
1079
|
};
|
|
1080
1080
|
DisinfectionStatusAnalyticsDataDto: {
|
|
1081
|
-
data: components[
|
|
1081
|
+
data: components['schemas']['DisinfectionStatusResponseDto'][];
|
|
1082
1082
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1083
1083
|
timestamp: string;
|
|
1084
1084
|
/**
|
|
1085
1085
|
* @example success
|
|
1086
1086
|
* @enum {string}
|
|
1087
1087
|
*/
|
|
1088
|
-
status:
|
|
1088
|
+
status: 'success' | 'error';
|
|
1089
1089
|
};
|
|
1090
1090
|
DisinfectionStatusResponseDto: {
|
|
1091
1091
|
/** @example COVERAGE_DONE */
|
|
@@ -1125,12 +1125,12 @@ interface components {
|
|
|
1125
1125
|
* @example numeric
|
|
1126
1126
|
* @enum {string}
|
|
1127
1127
|
*/
|
|
1128
|
-
dataType:
|
|
1128
|
+
dataType: 'numeric' | 'string';
|
|
1129
1129
|
/**
|
|
1130
1130
|
* @example stream
|
|
1131
1131
|
* @enum {string}
|
|
1132
1132
|
*/
|
|
1133
|
-
sourceType?:
|
|
1133
|
+
sourceType?: 'non_stream' | 'stream';
|
|
1134
1134
|
};
|
|
1135
1135
|
PublicUserDto: {
|
|
1136
1136
|
/** @example c3d4e5f6-a1b2-3456-abcd-789012345678 */
|
|
@@ -1149,10 +1149,14 @@ interface components {
|
|
|
1149
1149
|
facilityId?: string | null;
|
|
1150
1150
|
fleetId?: string | null;
|
|
1151
1151
|
/** @enum {string|null} */
|
|
1152
|
-
role?:
|
|
1152
|
+
role?: 'TENANT_ADMIN' | 'WORKSPACE_ADMIN' | 'FACILITY_ADMIN' | 'FLEET_OPERATOR' | 'FLEET_VIEWER' | null;
|
|
1153
1153
|
/** @enum {string|null} */
|
|
1154
|
-
scopeType?:
|
|
1154
|
+
scopeType?: 'tenant' | 'workspace' | 'facility' | 'fleet' | null;
|
|
1155
1155
|
scopeId?: string | null;
|
|
1156
|
+
/** @description UUID of user who created this record. */
|
|
1157
|
+
createdBy?: string | null;
|
|
1158
|
+
/** @description UUID of user who last updated this record. */
|
|
1159
|
+
updatedBy?: string | null;
|
|
1156
1160
|
/**
|
|
1157
1161
|
* Format: date-time
|
|
1158
1162
|
* @example 2026-01-15T08:00:00.000Z
|
|
@@ -1283,6 +1287,16 @@ interface components {
|
|
|
1283
1287
|
* @example 2026-05-20T10:00:00.000Z
|
|
1284
1288
|
*/
|
|
1285
1289
|
lastStreamed?: string | null;
|
|
1290
|
+
/**
|
|
1291
|
+
* @description Software version currently running on the robot, or null if not yet received.
|
|
1292
|
+
* @example 2.0.84
|
|
1293
|
+
*/
|
|
1294
|
+
botVersion?: string | null;
|
|
1295
|
+
/**
|
|
1296
|
+
* @description Hardware model of the robot, or null if not yet identified.
|
|
1297
|
+
* @example Violet Gen 4 AI
|
|
1298
|
+
*/
|
|
1299
|
+
botModel?: string | null;
|
|
1286
1300
|
};
|
|
1287
1301
|
RobotMetricLiveDto: {
|
|
1288
1302
|
/**
|
|
@@ -1307,14 +1321,14 @@ interface components {
|
|
|
1307
1321
|
lastSyncTime: Record<string, never>;
|
|
1308
1322
|
};
|
|
1309
1323
|
RobotsCountAnalyticsDataDto: {
|
|
1310
|
-
data: components[
|
|
1324
|
+
data: components['schemas']['RobotsCountResponseDto'];
|
|
1311
1325
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1312
1326
|
timestamp: string;
|
|
1313
1327
|
/**
|
|
1314
1328
|
* @example success
|
|
1315
1329
|
* @enum {string}
|
|
1316
1330
|
*/
|
|
1317
|
-
status:
|
|
1331
|
+
status: 'success' | 'error';
|
|
1318
1332
|
};
|
|
1319
1333
|
RobotsCountResponseDto: {
|
|
1320
1334
|
/** @example 24 */
|
package/openapi.json
CHANGED
|
@@ -1112,6 +1112,16 @@
|
|
|
1112
1112
|
"type": "string",
|
|
1113
1113
|
"nullable": true
|
|
1114
1114
|
},
|
|
1115
|
+
"createdBy": {
|
|
1116
|
+
"type": "string",
|
|
1117
|
+
"nullable": true,
|
|
1118
|
+
"description": "UUID of user who created this record."
|
|
1119
|
+
},
|
|
1120
|
+
"updatedBy": {
|
|
1121
|
+
"type": "string",
|
|
1122
|
+
"nullable": true,
|
|
1123
|
+
"description": "UUID of user who last updated this record."
|
|
1124
|
+
},
|
|
1115
1125
|
"createdAt": {
|
|
1116
1126
|
"format": "date-time",
|
|
1117
1127
|
"type": "string",
|
|
@@ -1295,6 +1305,18 @@
|
|
|
1295
1305
|
"description": "ISO-8601 timestamp of the last received status stream update, or null.",
|
|
1296
1306
|
"example": "2026-05-20T10:00:00.000Z",
|
|
1297
1307
|
"nullable": true
|
|
1308
|
+
},
|
|
1309
|
+
"botVersion": {
|
|
1310
|
+
"type": "string",
|
|
1311
|
+
"description": "Software version currently running on the robot, or null if not yet received.",
|
|
1312
|
+
"example": "2.0.84",
|
|
1313
|
+
"nullable": true
|
|
1314
|
+
},
|
|
1315
|
+
"botModel": {
|
|
1316
|
+
"type": "string",
|
|
1317
|
+
"description": "Hardware model of the robot, or null if not yet identified.",
|
|
1318
|
+
"example": "Violet Gen 4 AI",
|
|
1319
|
+
"nullable": true
|
|
1298
1320
|
}
|
|
1299
1321
|
},
|
|
1300
1322
|
"required": ["id", "tenantId", "name", "isSubscribed"]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "haystack-contracts",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Haystack public API — TypeScript types, path constants, and OpenAPI spec for frontend integrations",
|
|
5
5
|
"author": "Haystack Robotics",
|
|
6
6
|
"license": "MIT",
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@haystack/typescript-config": "workspace:*",
|
|
48
48
|
"openapi-typescript": "^7.8.0",
|
|
49
|
+
"prettier": "catalog:",
|
|
49
50
|
"ts-node": "catalog:",
|
|
50
51
|
"tsup": "catalog:",
|
|
51
52
|
"typescript": "catalog:"
|