@deepintel-ltd/farmpro-contracts 1.7.19 → 1.7.21

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.
Files changed (84) hide show
  1. package/dist/index.d.ts +18 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +17 -0
  4. package/dist/routes/agents.routes.d.ts +6 -6
  5. package/dist/routes/commodity-deals.routes.d.ts +2702 -0
  6. package/dist/routes/commodity-deals.routes.d.ts.map +1 -0
  7. package/dist/routes/commodity-deals.routes.js +83 -0
  8. package/dist/routes/cooperative.routes.d.ts +1327 -0
  9. package/dist/routes/cooperative.routes.d.ts.map +1 -0
  10. package/dist/routes/cooperative.routes.js +47 -0
  11. package/dist/routes/extension.routes.d.ts +2431 -0
  12. package/dist/routes/extension.routes.d.ts.map +1 -0
  13. package/dist/routes/extension.routes.js +75 -0
  14. package/dist/routes/farms.routes.d.ts +775 -0
  15. package/dist/routes/farms.routes.d.ts.map +1 -1
  16. package/dist/routes/farms.routes.js +15 -1
  17. package/dist/routes/field-monitoring.routes.d.ts +505 -0
  18. package/dist/routes/field-monitoring.routes.d.ts.map +1 -1
  19. package/dist/routes/field-monitoring.routes.js +23 -1
  20. package/dist/routes/fields.routes.d.ts +156 -155
  21. package/dist/routes/fields.routes.d.ts.map +1 -1
  22. package/dist/routes/index.d.ts +18 -0
  23. package/dist/routes/index.d.ts.map +1 -1
  24. package/dist/routes/index.js +12 -0
  25. package/dist/routes/invoices.routes.d.ts +49 -0
  26. package/dist/routes/invoices.routes.d.ts.map +1 -1
  27. package/dist/routes/live-monitor.routes.d.ts +513 -0
  28. package/dist/routes/live-monitor.routes.d.ts.map +1 -0
  29. package/dist/routes/live-monitor.routes.js +81 -0
  30. package/dist/routes/livestock-map.routes.d.ts +4 -4
  31. package/dist/routes/monitoring-visualization.routes.d.ts +4 -4
  32. package/dist/routes/notifications.routes.d.ts +1350 -0
  33. package/dist/routes/notifications.routes.d.ts.map +1 -0
  34. package/dist/routes/notifications.routes.js +66 -0
  35. package/dist/routes/organizations.routes.d.ts +49 -0
  36. package/dist/routes/organizations.routes.d.ts.map +1 -1
  37. package/dist/routes/team-payments.routes.d.ts +9571 -0
  38. package/dist/routes/team-payments.routes.d.ts.map +1 -0
  39. package/dist/routes/team-payments.routes.js +262 -0
  40. package/dist/routes/waybills.routes.d.ts +42 -0
  41. package/dist/routes/waybills.routes.d.ts.map +1 -1
  42. package/dist/schemas/agents.schemas.d.ts +1 -0
  43. package/dist/schemas/agents.schemas.d.ts.map +1 -1
  44. package/dist/schemas/commodity-deals.schemas.d.ts +1109 -0
  45. package/dist/schemas/commodity-deals.schemas.d.ts.map +1 -0
  46. package/dist/schemas/commodity-deals.schemas.js +82 -0
  47. package/dist/schemas/cooperative.schemas.d.ts +560 -0
  48. package/dist/schemas/cooperative.schemas.d.ts.map +1 -0
  49. package/dist/schemas/cooperative.schemas.js +71 -0
  50. package/dist/schemas/extension.schemas.d.ts +1204 -0
  51. package/dist/schemas/extension.schemas.d.ts.map +1 -0
  52. package/dist/schemas/extension.schemas.js +68 -0
  53. package/dist/schemas/farms.schemas.d.ts +591 -0
  54. package/dist/schemas/farms.schemas.d.ts.map +1 -1
  55. package/dist/schemas/farms.schemas.js +44 -0
  56. package/dist/schemas/field-monitoring.schemas.d.ts +276 -0
  57. package/dist/schemas/field-monitoring.schemas.d.ts.map +1 -1
  58. package/dist/schemas/field-monitoring.schemas.js +9 -0
  59. package/dist/schemas/field-observations.schemas.d.ts +1 -0
  60. package/dist/schemas/field-observations.schemas.d.ts.map +1 -1
  61. package/dist/schemas/fields.schemas.d.ts +188 -186
  62. package/dist/schemas/fields.schemas.d.ts.map +1 -1
  63. package/dist/schemas/fields.schemas.js +10 -2
  64. package/dist/schemas/invoices.schemas.d.ts +38 -0
  65. package/dist/schemas/invoices.schemas.d.ts.map +1 -1
  66. package/dist/schemas/invoices.schemas.js +2 -0
  67. package/dist/schemas/live-monitor.schemas.d.ts +596 -0
  68. package/dist/schemas/live-monitor.schemas.d.ts.map +1 -0
  69. package/dist/schemas/live-monitor.schemas.js +107 -0
  70. package/dist/schemas/livestock-map.schemas.d.ts +10 -10
  71. package/dist/schemas/monitoring-visualization.schemas.d.ts +4 -4
  72. package/dist/schemas/notifications.schemas.d.ts +464 -0
  73. package/dist/schemas/notifications.schemas.d.ts.map +1 -0
  74. package/dist/schemas/notifications.schemas.js +40 -0
  75. package/dist/schemas/organizations.schemas.d.ts +38 -0
  76. package/dist/schemas/organizations.schemas.d.ts.map +1 -1
  77. package/dist/schemas/organizations.schemas.js +2 -0
  78. package/dist/schemas/team-payments.schemas.d.ts +2604 -0
  79. package/dist/schemas/team-payments.schemas.d.ts.map +1 -0
  80. package/dist/schemas/team-payments.schemas.js +151 -0
  81. package/dist/schemas/waybills.schemas.d.ts +48 -0
  82. package/dist/schemas/waybills.schemas.d.ts.map +1 -1
  83. package/dist/schemas/waybills.schemas.js +3 -0
  84. package/package.json +1 -1
@@ -0,0 +1,513 @@
1
+ import { z } from 'zod';
2
+ export declare const liveMonitorRouter: {
3
+ getSummary: {
4
+ summary: "Get live monitor summary for a farm";
5
+ method: "GET";
6
+ path: "/farms/:farmId/live-monitor/summary";
7
+ responses: {
8
+ 200: z.ZodObject<{
9
+ farmId: z.ZodString;
10
+ farmName: z.ZodString;
11
+ camerasOnline: z.ZodNumber;
12
+ camerasOffline: z.ZodNumber;
13
+ camerasTotal: z.ZodNumber;
14
+ sensorsActive: z.ZodNumber;
15
+ sensorsInactive: z.ZodNumber;
16
+ sensorsTotal: z.ZodNumber;
17
+ activeAlerts: z.ZodNumber;
18
+ unreadAlerts: z.ZodNumber;
19
+ fieldsWithMonitoring: z.ZodNumber;
20
+ lastUpdatedAt: z.ZodString;
21
+ }, "strip", z.ZodTypeAny, {
22
+ farmId: string;
23
+ farmName: string;
24
+ camerasOnline: number;
25
+ camerasOffline: number;
26
+ camerasTotal: number;
27
+ sensorsActive: number;
28
+ sensorsInactive: number;
29
+ sensorsTotal: number;
30
+ activeAlerts: number;
31
+ unreadAlerts: number;
32
+ fieldsWithMonitoring: number;
33
+ lastUpdatedAt: string;
34
+ }, {
35
+ farmId: string;
36
+ farmName: string;
37
+ camerasOnline: number;
38
+ camerasOffline: number;
39
+ camerasTotal: number;
40
+ sensorsActive: number;
41
+ sensorsInactive: number;
42
+ sensorsTotal: number;
43
+ activeAlerts: number;
44
+ unreadAlerts: number;
45
+ fieldsWithMonitoring: number;
46
+ lastUpdatedAt: string;
47
+ }>;
48
+ 404: z.ZodObject<{
49
+ message: z.ZodString;
50
+ code: z.ZodString;
51
+ }, "strip", z.ZodTypeAny, {
52
+ code: string;
53
+ message: string;
54
+ }, {
55
+ code: string;
56
+ message: string;
57
+ }>;
58
+ };
59
+ };
60
+ getCameras: {
61
+ summary: "List all farm cameras for live monitor";
62
+ method: "GET";
63
+ path: "/farms/:farmId/live-monitor/cameras";
64
+ responses: {
65
+ 200: z.ZodObject<{
66
+ farmId: z.ZodString;
67
+ cameras: z.ZodArray<z.ZodObject<{
68
+ id: z.ZodString;
69
+ name: z.ZodString;
70
+ type: z.ZodEnum<["IP_CAMERA", "WEBCAM", "TRAIL_CAM", "DRONE", "PHONE"]>;
71
+ location: z.ZodObject<{
72
+ lat: z.ZodNumber;
73
+ lng: z.ZodNumber;
74
+ }, "strip", z.ZodTypeAny, {
75
+ lat: number;
76
+ lng: number;
77
+ }, {
78
+ lat: number;
79
+ lng: number;
80
+ }>;
81
+ status: z.ZodEnum<["ONLINE", "OFFLINE", "ERROR", "MAINTENANCE", "RECORDING"]>;
82
+ lastFrameUrl: z.ZodNullable<z.ZodString>;
83
+ lastFrameAt: z.ZodNullable<z.ZodString>;
84
+ direction: z.ZodNullable<z.ZodNumber>;
85
+ fieldOfView: z.ZodNullable<z.ZodNumber>;
86
+ streamEnabled: z.ZodBoolean;
87
+ } & {
88
+ fieldId: z.ZodString;
89
+ fieldName: z.ZodString;
90
+ }, "strip", z.ZodTypeAny, {
91
+ type: "IP_CAMERA" | "WEBCAM" | "TRAIL_CAM" | "DRONE" | "PHONE";
92
+ status: "ERROR" | "MAINTENANCE" | "ONLINE" | "OFFLINE" | "RECORDING";
93
+ id: string;
94
+ name: string;
95
+ location: {
96
+ lat: number;
97
+ lng: number;
98
+ };
99
+ fieldId: string;
100
+ fieldName: string;
101
+ direction: number | null;
102
+ lastFrameUrl: string | null;
103
+ lastFrameAt: string | null;
104
+ fieldOfView: number | null;
105
+ streamEnabled: boolean;
106
+ }, {
107
+ type: "IP_CAMERA" | "WEBCAM" | "TRAIL_CAM" | "DRONE" | "PHONE";
108
+ status: "ERROR" | "MAINTENANCE" | "ONLINE" | "OFFLINE" | "RECORDING";
109
+ id: string;
110
+ name: string;
111
+ location: {
112
+ lat: number;
113
+ lng: number;
114
+ };
115
+ fieldId: string;
116
+ fieldName: string;
117
+ direction: number | null;
118
+ lastFrameUrl: string | null;
119
+ lastFrameAt: string | null;
120
+ fieldOfView: number | null;
121
+ streamEnabled: boolean;
122
+ }>, "many">;
123
+ totalCameras: z.ZodNumber;
124
+ }, "strip", z.ZodTypeAny, {
125
+ farmId: string;
126
+ cameras: {
127
+ type: "IP_CAMERA" | "WEBCAM" | "TRAIL_CAM" | "DRONE" | "PHONE";
128
+ status: "ERROR" | "MAINTENANCE" | "ONLINE" | "OFFLINE" | "RECORDING";
129
+ id: string;
130
+ name: string;
131
+ location: {
132
+ lat: number;
133
+ lng: number;
134
+ };
135
+ fieldId: string;
136
+ fieldName: string;
137
+ direction: number | null;
138
+ lastFrameUrl: string | null;
139
+ lastFrameAt: string | null;
140
+ fieldOfView: number | null;
141
+ streamEnabled: boolean;
142
+ }[];
143
+ totalCameras: number;
144
+ }, {
145
+ farmId: string;
146
+ cameras: {
147
+ type: "IP_CAMERA" | "WEBCAM" | "TRAIL_CAM" | "DRONE" | "PHONE";
148
+ status: "ERROR" | "MAINTENANCE" | "ONLINE" | "OFFLINE" | "RECORDING";
149
+ id: string;
150
+ name: string;
151
+ location: {
152
+ lat: number;
153
+ lng: number;
154
+ };
155
+ fieldId: string;
156
+ fieldName: string;
157
+ direction: number | null;
158
+ lastFrameUrl: string | null;
159
+ lastFrameAt: string | null;
160
+ fieldOfView: number | null;
161
+ streamEnabled: boolean;
162
+ }[];
163
+ totalCameras: number;
164
+ }>;
165
+ 404: z.ZodObject<{
166
+ message: z.ZodString;
167
+ code: z.ZodString;
168
+ }, "strip", z.ZodTypeAny, {
169
+ code: string;
170
+ message: string;
171
+ }, {
172
+ code: string;
173
+ message: string;
174
+ }>;
175
+ };
176
+ };
177
+ getSensors: {
178
+ summary: "List all farm sensors for live monitor";
179
+ method: "GET";
180
+ path: "/farms/:farmId/live-monitor/sensors";
181
+ responses: {
182
+ 200: z.ZodObject<{
183
+ farmId: z.ZodString;
184
+ sensors: z.ZodArray<z.ZodObject<{
185
+ id: z.ZodString;
186
+ name: z.ZodString;
187
+ type: z.ZodEnum<["SOIL_MOISTURE", "TEMPERATURE", "HUMIDITY", "SOIL_TEMPERATURE", "RAIN_GAUGE", "WIND", "LIGHT", "PH", "EC", "MULTI"]>;
188
+ location: z.ZodObject<{
189
+ lat: z.ZodNumber;
190
+ lng: z.ZodNumber;
191
+ }, "strip", z.ZodTypeAny, {
192
+ lat: number;
193
+ lng: number;
194
+ }, {
195
+ lat: number;
196
+ lng: number;
197
+ }>;
198
+ status: z.ZodEnum<["ACTIVE", "INACTIVE", "ERROR", "MAINTENANCE", "LOW_BATTERY"]>;
199
+ currentReading: z.ZodNullable<z.ZodObject<{
200
+ value: z.ZodNumber;
201
+ unit: z.ZodString;
202
+ timestamp: z.ZodString;
203
+ statusColor: z.ZodEnum<["green", "yellow", "red"]>;
204
+ }, "strip", z.ZodTypeAny, {
205
+ value: number;
206
+ timestamp: string;
207
+ unit: string;
208
+ statusColor: "green" | "yellow" | "red";
209
+ }, {
210
+ value: number;
211
+ timestamp: string;
212
+ unit: string;
213
+ statusColor: "green" | "yellow" | "red";
214
+ }>>;
215
+ batteryLevel: z.ZodNullable<z.ZodNumber>;
216
+ lastSyncAt: z.ZodNullable<z.ZodString>;
217
+ } & {
218
+ fieldId: z.ZodString;
219
+ fieldName: z.ZodString;
220
+ }, "strip", z.ZodTypeAny, {
221
+ type: "SOIL_MOISTURE" | "TEMPERATURE" | "HUMIDITY" | "SOIL_TEMPERATURE" | "RAIN_GAUGE" | "WIND" | "LIGHT" | "PH" | "EC" | "MULTI";
222
+ status: "ACTIVE" | "INACTIVE" | "ERROR" | "MAINTENANCE" | "LOW_BATTERY";
223
+ id: string;
224
+ name: string;
225
+ location: {
226
+ lat: number;
227
+ lng: number;
228
+ };
229
+ fieldId: string;
230
+ fieldName: string;
231
+ currentReading: {
232
+ value: number;
233
+ timestamp: string;
234
+ unit: string;
235
+ statusColor: "green" | "yellow" | "red";
236
+ } | null;
237
+ batteryLevel: number | null;
238
+ lastSyncAt: string | null;
239
+ }, {
240
+ type: "SOIL_MOISTURE" | "TEMPERATURE" | "HUMIDITY" | "SOIL_TEMPERATURE" | "RAIN_GAUGE" | "WIND" | "LIGHT" | "PH" | "EC" | "MULTI";
241
+ status: "ACTIVE" | "INACTIVE" | "ERROR" | "MAINTENANCE" | "LOW_BATTERY";
242
+ id: string;
243
+ name: string;
244
+ location: {
245
+ lat: number;
246
+ lng: number;
247
+ };
248
+ fieldId: string;
249
+ fieldName: string;
250
+ currentReading: {
251
+ value: number;
252
+ timestamp: string;
253
+ unit: string;
254
+ statusColor: "green" | "yellow" | "red";
255
+ } | null;
256
+ batteryLevel: number | null;
257
+ lastSyncAt: string | null;
258
+ }>, "many">;
259
+ totalSensors: z.ZodNumber;
260
+ }, "strip", z.ZodTypeAny, {
261
+ farmId: string;
262
+ sensors: {
263
+ type: "SOIL_MOISTURE" | "TEMPERATURE" | "HUMIDITY" | "SOIL_TEMPERATURE" | "RAIN_GAUGE" | "WIND" | "LIGHT" | "PH" | "EC" | "MULTI";
264
+ status: "ACTIVE" | "INACTIVE" | "ERROR" | "MAINTENANCE" | "LOW_BATTERY";
265
+ id: string;
266
+ name: string;
267
+ location: {
268
+ lat: number;
269
+ lng: number;
270
+ };
271
+ fieldId: string;
272
+ fieldName: string;
273
+ currentReading: {
274
+ value: number;
275
+ timestamp: string;
276
+ unit: string;
277
+ statusColor: "green" | "yellow" | "red";
278
+ } | null;
279
+ batteryLevel: number | null;
280
+ lastSyncAt: string | null;
281
+ }[];
282
+ totalSensors: number;
283
+ }, {
284
+ farmId: string;
285
+ sensors: {
286
+ type: "SOIL_MOISTURE" | "TEMPERATURE" | "HUMIDITY" | "SOIL_TEMPERATURE" | "RAIN_GAUGE" | "WIND" | "LIGHT" | "PH" | "EC" | "MULTI";
287
+ status: "ACTIVE" | "INACTIVE" | "ERROR" | "MAINTENANCE" | "LOW_BATTERY";
288
+ id: string;
289
+ name: string;
290
+ location: {
291
+ lat: number;
292
+ lng: number;
293
+ };
294
+ fieldId: string;
295
+ fieldName: string;
296
+ currentReading: {
297
+ value: number;
298
+ timestamp: string;
299
+ unit: string;
300
+ statusColor: "green" | "yellow" | "red";
301
+ } | null;
302
+ batteryLevel: number | null;
303
+ lastSyncAt: string | null;
304
+ }[];
305
+ totalSensors: number;
306
+ }>;
307
+ 404: z.ZodObject<{
308
+ message: z.ZodString;
309
+ code: z.ZodString;
310
+ }, "strip", z.ZodTypeAny, {
311
+ code: string;
312
+ message: string;
313
+ }, {
314
+ code: string;
315
+ message: string;
316
+ }>;
317
+ };
318
+ };
319
+ getEvents: {
320
+ query: z.ZodObject<{
321
+ limit: z.ZodDefault<z.ZodPipeline<z.ZodEffects<z.ZodString, number, string>, z.ZodNumber>>;
322
+ since: z.ZodOptional<z.ZodString>;
323
+ }, "strip", z.ZodTypeAny, {
324
+ limit: number;
325
+ since?: string | undefined;
326
+ }, {
327
+ limit?: string | undefined;
328
+ since?: string | undefined;
329
+ }>;
330
+ summary: "Get recent live monitor events for a farm";
331
+ method: "GET";
332
+ path: "/farms/:farmId/live-monitor/events";
333
+ responses: {
334
+ 200: z.ZodObject<{
335
+ farmId: z.ZodString;
336
+ events: z.ZodArray<z.ZodObject<{
337
+ id: z.ZodString;
338
+ type: z.ZodEnum<["alert", "camera_motion", "camera_snapshot", "camera_status", "sensor_threshold", "weather", "ndvi_change"]>;
339
+ severity: z.ZodOptional<z.ZodEnum<["info", "low", "medium", "high", "critical"]>>;
340
+ title: z.ZodString;
341
+ message: z.ZodString;
342
+ timestamp: z.ZodString;
343
+ fieldId: z.ZodOptional<z.ZodString>;
344
+ fieldName: z.ZodOptional<z.ZodString>;
345
+ cameraId: z.ZodOptional<z.ZodString>;
346
+ sensorId: z.ZodOptional<z.ZodString>;
347
+ icon: z.ZodOptional<z.ZodString>;
348
+ }, "strip", z.ZodTypeAny, {
349
+ type: "alert" | "weather" | "camera_motion" | "camera_snapshot" | "camera_status" | "sensor_threshold" | "ndvi_change";
350
+ message: string;
351
+ id: string;
352
+ title: string;
353
+ timestamp: string;
354
+ fieldId?: string | undefined;
355
+ fieldName?: string | undefined;
356
+ severity?: "critical" | "low" | "medium" | "high" | "info" | undefined;
357
+ icon?: string | undefined;
358
+ sensorId?: string | undefined;
359
+ cameraId?: string | undefined;
360
+ }, {
361
+ type: "alert" | "weather" | "camera_motion" | "camera_snapshot" | "camera_status" | "sensor_threshold" | "ndvi_change";
362
+ message: string;
363
+ id: string;
364
+ title: string;
365
+ timestamp: string;
366
+ fieldId?: string | undefined;
367
+ fieldName?: string | undefined;
368
+ severity?: "critical" | "low" | "medium" | "high" | "info" | undefined;
369
+ icon?: string | undefined;
370
+ sensorId?: string | undefined;
371
+ cameraId?: string | undefined;
372
+ }>, "many">;
373
+ totalEvents: z.ZodNumber;
374
+ }, "strip", z.ZodTypeAny, {
375
+ farmId: string;
376
+ events: {
377
+ type: "alert" | "weather" | "camera_motion" | "camera_snapshot" | "camera_status" | "sensor_threshold" | "ndvi_change";
378
+ message: string;
379
+ id: string;
380
+ title: string;
381
+ timestamp: string;
382
+ fieldId?: string | undefined;
383
+ fieldName?: string | undefined;
384
+ severity?: "critical" | "low" | "medium" | "high" | "info" | undefined;
385
+ icon?: string | undefined;
386
+ sensorId?: string | undefined;
387
+ cameraId?: string | undefined;
388
+ }[];
389
+ totalEvents: number;
390
+ }, {
391
+ farmId: string;
392
+ events: {
393
+ type: "alert" | "weather" | "camera_motion" | "camera_snapshot" | "camera_status" | "sensor_threshold" | "ndvi_change";
394
+ message: string;
395
+ id: string;
396
+ title: string;
397
+ timestamp: string;
398
+ fieldId?: string | undefined;
399
+ fieldName?: string | undefined;
400
+ severity?: "critical" | "low" | "medium" | "high" | "info" | undefined;
401
+ icon?: string | undefined;
402
+ sensorId?: string | undefined;
403
+ cameraId?: string | undefined;
404
+ }[];
405
+ totalEvents: number;
406
+ }>;
407
+ 404: z.ZodObject<{
408
+ message: z.ZodString;
409
+ code: z.ZodString;
410
+ }, "strip", z.ZodTypeAny, {
411
+ code: string;
412
+ message: string;
413
+ }, {
414
+ code: string;
415
+ message: string;
416
+ }>;
417
+ };
418
+ };
419
+ getStreamToken: {
420
+ summary: "Get time-limited stream access token for a camera";
421
+ method: "GET";
422
+ path: "/farms/:farmId/cameras/:cameraId/stream-token";
423
+ responses: {
424
+ 200: z.ZodObject<{
425
+ cameraId: z.ZodString;
426
+ farmId: z.ZodString;
427
+ token: z.ZodString;
428
+ expiresAt: z.ZodString;
429
+ streamUrl: z.ZodNullable<z.ZodString>;
430
+ quality: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
431
+ }, "strip", z.ZodTypeAny, {
432
+ token: string;
433
+ farmId: string;
434
+ quality: "low" | "medium" | "high";
435
+ streamUrl: string | null;
436
+ expiresAt: string;
437
+ cameraId: string;
438
+ }, {
439
+ token: string;
440
+ farmId: string;
441
+ streamUrl: string | null;
442
+ expiresAt: string;
443
+ cameraId: string;
444
+ quality?: "low" | "medium" | "high" | undefined;
445
+ }>;
446
+ 404: z.ZodObject<{
447
+ message: z.ZodString;
448
+ code: z.ZodString;
449
+ }, "strip", z.ZodTypeAny, {
450
+ code: string;
451
+ message: string;
452
+ }, {
453
+ code: string;
454
+ message: string;
455
+ }>;
456
+ };
457
+ };
458
+ captureSnapshot: {
459
+ query: z.ZodObject<{
460
+ dataSaver: z.ZodEffects<z.ZodOptional<z.ZodString>, boolean, string | undefined>;
461
+ }, "strip", z.ZodTypeAny, {
462
+ dataSaver: boolean;
463
+ }, {
464
+ dataSaver?: string | undefined;
465
+ }>;
466
+ summary: "Capture a manual camera snapshot";
467
+ method: "POST";
468
+ body: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
469
+ path: "/farms/:farmId/cameras/:cameraId/snapshots";
470
+ responses: {
471
+ 201: z.ZodObject<{
472
+ snapshotId: z.ZodString;
473
+ cameraId: z.ZodString;
474
+ farmId: z.ZodString;
475
+ imageUrl: z.ZodString;
476
+ capturedAt: z.ZodString;
477
+ triggerType: z.ZodEnum<["manual", "scheduled", "motion"]>;
478
+ dataSaver: z.ZodBoolean;
479
+ resolution: z.ZodNullable<z.ZodString>;
480
+ }, "strip", z.ZodTypeAny, {
481
+ farmId: string;
482
+ capturedAt: string;
483
+ resolution: string | null;
484
+ imageUrl: string;
485
+ cameraId: string;
486
+ dataSaver: boolean;
487
+ snapshotId: string;
488
+ triggerType: "manual" | "scheduled" | "motion";
489
+ }, {
490
+ farmId: string;
491
+ capturedAt: string;
492
+ resolution: string | null;
493
+ imageUrl: string;
494
+ cameraId: string;
495
+ dataSaver: boolean;
496
+ snapshotId: string;
497
+ triggerType: "manual" | "scheduled" | "motion";
498
+ }>;
499
+ 404: z.ZodObject<{
500
+ message: z.ZodString;
501
+ code: z.ZodString;
502
+ }, "strip", z.ZodTypeAny, {
503
+ code: string;
504
+ message: string;
505
+ }, {
506
+ code: string;
507
+ message: string;
508
+ }>;
509
+ };
510
+ };
511
+ };
512
+ export type LiveMonitorRouter = typeof liveMonitorRouter;
513
+ //# sourceMappingURL=live-monitor.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-monitor.routes.d.ts","sourceRoot":"","sources":["../../src/routes/live-monitor.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiF5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { liveMonitorSummarySchema, liveMonitorCamerasResponseSchema, liveMonitorSensorsResponseSchema, liveMonitorEventsQuerySchema, liveMonitorEventsResponseSchema, cameraStreamTokenResponseSchema, captureSnapshotQuerySchema, captureSnapshotResponseSchema, liveMonitorErrorSchema, } from '../schemas/live-monitor.schemas';
4
+ const c = initContract();
5
+ export const liveMonitorRouter = c.router({
6
+ /**
7
+ * Aggregated live monitor dashboard summary for a farm
8
+ */
9
+ getSummary: {
10
+ method: 'GET',
11
+ path: '/farms/:farmId/live-monitor/summary',
12
+ responses: {
13
+ 200: liveMonitorSummarySchema,
14
+ 404: liveMonitorErrorSchema,
15
+ },
16
+ summary: 'Get live monitor summary for a farm',
17
+ },
18
+ /**
19
+ * List all cameras across every field in the farm
20
+ */
21
+ getCameras: {
22
+ method: 'GET',
23
+ path: '/farms/:farmId/live-monitor/cameras',
24
+ responses: {
25
+ 200: liveMonitorCamerasResponseSchema,
26
+ 404: liveMonitorErrorSchema,
27
+ },
28
+ summary: 'List all farm cameras for live monitor',
29
+ },
30
+ /**
31
+ * List all sensors across every field in the farm
32
+ */
33
+ getSensors: {
34
+ method: 'GET',
35
+ path: '/farms/:farmId/live-monitor/sensors',
36
+ responses: {
37
+ 200: liveMonitorSensorsResponseSchema,
38
+ 404: liveMonitorErrorSchema,
39
+ },
40
+ summary: 'List all farm sensors for live monitor',
41
+ },
42
+ /**
43
+ * Recent live events for the alert strip (alerts, motion, snapshots)
44
+ */
45
+ getEvents: {
46
+ method: 'GET',
47
+ path: '/farms/:farmId/live-monitor/events',
48
+ query: liveMonitorEventsQuerySchema,
49
+ responses: {
50
+ 200: liveMonitorEventsResponseSchema,
51
+ 404: liveMonitorErrorSchema,
52
+ },
53
+ summary: 'Get recent live monitor events for a farm',
54
+ },
55
+ /**
56
+ * Issue a short-lived signed token for camera stream access
57
+ */
58
+ getStreamToken: {
59
+ method: 'GET',
60
+ path: '/farms/:farmId/cameras/:cameraId/stream-token',
61
+ responses: {
62
+ 200: cameraStreamTokenResponseSchema,
63
+ 404: liveMonitorErrorSchema,
64
+ },
65
+ summary: 'Get time-limited stream access token for a camera',
66
+ },
67
+ /**
68
+ * Capture a manual snapshot from a camera (data-saver uses cached frame)
69
+ */
70
+ captureSnapshot: {
71
+ method: 'POST',
72
+ path: '/farms/:farmId/cameras/:cameraId/snapshots',
73
+ query: captureSnapshotQuerySchema,
74
+ body: z.object({}),
75
+ responses: {
76
+ 201: captureSnapshotResponseSchema,
77
+ 404: liveMonitorErrorSchema,
78
+ },
79
+ summary: 'Capture a manual camera snapshot',
80
+ },
81
+ });
@@ -284,13 +284,13 @@ export declare const livestockMapRouter: {
284
284
  lng: z.ZodNumber;
285
285
  timestamp: z.ZodString;
286
286
  }, "strip", z.ZodTypeAny, {
287
- timestamp: string;
288
287
  lat: number;
289
288
  lng: number;
290
- }, {
291
289
  timestamp: string;
290
+ }, {
292
291
  lat: number;
293
292
  lng: number;
293
+ timestamp: string;
294
294
  }>, "many">;
295
295
  dateRange: z.ZodObject<{
296
296
  start: z.ZodString;
@@ -309,9 +309,9 @@ export declare const livestockMapRouter: {
309
309
  };
310
310
  livestockId: string;
311
311
  points: {
312
- timestamp: string;
313
312
  lat: number;
314
313
  lng: number;
314
+ timestamp: string;
315
315
  }[];
316
316
  }, {
317
317
  dateRange: {
@@ -320,9 +320,9 @@ export declare const livestockMapRouter: {
320
320
  };
321
321
  livestockId: string;
322
322
  points: {
323
- timestamp: string;
324
323
  lat: number;
325
324
  lng: number;
325
+ timestamp: string;
326
326
  }[];
327
327
  }>, "many">;
328
328
  403: z.ZodObject<{
@@ -1748,13 +1748,13 @@ export declare const monitoringVisualizationRouter: {
1748
1748
  }, "strip", z.ZodTypeAny, {
1749
1749
  value: number;
1750
1750
  unit: string;
1751
- quality: "poor" | "fair" | "good" | null;
1752
1751
  readAt: string;
1752
+ quality: "poor" | "fair" | "good" | null;
1753
1753
  }, {
1754
1754
  value: number;
1755
1755
  unit: string;
1756
- quality: "poor" | "fair" | "good" | null;
1757
1756
  readAt: string;
1757
+ quality: "poor" | "fair" | "good" | null;
1758
1758
  }>, "many">;
1759
1759
  statistics: z.ZodObject<{
1760
1760
  min: z.ZodNumber;
@@ -1776,8 +1776,8 @@ export declare const monitoringVisualizationRouter: {
1776
1776
  readings: {
1777
1777
  value: number;
1778
1778
  unit: string;
1779
- quality: "poor" | "fair" | "good" | null;
1780
1779
  readAt: string;
1780
+ quality: "poor" | "fair" | "good" | null;
1781
1781
  }[];
1782
1782
  statistics: {
1783
1783
  min: number;
@@ -1790,8 +1790,8 @@ export declare const monitoringVisualizationRouter: {
1790
1790
  readings: {
1791
1791
  value: number;
1792
1792
  unit: string;
1793
- quality: "poor" | "fair" | "good" | null;
1794
1793
  readAt: string;
1794
+ quality: "poor" | "fair" | "good" | null;
1795
1795
  }[];
1796
1796
  statistics: {
1797
1797
  min: number;