haystack-contracts 1.0.1 → 1.0.4
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 +76 -8
- package/dist/index.d.mts +366 -103
- package/dist/index.d.ts +366 -103
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/openapi.json +313 -34
- package/package.json +2 -1
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
|
};
|
|
@@ -146,11 +146,16 @@ interface paths {
|
|
|
146
146
|
* @example {
|
|
147
147
|
* "success": false,
|
|
148
148
|
* "statusCode": 400,
|
|
149
|
-
* "
|
|
150
|
-
* "
|
|
149
|
+
* "data": null,
|
|
150
|
+
* "error": {
|
|
151
|
+
* "message": "email must be an email",
|
|
152
|
+
* "error": "Bad Request"
|
|
153
|
+
* },
|
|
154
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
155
|
+
* "path": "/api/v1/resource"
|
|
151
156
|
* }
|
|
152
157
|
*/
|
|
153
|
-
|
|
158
|
+
'application/json': unknown;
|
|
154
159
|
};
|
|
155
160
|
};
|
|
156
161
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -163,11 +168,15 @@ interface paths {
|
|
|
163
168
|
* @example {
|
|
164
169
|
* "success": false,
|
|
165
170
|
* "statusCode": 401,
|
|
166
|
-
* "
|
|
167
|
-
* "
|
|
171
|
+
* "data": null,
|
|
172
|
+
* "error": {
|
|
173
|
+
* "message": "Unauthorized"
|
|
174
|
+
* },
|
|
175
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
176
|
+
* "path": "/api/v1/resource"
|
|
168
177
|
* }
|
|
169
178
|
*/
|
|
170
|
-
|
|
179
|
+
'application/json': unknown;
|
|
171
180
|
};
|
|
172
181
|
};
|
|
173
182
|
};
|
|
@@ -178,7 +187,7 @@ interface paths {
|
|
|
178
187
|
patch?: never;
|
|
179
188
|
trace?: never;
|
|
180
189
|
};
|
|
181
|
-
|
|
190
|
+
'/robots': {
|
|
182
191
|
parameters: {
|
|
183
192
|
query?: never;
|
|
184
193
|
header?: never;
|
|
@@ -204,7 +213,7 @@ interface paths {
|
|
|
204
213
|
[name: string]: unknown;
|
|
205
214
|
};
|
|
206
215
|
content: {
|
|
207
|
-
|
|
216
|
+
'application/json': {
|
|
208
217
|
/** @example true */
|
|
209
218
|
success: boolean;
|
|
210
219
|
/** @example 200 */
|
|
@@ -214,7 +223,7 @@ interface paths {
|
|
|
214
223
|
* @example 2026-05-29T12:00:00.000Z
|
|
215
224
|
*/
|
|
216
225
|
timestamp: string;
|
|
217
|
-
data: components[
|
|
226
|
+
data: components['schemas']['RobotListItemDto'][];
|
|
218
227
|
};
|
|
219
228
|
};
|
|
220
229
|
};
|
|
@@ -228,11 +237,15 @@ interface paths {
|
|
|
228
237
|
* @example {
|
|
229
238
|
* "success": false,
|
|
230
239
|
* "statusCode": 401,
|
|
231
|
-
* "
|
|
232
|
-
* "
|
|
240
|
+
* "data": null,
|
|
241
|
+
* "error": {
|
|
242
|
+
* "message": "Unauthorized"
|
|
243
|
+
* },
|
|
244
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
245
|
+
* "path": "/api/v1/resource"
|
|
233
246
|
* }
|
|
234
247
|
*/
|
|
235
|
-
|
|
248
|
+
'application/json': unknown;
|
|
236
249
|
};
|
|
237
250
|
};
|
|
238
251
|
};
|
|
@@ -245,7 +258,7 @@ interface paths {
|
|
|
245
258
|
patch?: never;
|
|
246
259
|
trace?: never;
|
|
247
260
|
};
|
|
248
|
-
|
|
261
|
+
'/robots/{id}': {
|
|
249
262
|
parameters: {
|
|
250
263
|
query?: never;
|
|
251
264
|
header?: never;
|
|
@@ -274,7 +287,7 @@ interface paths {
|
|
|
274
287
|
[name: string]: unknown;
|
|
275
288
|
};
|
|
276
289
|
content: {
|
|
277
|
-
|
|
290
|
+
'application/json': {
|
|
278
291
|
/** @example true */
|
|
279
292
|
success: boolean;
|
|
280
293
|
/** @example 200 */
|
|
@@ -284,7 +297,7 @@ interface paths {
|
|
|
284
297
|
* @example 2026-05-29T12:00:00.000Z
|
|
285
298
|
*/
|
|
286
299
|
timestamp: string;
|
|
287
|
-
data: components[
|
|
300
|
+
data: components['schemas']['RobotListItemDto'];
|
|
288
301
|
};
|
|
289
302
|
};
|
|
290
303
|
};
|
|
@@ -298,11 +311,16 @@ interface paths {
|
|
|
298
311
|
* @example {
|
|
299
312
|
* "success": false,
|
|
300
313
|
* "statusCode": 400,
|
|
301
|
-
* "
|
|
302
|
-
* "
|
|
314
|
+
* "data": null,
|
|
315
|
+
* "error": {
|
|
316
|
+
* "message": "email must be an email",
|
|
317
|
+
* "error": "Bad Request"
|
|
318
|
+
* },
|
|
319
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
320
|
+
* "path": "/api/v1/resource"
|
|
303
321
|
* }
|
|
304
322
|
*/
|
|
305
|
-
|
|
323
|
+
'application/json': unknown;
|
|
306
324
|
};
|
|
307
325
|
};
|
|
308
326
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -315,11 +333,15 @@ interface paths {
|
|
|
315
333
|
* @example {
|
|
316
334
|
* "success": false,
|
|
317
335
|
* "statusCode": 401,
|
|
318
|
-
* "
|
|
319
|
-
* "
|
|
336
|
+
* "data": null,
|
|
337
|
+
* "error": {
|
|
338
|
+
* "message": "Unauthorized"
|
|
339
|
+
* },
|
|
340
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
341
|
+
* "path": "/api/v1/resource"
|
|
320
342
|
* }
|
|
321
343
|
*/
|
|
322
|
-
|
|
344
|
+
'application/json': unknown;
|
|
323
345
|
};
|
|
324
346
|
};
|
|
325
347
|
/** @description Robot not found in the current tenant. */
|
|
@@ -332,11 +354,16 @@ interface paths {
|
|
|
332
354
|
* @example {
|
|
333
355
|
* "success": false,
|
|
334
356
|
* "statusCode": 404,
|
|
335
|
-
* "
|
|
336
|
-
* "
|
|
357
|
+
* "data": null,
|
|
358
|
+
* "error": {
|
|
359
|
+
* "message": "Robot not found",
|
|
360
|
+
* "error": "Not Found"
|
|
361
|
+
* },
|
|
362
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
363
|
+
* "path": "/api/v1/resource"
|
|
337
364
|
* }
|
|
338
365
|
*/
|
|
339
|
-
|
|
366
|
+
'application/json': unknown;
|
|
340
367
|
};
|
|
341
368
|
};
|
|
342
369
|
};
|
|
@@ -349,7 +376,151 @@ interface paths {
|
|
|
349
376
|
patch?: never;
|
|
350
377
|
trace?: never;
|
|
351
378
|
};
|
|
352
|
-
|
|
379
|
+
'/robots/{id}/assign': {
|
|
380
|
+
parameters: {
|
|
381
|
+
query?: never;
|
|
382
|
+
header?: never;
|
|
383
|
+
path?: never;
|
|
384
|
+
cookie?: never;
|
|
385
|
+
};
|
|
386
|
+
get?: never;
|
|
387
|
+
put?: never;
|
|
388
|
+
post?: never;
|
|
389
|
+
delete?: never;
|
|
390
|
+
options?: never;
|
|
391
|
+
head?: never;
|
|
392
|
+
/**
|
|
393
|
+
* Assign a robot to a tenant and fleet
|
|
394
|
+
* @description Updates the robot tenant and optional fleet assignment. Use fleetId null to leave the robot unassigned.
|
|
395
|
+
*/
|
|
396
|
+
patch: {
|
|
397
|
+
parameters: {
|
|
398
|
+
query?: never;
|
|
399
|
+
header?: never;
|
|
400
|
+
path: {
|
|
401
|
+
/** @description UUID of the robot to assign. */
|
|
402
|
+
id: string;
|
|
403
|
+
};
|
|
404
|
+
cookie?: never;
|
|
405
|
+
};
|
|
406
|
+
requestBody: {
|
|
407
|
+
content: {
|
|
408
|
+
'application/json': components['schemas']['AssignRobotDto'];
|
|
409
|
+
};
|
|
410
|
+
};
|
|
411
|
+
responses: {
|
|
412
|
+
/** @description Robot assignment updated. */
|
|
413
|
+
200: {
|
|
414
|
+
headers: {
|
|
415
|
+
[name: string]: unknown;
|
|
416
|
+
};
|
|
417
|
+
content: {
|
|
418
|
+
'application/json': {
|
|
419
|
+
/** @example true */
|
|
420
|
+
success: boolean;
|
|
421
|
+
/** @example 200 */
|
|
422
|
+
statusCode: number;
|
|
423
|
+
/**
|
|
424
|
+
* Format: date-time
|
|
425
|
+
* @example 2026-05-29T12:00:00.000Z
|
|
426
|
+
*/
|
|
427
|
+
timestamp: string;
|
|
428
|
+
data: components['schemas']['RobotListItemDto'];
|
|
429
|
+
};
|
|
430
|
+
};
|
|
431
|
+
};
|
|
432
|
+
/** @description Validation failed. Check that all required fields are present and correctly typed. */
|
|
433
|
+
400: {
|
|
434
|
+
headers: {
|
|
435
|
+
[name: string]: unknown;
|
|
436
|
+
};
|
|
437
|
+
content: {
|
|
438
|
+
/**
|
|
439
|
+
* @example {
|
|
440
|
+
* "success": false,
|
|
441
|
+
* "statusCode": 400,
|
|
442
|
+
* "data": null,
|
|
443
|
+
* "error": {
|
|
444
|
+
* "message": "email must be an email",
|
|
445
|
+
* "error": "Bad Request"
|
|
446
|
+
* },
|
|
447
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
448
|
+
* "path": "/api/v1/resource"
|
|
449
|
+
* }
|
|
450
|
+
*/
|
|
451
|
+
'application/json': unknown;
|
|
452
|
+
};
|
|
453
|
+
};
|
|
454
|
+
/** @description Authentication required. Provide a valid bearer token. */
|
|
455
|
+
401: {
|
|
456
|
+
headers: {
|
|
457
|
+
[name: string]: unknown;
|
|
458
|
+
};
|
|
459
|
+
content: {
|
|
460
|
+
/**
|
|
461
|
+
* @example {
|
|
462
|
+
* "success": false,
|
|
463
|
+
* "statusCode": 401,
|
|
464
|
+
* "data": null,
|
|
465
|
+
* "error": {
|
|
466
|
+
* "message": "Unauthorized"
|
|
467
|
+
* },
|
|
468
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
469
|
+
* "path": "/api/v1/resource"
|
|
470
|
+
* }
|
|
471
|
+
*/
|
|
472
|
+
'application/json': unknown;
|
|
473
|
+
};
|
|
474
|
+
};
|
|
475
|
+
/** @description Requires the `robots.manage` permission. */
|
|
476
|
+
403: {
|
|
477
|
+
headers: {
|
|
478
|
+
[name: string]: unknown;
|
|
479
|
+
};
|
|
480
|
+
content: {
|
|
481
|
+
/**
|
|
482
|
+
* @example {
|
|
483
|
+
* "success": false,
|
|
484
|
+
* "statusCode": 403,
|
|
485
|
+
* "data": null,
|
|
486
|
+
* "error": {
|
|
487
|
+
* "message": "Insufficient permissions",
|
|
488
|
+
* "error": "Forbidden"
|
|
489
|
+
* },
|
|
490
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
491
|
+
* "path": "/api/v1/resource"
|
|
492
|
+
* }
|
|
493
|
+
*/
|
|
494
|
+
'application/json': unknown;
|
|
495
|
+
};
|
|
496
|
+
};
|
|
497
|
+
/** @description Robot, tenant, or fleet not found in the current tenant. */
|
|
498
|
+
404: {
|
|
499
|
+
headers: {
|
|
500
|
+
[name: string]: unknown;
|
|
501
|
+
};
|
|
502
|
+
content: {
|
|
503
|
+
/**
|
|
504
|
+
* @example {
|
|
505
|
+
* "success": false,
|
|
506
|
+
* "statusCode": 404,
|
|
507
|
+
* "data": null,
|
|
508
|
+
* "error": {
|
|
509
|
+
* "message": "Robot, tenant, or fleet not found",
|
|
510
|
+
* "error": "Not Found"
|
|
511
|
+
* },
|
|
512
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
513
|
+
* "path": "/api/v1/resource"
|
|
514
|
+
* }
|
|
515
|
+
*/
|
|
516
|
+
'application/json': unknown;
|
|
517
|
+
};
|
|
518
|
+
};
|
|
519
|
+
};
|
|
520
|
+
};
|
|
521
|
+
trace?: never;
|
|
522
|
+
};
|
|
523
|
+
'/metrics/types': {
|
|
353
524
|
parameters: {
|
|
354
525
|
query?: never;
|
|
355
526
|
header?: never;
|
|
@@ -375,7 +546,7 @@ interface paths {
|
|
|
375
546
|
[name: string]: unknown;
|
|
376
547
|
};
|
|
377
548
|
content: {
|
|
378
|
-
|
|
549
|
+
'application/json': {
|
|
379
550
|
/** @example true */
|
|
380
551
|
success: boolean;
|
|
381
552
|
/** @example 200 */
|
|
@@ -385,7 +556,7 @@ interface paths {
|
|
|
385
556
|
* @example 2026-05-29T12:00:00.000Z
|
|
386
557
|
*/
|
|
387
558
|
timestamp: string;
|
|
388
|
-
data: components[
|
|
559
|
+
data: components['schemas']['MetricTypeResponseDto'][];
|
|
389
560
|
};
|
|
390
561
|
};
|
|
391
562
|
};
|
|
@@ -399,11 +570,15 @@ interface paths {
|
|
|
399
570
|
* @example {
|
|
400
571
|
* "success": false,
|
|
401
572
|
* "statusCode": 401,
|
|
402
|
-
* "
|
|
403
|
-
* "
|
|
573
|
+
* "data": null,
|
|
574
|
+
* "error": {
|
|
575
|
+
* "message": "Unauthorized"
|
|
576
|
+
* },
|
|
577
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
578
|
+
* "path": "/api/v1/resource"
|
|
404
579
|
* }
|
|
405
580
|
*/
|
|
406
|
-
|
|
581
|
+
'application/json': unknown;
|
|
407
582
|
};
|
|
408
583
|
};
|
|
409
584
|
};
|
|
@@ -416,7 +591,7 @@ interface paths {
|
|
|
416
591
|
patch?: never;
|
|
417
592
|
trace?: never;
|
|
418
593
|
};
|
|
419
|
-
|
|
594
|
+
'/metrics/robot-values/{robotId}': {
|
|
420
595
|
parameters: {
|
|
421
596
|
query?: never;
|
|
422
597
|
header?: never;
|
|
@@ -448,7 +623,7 @@ interface paths {
|
|
|
448
623
|
[name: string]: unknown;
|
|
449
624
|
};
|
|
450
625
|
content: {
|
|
451
|
-
|
|
626
|
+
'application/json': {
|
|
452
627
|
/** @example true */
|
|
453
628
|
success: boolean;
|
|
454
629
|
/** @example 200 */
|
|
@@ -458,7 +633,7 @@ interface paths {
|
|
|
458
633
|
* @example 2026-05-29T12:00:00.000Z
|
|
459
634
|
*/
|
|
460
635
|
timestamp: string;
|
|
461
|
-
data: components[
|
|
636
|
+
data: components['schemas']['RobotMetricLiveDto'][];
|
|
462
637
|
};
|
|
463
638
|
};
|
|
464
639
|
};
|
|
@@ -472,11 +647,16 @@ interface paths {
|
|
|
472
647
|
* @example {
|
|
473
648
|
* "success": false,
|
|
474
649
|
* "statusCode": 400,
|
|
475
|
-
* "
|
|
476
|
-
* "
|
|
650
|
+
* "data": null,
|
|
651
|
+
* "error": {
|
|
652
|
+
* "message": "email must be an email",
|
|
653
|
+
* "error": "Bad Request"
|
|
654
|
+
* },
|
|
655
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
656
|
+
* "path": "/api/v1/resource"
|
|
477
657
|
* }
|
|
478
658
|
*/
|
|
479
|
-
|
|
659
|
+
'application/json': unknown;
|
|
480
660
|
};
|
|
481
661
|
};
|
|
482
662
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -489,11 +669,15 @@ interface paths {
|
|
|
489
669
|
* @example {
|
|
490
670
|
* "success": false,
|
|
491
671
|
* "statusCode": 401,
|
|
492
|
-
* "
|
|
493
|
-
* "
|
|
672
|
+
* "data": null,
|
|
673
|
+
* "error": {
|
|
674
|
+
* "message": "Unauthorized"
|
|
675
|
+
* },
|
|
676
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
677
|
+
* "path": "/api/v1/resource"
|
|
494
678
|
* }
|
|
495
679
|
*/
|
|
496
|
-
|
|
680
|
+
'application/json': unknown;
|
|
497
681
|
};
|
|
498
682
|
};
|
|
499
683
|
};
|
|
@@ -506,7 +690,7 @@ interface paths {
|
|
|
506
690
|
patch?: never;
|
|
507
691
|
trace?: never;
|
|
508
692
|
};
|
|
509
|
-
|
|
693
|
+
'/disinfection/robots': {
|
|
510
694
|
parameters: {
|
|
511
695
|
query?: never;
|
|
512
696
|
header?: never;
|
|
@@ -532,7 +716,7 @@ interface paths {
|
|
|
532
716
|
[name: string]: unknown;
|
|
533
717
|
};
|
|
534
718
|
content: {
|
|
535
|
-
|
|
719
|
+
'application/json': {
|
|
536
720
|
/** @example true */
|
|
537
721
|
success: boolean;
|
|
538
722
|
/** @example 200 */
|
|
@@ -542,7 +726,7 @@ interface paths {
|
|
|
542
726
|
* @example 2026-05-29T12:00:00.000Z
|
|
543
727
|
*/
|
|
544
728
|
timestamp: string;
|
|
545
|
-
data: components[
|
|
729
|
+
data: components['schemas']['RobotDisinfectionStatsDto'][];
|
|
546
730
|
};
|
|
547
731
|
};
|
|
548
732
|
};
|
|
@@ -556,11 +740,15 @@ interface paths {
|
|
|
556
740
|
* @example {
|
|
557
741
|
* "success": false,
|
|
558
742
|
* "statusCode": 401,
|
|
559
|
-
* "
|
|
560
|
-
* "
|
|
743
|
+
* "data": null,
|
|
744
|
+
* "error": {
|
|
745
|
+
* "message": "Unauthorized"
|
|
746
|
+
* },
|
|
747
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
748
|
+
* "path": "/api/v1/resource"
|
|
561
749
|
* }
|
|
562
750
|
*/
|
|
563
|
-
|
|
751
|
+
'application/json': unknown;
|
|
564
752
|
};
|
|
565
753
|
};
|
|
566
754
|
};
|
|
@@ -573,7 +761,7 @@ interface paths {
|
|
|
573
761
|
patch?: never;
|
|
574
762
|
trace?: never;
|
|
575
763
|
};
|
|
576
|
-
|
|
764
|
+
'/disinfection/ongoing-jobs': {
|
|
577
765
|
parameters: {
|
|
578
766
|
query?: never;
|
|
579
767
|
header?: never;
|
|
@@ -599,7 +787,7 @@ interface paths {
|
|
|
599
787
|
[name: string]: unknown;
|
|
600
788
|
};
|
|
601
789
|
content: {
|
|
602
|
-
|
|
790
|
+
'application/json': {
|
|
603
791
|
/** @example true */
|
|
604
792
|
success: boolean;
|
|
605
793
|
/** @example 200 */
|
|
@@ -609,7 +797,7 @@ interface paths {
|
|
|
609
797
|
* @example 2026-05-29T12:00:00.000Z
|
|
610
798
|
*/
|
|
611
799
|
timestamp: string;
|
|
612
|
-
data: components[
|
|
800
|
+
data: components['schemas']['DisinfectionJobDto'][];
|
|
613
801
|
};
|
|
614
802
|
};
|
|
615
803
|
};
|
|
@@ -623,11 +811,15 @@ interface paths {
|
|
|
623
811
|
* @example {
|
|
624
812
|
* "success": false,
|
|
625
813
|
* "statusCode": 401,
|
|
626
|
-
* "
|
|
627
|
-
* "
|
|
814
|
+
* "data": null,
|
|
815
|
+
* "error": {
|
|
816
|
+
* "message": "Unauthorized"
|
|
817
|
+
* },
|
|
818
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
819
|
+
* "path": "/api/v1/resource"
|
|
628
820
|
* }
|
|
629
821
|
*/
|
|
630
|
-
|
|
822
|
+
'application/json': unknown;
|
|
631
823
|
};
|
|
632
824
|
};
|
|
633
825
|
};
|
|
@@ -640,7 +832,7 @@ interface paths {
|
|
|
640
832
|
patch?: never;
|
|
641
833
|
trace?: never;
|
|
642
834
|
};
|
|
643
|
-
|
|
835
|
+
'/disinfection/jobs': {
|
|
644
836
|
parameters: {
|
|
645
837
|
query?: never;
|
|
646
838
|
header?: never;
|
|
@@ -655,7 +847,7 @@ interface paths {
|
|
|
655
847
|
parameters: {
|
|
656
848
|
query?: {
|
|
657
849
|
/** @description Job outcome filter. Defaults to "all" (no status filtering) when omitted. */
|
|
658
|
-
status?:
|
|
850
|
+
status?: 'passed' | 'partial' | 'failed' | 'all';
|
|
659
851
|
/** @description UUID of a specific robot to filter by. */
|
|
660
852
|
robotId?: string;
|
|
661
853
|
};
|
|
@@ -671,7 +863,7 @@ interface paths {
|
|
|
671
863
|
[name: string]: unknown;
|
|
672
864
|
};
|
|
673
865
|
content: {
|
|
674
|
-
|
|
866
|
+
'application/json': {
|
|
675
867
|
/** @example true */
|
|
676
868
|
success: boolean;
|
|
677
869
|
/** @example 200 */
|
|
@@ -681,7 +873,7 @@ interface paths {
|
|
|
681
873
|
* @example 2026-05-29T12:00:00.000Z
|
|
682
874
|
*/
|
|
683
875
|
timestamp: string;
|
|
684
|
-
data: components[
|
|
876
|
+
data: components['schemas']['DisinfectionJobDto'][];
|
|
685
877
|
};
|
|
686
878
|
};
|
|
687
879
|
};
|
|
@@ -695,11 +887,16 @@ interface paths {
|
|
|
695
887
|
* @example {
|
|
696
888
|
* "success": false,
|
|
697
889
|
* "statusCode": 400,
|
|
698
|
-
* "
|
|
699
|
-
* "
|
|
890
|
+
* "data": null,
|
|
891
|
+
* "error": {
|
|
892
|
+
* "message": "email must be an email",
|
|
893
|
+
* "error": "Bad Request"
|
|
894
|
+
* },
|
|
895
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
896
|
+
* "path": "/api/v1/resource"
|
|
700
897
|
* }
|
|
701
898
|
*/
|
|
702
|
-
|
|
899
|
+
'application/json': unknown;
|
|
703
900
|
};
|
|
704
901
|
};
|
|
705
902
|
/** @description Authentication required. Provide a valid bearer token. */
|
|
@@ -712,11 +909,15 @@ interface paths {
|
|
|
712
909
|
* @example {
|
|
713
910
|
* "success": false,
|
|
714
911
|
* "statusCode": 401,
|
|
715
|
-
* "
|
|
716
|
-
* "
|
|
912
|
+
* "data": null,
|
|
913
|
+
* "error": {
|
|
914
|
+
* "message": "Unauthorized"
|
|
915
|
+
* },
|
|
916
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
917
|
+
* "path": "/api/v1/resource"
|
|
717
918
|
* }
|
|
718
919
|
*/
|
|
719
|
-
|
|
920
|
+
'application/json': unknown;
|
|
720
921
|
};
|
|
721
922
|
};
|
|
722
923
|
};
|
|
@@ -729,7 +930,7 @@ interface paths {
|
|
|
729
930
|
patch?: never;
|
|
730
931
|
trace?: never;
|
|
731
932
|
};
|
|
732
|
-
|
|
933
|
+
'/analytics-agg/robots-count': {
|
|
733
934
|
parameters: {
|
|
734
935
|
query?: never;
|
|
735
936
|
header?: never;
|
|
@@ -755,7 +956,7 @@ interface paths {
|
|
|
755
956
|
[name: string]: unknown;
|
|
756
957
|
};
|
|
757
958
|
content: {
|
|
758
|
-
|
|
959
|
+
'application/json': {
|
|
759
960
|
/** @example true */
|
|
760
961
|
success: boolean;
|
|
761
962
|
/** @example 200 */
|
|
@@ -765,7 +966,7 @@ interface paths {
|
|
|
765
966
|
* @example 2026-05-29T12:00:00.000Z
|
|
766
967
|
*/
|
|
767
968
|
timestamp: string;
|
|
768
|
-
data: components[
|
|
969
|
+
data: components['schemas']['RobotsCountAnalyticsDataDto'];
|
|
769
970
|
};
|
|
770
971
|
};
|
|
771
972
|
};
|
|
@@ -779,11 +980,15 @@ interface paths {
|
|
|
779
980
|
* @example {
|
|
780
981
|
* "success": false,
|
|
781
982
|
* "statusCode": 401,
|
|
782
|
-
* "
|
|
783
|
-
* "
|
|
983
|
+
* "data": null,
|
|
984
|
+
* "error": {
|
|
985
|
+
* "message": "Unauthorized"
|
|
986
|
+
* },
|
|
987
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
988
|
+
* "path": "/api/v1/resource"
|
|
784
989
|
* }
|
|
785
990
|
*/
|
|
786
|
-
|
|
991
|
+
'application/json': unknown;
|
|
787
992
|
};
|
|
788
993
|
};
|
|
789
994
|
};
|
|
@@ -796,7 +1001,7 @@ interface paths {
|
|
|
796
1001
|
patch?: never;
|
|
797
1002
|
trace?: never;
|
|
798
1003
|
};
|
|
799
|
-
|
|
1004
|
+
'/analytics-agg/disinfection-count': {
|
|
800
1005
|
parameters: {
|
|
801
1006
|
query?: never;
|
|
802
1007
|
header?: never;
|
|
@@ -822,7 +1027,7 @@ interface paths {
|
|
|
822
1027
|
[name: string]: unknown;
|
|
823
1028
|
};
|
|
824
1029
|
content: {
|
|
825
|
-
|
|
1030
|
+
'application/json': {
|
|
826
1031
|
/** @example true */
|
|
827
1032
|
success: boolean;
|
|
828
1033
|
/** @example 200 */
|
|
@@ -832,7 +1037,7 @@ interface paths {
|
|
|
832
1037
|
* @example 2026-05-29T12:00:00.000Z
|
|
833
1038
|
*/
|
|
834
1039
|
timestamp: string;
|
|
835
|
-
data: components[
|
|
1040
|
+
data: components['schemas']['DisinfectionCountAnalyticsDataDto'];
|
|
836
1041
|
};
|
|
837
1042
|
};
|
|
838
1043
|
};
|
|
@@ -846,11 +1051,15 @@ interface paths {
|
|
|
846
1051
|
* @example {
|
|
847
1052
|
* "success": false,
|
|
848
1053
|
* "statusCode": 401,
|
|
849
|
-
* "
|
|
850
|
-
* "
|
|
1054
|
+
* "data": null,
|
|
1055
|
+
* "error": {
|
|
1056
|
+
* "message": "Unauthorized"
|
|
1057
|
+
* },
|
|
1058
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
1059
|
+
* "path": "/api/v1/resource"
|
|
851
1060
|
* }
|
|
852
1061
|
*/
|
|
853
|
-
|
|
1062
|
+
'application/json': unknown;
|
|
854
1063
|
};
|
|
855
1064
|
};
|
|
856
1065
|
};
|
|
@@ -863,7 +1072,7 @@ interface paths {
|
|
|
863
1072
|
patch?: never;
|
|
864
1073
|
trace?: never;
|
|
865
1074
|
};
|
|
866
|
-
|
|
1075
|
+
'/analytics-agg/disinfection-operator': {
|
|
867
1076
|
parameters: {
|
|
868
1077
|
query?: never;
|
|
869
1078
|
header?: never;
|
|
@@ -889,7 +1098,7 @@ interface paths {
|
|
|
889
1098
|
[name: string]: unknown;
|
|
890
1099
|
};
|
|
891
1100
|
content: {
|
|
892
|
-
|
|
1101
|
+
'application/json': {
|
|
893
1102
|
/** @example true */
|
|
894
1103
|
success: boolean;
|
|
895
1104
|
/** @example 200 */
|
|
@@ -899,7 +1108,7 @@ interface paths {
|
|
|
899
1108
|
* @example 2026-05-29T12:00:00.000Z
|
|
900
1109
|
*/
|
|
901
1110
|
timestamp: string;
|
|
902
|
-
data: components[
|
|
1111
|
+
data: components['schemas']['DisinfectionOperatorsAnalyticsDataDto'];
|
|
903
1112
|
};
|
|
904
1113
|
};
|
|
905
1114
|
};
|
|
@@ -913,11 +1122,15 @@ interface paths {
|
|
|
913
1122
|
* @example {
|
|
914
1123
|
* "success": false,
|
|
915
1124
|
* "statusCode": 401,
|
|
916
|
-
* "
|
|
917
|
-
* "
|
|
1125
|
+
* "data": null,
|
|
1126
|
+
* "error": {
|
|
1127
|
+
* "message": "Unauthorized"
|
|
1128
|
+
* },
|
|
1129
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
1130
|
+
* "path": "/api/v1/resource"
|
|
918
1131
|
* }
|
|
919
1132
|
*/
|
|
920
|
-
|
|
1133
|
+
'application/json': unknown;
|
|
921
1134
|
};
|
|
922
1135
|
};
|
|
923
1136
|
};
|
|
@@ -930,7 +1143,7 @@ interface paths {
|
|
|
930
1143
|
patch?: never;
|
|
931
1144
|
trace?: never;
|
|
932
1145
|
};
|
|
933
|
-
|
|
1146
|
+
'/analytics-agg/disinfection-status': {
|
|
934
1147
|
parameters: {
|
|
935
1148
|
query?: never;
|
|
936
1149
|
header?: never;
|
|
@@ -956,7 +1169,7 @@ interface paths {
|
|
|
956
1169
|
[name: string]: unknown;
|
|
957
1170
|
};
|
|
958
1171
|
content: {
|
|
959
|
-
|
|
1172
|
+
'application/json': {
|
|
960
1173
|
/** @example true */
|
|
961
1174
|
success: boolean;
|
|
962
1175
|
/** @example 200 */
|
|
@@ -966,7 +1179,7 @@ interface paths {
|
|
|
966
1179
|
* @example 2026-05-29T12:00:00.000Z
|
|
967
1180
|
*/
|
|
968
1181
|
timestamp: string;
|
|
969
|
-
data: components[
|
|
1182
|
+
data: components['schemas']['DisinfectionStatusAnalyticsDataDto'];
|
|
970
1183
|
};
|
|
971
1184
|
};
|
|
972
1185
|
};
|
|
@@ -980,11 +1193,15 @@ interface paths {
|
|
|
980
1193
|
* @example {
|
|
981
1194
|
* "success": false,
|
|
982
1195
|
* "statusCode": 401,
|
|
983
|
-
* "
|
|
984
|
-
* "
|
|
1196
|
+
* "data": null,
|
|
1197
|
+
* "error": {
|
|
1198
|
+
* "message": "Unauthorized"
|
|
1199
|
+
* },
|
|
1200
|
+
* "timestamp": "2026-05-29T12:00:00.000Z",
|
|
1201
|
+
* "path": "/api/v1/resource"
|
|
985
1202
|
* }
|
|
986
1203
|
*/
|
|
987
|
-
|
|
1204
|
+
'application/json': unknown;
|
|
988
1205
|
};
|
|
989
1206
|
};
|
|
990
1207
|
};
|
|
@@ -1000,6 +1217,17 @@ interface paths {
|
|
|
1000
1217
|
}
|
|
1001
1218
|
interface components {
|
|
1002
1219
|
schemas: {
|
|
1220
|
+
AssignRobotDto: {
|
|
1221
|
+
/** @description Workspace UUID. Tenant admin may set any workspace; workspace admin may only set their own workspace(s). Lower roles must omit this field. */
|
|
1222
|
+
workspaceId?: string | null;
|
|
1223
|
+
/** @description Facility UUID. Null unassigns from facility (UNASSIGNED). */
|
|
1224
|
+
facilityId?: string | null;
|
|
1225
|
+
/** @description Fleet UUID. Null unassigns from fleet. */
|
|
1226
|
+
fleetId?: string | null;
|
|
1227
|
+
isSubscribed?: boolean;
|
|
1228
|
+
changedBy?: string;
|
|
1229
|
+
changeReason?: string;
|
|
1230
|
+
};
|
|
1003
1231
|
AuthResponseDto: {
|
|
1004
1232
|
/**
|
|
1005
1233
|
* @description Short-lived JWT access token (15 min).
|
|
@@ -1017,17 +1245,17 @@ interface components {
|
|
|
1017
1245
|
*/
|
|
1018
1246
|
expiresIn: number;
|
|
1019
1247
|
/** @description Sanitized authenticated user snapshot returned with the token response. */
|
|
1020
|
-
user: components[
|
|
1248
|
+
user: components['schemas']['PublicUserDto'];
|
|
1021
1249
|
};
|
|
1022
1250
|
DisinfectionCountAnalyticsDataDto: {
|
|
1023
|
-
data: components[
|
|
1251
|
+
data: components['schemas']['DisinfectionCountResponseDto'];
|
|
1024
1252
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1025
1253
|
timestamp: string;
|
|
1026
1254
|
/**
|
|
1027
1255
|
* @example success
|
|
1028
1256
|
* @enum {string}
|
|
1029
1257
|
*/
|
|
1030
|
-
status:
|
|
1258
|
+
status: 'success' | 'error';
|
|
1031
1259
|
};
|
|
1032
1260
|
DisinfectionCountResponseDto: {
|
|
1033
1261
|
/** @example Warehouse Bot Alpha */
|
|
@@ -1068,24 +1296,24 @@ interface components {
|
|
|
1068
1296
|
totalJobs: number;
|
|
1069
1297
|
};
|
|
1070
1298
|
DisinfectionOperatorsAnalyticsDataDto: {
|
|
1071
|
-
data: components[
|
|
1299
|
+
data: components['schemas']['DisinfectionOperatorResponseDto'][];
|
|
1072
1300
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1073
1301
|
timestamp: string;
|
|
1074
1302
|
/**
|
|
1075
1303
|
* @example success
|
|
1076
1304
|
* @enum {string}
|
|
1077
1305
|
*/
|
|
1078
|
-
status:
|
|
1306
|
+
status: 'success' | 'error';
|
|
1079
1307
|
};
|
|
1080
1308
|
DisinfectionStatusAnalyticsDataDto: {
|
|
1081
|
-
data: components[
|
|
1309
|
+
data: components['schemas']['DisinfectionStatusResponseDto'][];
|
|
1082
1310
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1083
1311
|
timestamp: string;
|
|
1084
1312
|
/**
|
|
1085
1313
|
* @example success
|
|
1086
1314
|
* @enum {string}
|
|
1087
1315
|
*/
|
|
1088
|
-
status:
|
|
1316
|
+
status: 'success' | 'error';
|
|
1089
1317
|
};
|
|
1090
1318
|
DisinfectionStatusResponseDto: {
|
|
1091
1319
|
/** @example COVERAGE_DONE */
|
|
@@ -1125,12 +1353,12 @@ interface components {
|
|
|
1125
1353
|
* @example numeric
|
|
1126
1354
|
* @enum {string}
|
|
1127
1355
|
*/
|
|
1128
|
-
dataType:
|
|
1356
|
+
dataType: 'numeric' | 'string';
|
|
1129
1357
|
/**
|
|
1130
1358
|
* @example stream
|
|
1131
1359
|
* @enum {string}
|
|
1132
1360
|
*/
|
|
1133
|
-
sourceType?:
|
|
1361
|
+
sourceType?: 'non_stream' | 'stream';
|
|
1134
1362
|
};
|
|
1135
1363
|
PublicUserDto: {
|
|
1136
1364
|
/** @example c3d4e5f6-a1b2-3456-abcd-789012345678 */
|
|
@@ -1149,10 +1377,14 @@ interface components {
|
|
|
1149
1377
|
facilityId?: string | null;
|
|
1150
1378
|
fleetId?: string | null;
|
|
1151
1379
|
/** @enum {string|null} */
|
|
1152
|
-
role?:
|
|
1380
|
+
role?: 'TENANT_ADMIN' | 'WORKSPACE_ADMIN' | 'FACILITY_ADMIN' | 'FLEET_OPERATOR' | 'FLEET_VIEWER' | null;
|
|
1153
1381
|
/** @enum {string|null} */
|
|
1154
|
-
scopeType?:
|
|
1382
|
+
scopeType?: 'tenant' | 'workspace' | 'facility' | 'fleet' | null;
|
|
1155
1383
|
scopeId?: string | null;
|
|
1384
|
+
/** @description UUID of user who created this record. */
|
|
1385
|
+
createdBy?: string | null;
|
|
1386
|
+
/** @description UUID of user who last updated this record. */
|
|
1387
|
+
updatedBy?: string | null;
|
|
1156
1388
|
/**
|
|
1157
1389
|
* Format: date-time
|
|
1158
1390
|
* @example 2026-01-15T08:00:00.000Z
|
|
@@ -1203,6 +1435,26 @@ interface components {
|
|
|
1203
1435
|
* @example Warehouse Bot Alpha
|
|
1204
1436
|
*/
|
|
1205
1437
|
name: string;
|
|
1438
|
+
/**
|
|
1439
|
+
* @description UUID of the workspace this robot is assigned to.
|
|
1440
|
+
* @example b2000000-0000-4000-8000-000000000002
|
|
1441
|
+
*/
|
|
1442
|
+
workspaceId?: string | null;
|
|
1443
|
+
/**
|
|
1444
|
+
* @description Name of the workspace this robot is assigned to.
|
|
1445
|
+
* @example North Hospital Cluster
|
|
1446
|
+
*/
|
|
1447
|
+
workspaceName?: string | null;
|
|
1448
|
+
/**
|
|
1449
|
+
* @description UUID of the facility this robot is assigned to.
|
|
1450
|
+
* @example c3000000-0000-4000-8000-000000000003
|
|
1451
|
+
*/
|
|
1452
|
+
facilityId?: string | null;
|
|
1453
|
+
/**
|
|
1454
|
+
* @description Name of the facility this robot is assigned to.
|
|
1455
|
+
* @example City General Hospital
|
|
1456
|
+
*/
|
|
1457
|
+
facilityName?: string | null;
|
|
1206
1458
|
/**
|
|
1207
1459
|
* @description UUID of the fleet this robot is assigned to.
|
|
1208
1460
|
* @example f1000000-0000-4000-8000-000000000001
|
|
@@ -1283,6 +1535,16 @@ interface components {
|
|
|
1283
1535
|
* @example 2026-05-20T10:00:00.000Z
|
|
1284
1536
|
*/
|
|
1285
1537
|
lastStreamed?: string | null;
|
|
1538
|
+
/**
|
|
1539
|
+
* @description Software version currently running on the robot, or null if not yet received.
|
|
1540
|
+
* @example 2.0.84
|
|
1541
|
+
*/
|
|
1542
|
+
botVersion?: string | null;
|
|
1543
|
+
/**
|
|
1544
|
+
* @description Hardware model of the robot, or null if not yet identified.
|
|
1545
|
+
* @example Violet Gen 4 AI
|
|
1546
|
+
*/
|
|
1547
|
+
botModel?: string | null;
|
|
1286
1548
|
};
|
|
1287
1549
|
RobotMetricLiveDto: {
|
|
1288
1550
|
/**
|
|
@@ -1307,14 +1569,14 @@ interface components {
|
|
|
1307
1569
|
lastSyncTime: Record<string, never>;
|
|
1308
1570
|
};
|
|
1309
1571
|
RobotsCountAnalyticsDataDto: {
|
|
1310
|
-
data: components[
|
|
1572
|
+
data: components['schemas']['RobotsCountResponseDto'];
|
|
1311
1573
|
/** @example 2026-05-29T12:00:00.000Z */
|
|
1312
1574
|
timestamp: string;
|
|
1313
1575
|
/**
|
|
1314
1576
|
* @example success
|
|
1315
1577
|
* @enum {string}
|
|
1316
1578
|
*/
|
|
1317
|
-
status:
|
|
1579
|
+
status: 'success' | 'error';
|
|
1318
1580
|
};
|
|
1319
1581
|
RobotsCountResponseDto: {
|
|
1320
1582
|
/** @example 24 */
|
|
@@ -1347,6 +1609,7 @@ type LoginPayload = Schemas['LoginDto'];
|
|
|
1347
1609
|
type AuthResponse = Schemas['AuthResponseDto'];
|
|
1348
1610
|
type PublicUser = Schemas['PublicUserDto'];
|
|
1349
1611
|
type RobotListItem = Schemas['RobotListItemDto'];
|
|
1612
|
+
type AssignRobotPayload = Schemas['AssignRobotDto'];
|
|
1350
1613
|
type MetricType = Schemas['MetricTypeResponseDto'];
|
|
1351
1614
|
type RobotMetricLive = Schemas['RobotMetricLiveDto'];
|
|
1352
1615
|
type RobotDisinfectionStats = Schemas['RobotDisinfectionStatsDto'];
|
|
@@ -1394,4 +1657,4 @@ interface PaginatedSuccessResponse<T> extends ApiSuccessResponse<T[]> {
|
|
|
1394
1657
|
meta: PaginationMeta;
|
|
1395
1658
|
}
|
|
1396
1659
|
|
|
1397
|
-
export { AnalyticsAggregateStatus, type ApiData, type ApiErrorResponse, type ApiResult, type ApiSuccessResponse, type AuthResponse, type DisinfectionCountAggregate, type DisinfectionCountAnalyticsData, type DisinfectionJob, type DisinfectionOperatorAggregate, type DisinfectionOperatorsAnalyticsData, type DisinfectionStatusAggregate, type DisinfectionStatusAnalyticsData, HAYSTACK_API_BASE_PATH, HAYSTACK_API_VERSION, HAYSTACK_PRODUCTION_API_URL, type LoginPayload, MetricDataType, MetricSourceType, type MetricType, PUBLIC_API_META, PUBLIC_OPENAPI_JSON, type PaginatedSuccessResponse, type PaginationMeta, PublicApiPath, type PublicUser, type RobotDisinfectionStats, type RobotListItem, type RobotMetricLive, type RobotsCountAggregate, type RobotsCountAnalyticsData, Role, ScopeType, type components, type operations, type paths };
|
|
1660
|
+
export { AnalyticsAggregateStatus, type ApiData, type ApiErrorResponse, type ApiResult, type ApiSuccessResponse, type AssignRobotPayload, type AuthResponse, type DisinfectionCountAggregate, type DisinfectionCountAnalyticsData, type DisinfectionJob, type DisinfectionOperatorAggregate, type DisinfectionOperatorsAnalyticsData, type DisinfectionStatusAggregate, type DisinfectionStatusAnalyticsData, HAYSTACK_API_BASE_PATH, HAYSTACK_API_VERSION, HAYSTACK_PRODUCTION_API_URL, type LoginPayload, MetricDataType, MetricSourceType, type MetricType, PUBLIC_API_META, PUBLIC_OPENAPI_JSON, type PaginatedSuccessResponse, type PaginationMeta, PublicApiPath, type PublicUser, type RobotDisinfectionStats, type RobotListItem, type RobotMetricLive, type RobotsCountAggregate, type RobotsCountAnalyticsData, Role, ScopeType, type components, type operations, type paths };
|