@deepintel-ltd/farmpro-contracts 1.27.2 → 1.27.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.
Files changed (40) hide show
  1. package/dist/index.d.ts +3 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/routes/agents.routes.d.ts +310 -0
  5. package/dist/routes/agents.routes.d.ts.map +1 -1
  6. package/dist/routes/agents.routes.js +17 -1
  7. package/dist/routes/farm-updates.routes.d.ts +3 -0
  8. package/dist/routes/farm-updates.routes.d.ts.map +1 -1
  9. package/dist/routes/fields.routes.d.ts +1 -1
  10. package/dist/routes/fields.routes.js +1 -1
  11. package/dist/routes/index.d.ts +3 -0
  12. package/dist/routes/index.d.ts.map +1 -1
  13. package/dist/routes/index.js +2 -0
  14. package/dist/routes/monitoring-visualization.routes.d.ts +219 -4
  15. package/dist/routes/monitoring-visualization.routes.d.ts.map +1 -1
  16. package/dist/routes/monitoring-visualization.routes.js +15 -1
  17. package/dist/routes/poultry.routes.d.ts +419 -0
  18. package/dist/routes/poultry.routes.d.ts.map +1 -1
  19. package/dist/routes/poultry.routes.js +33 -0
  20. package/dist/routes/session.routes.d.ts +1030 -0
  21. package/dist/routes/session.routes.d.ts.map +1 -0
  22. package/dist/routes/session.routes.js +93 -0
  23. package/dist/routes/tasks.routes.d.ts +42 -0
  24. package/dist/routes/tasks.routes.d.ts.map +1 -1
  25. package/dist/schemas/agents.schemas.d.ts +107 -0
  26. package/dist/schemas/agents.schemas.d.ts.map +1 -1
  27. package/dist/schemas/agents.schemas.js +4 -0
  28. package/dist/schemas/farm-updates.schemas.d.ts +3 -0
  29. package/dist/schemas/farm-updates.schemas.d.ts.map +1 -1
  30. package/dist/schemas/farm-updates.schemas.js +1 -0
  31. package/dist/schemas/monitoring-visualization.schemas.d.ts +193 -4
  32. package/dist/schemas/monitoring-visualization.schemas.d.ts.map +1 -1
  33. package/dist/schemas/monitoring-visualization.schemas.js +6 -0
  34. package/dist/schemas/session.schemas.d.ts +711 -0
  35. package/dist/schemas/session.schemas.d.ts.map +1 -0
  36. package/dist/schemas/session.schemas.js +55 -0
  37. package/dist/schemas/tasks.schemas.d.ts +34 -0
  38. package/dist/schemas/tasks.schemas.d.ts.map +1 -1
  39. package/dist/schemas/tasks.schemas.js +1 -0
  40. package/package.json +1 -1
@@ -268,6 +268,221 @@ export declare const monitoringVisualizationRouter: {
268
268
  }>;
269
269
  };
270
270
  };
271
+ getFarmNdviMosaic: {
272
+ query: z.ZodObject<{
273
+ date: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
274
+ colorPalette: z.ZodDefault<z.ZodEnum<["standard", "detailed", "contrasting", "viridis", "grayscale"]>>;
275
+ }, "strip", z.ZodTypeAny, {
276
+ colorPalette: "standard" | "detailed" | "contrasting" | "viridis" | "grayscale";
277
+ date?: string | undefined;
278
+ }, {
279
+ date?: string | undefined;
280
+ colorPalette?: "standard" | "detailed" | "contrasting" | "viridis" | "grayscale" | undefined;
281
+ }>;
282
+ summary: "Get NDVI heatmaps for all farm fields";
283
+ method: "GET";
284
+ path: "/farms/:farmId/visualization/ndvi-mosaic";
285
+ responses: {
286
+ 200: z.ZodObject<{
287
+ farmId: z.ZodString;
288
+ date: z.ZodOptional<z.ZodString>;
289
+ fields: z.ZodArray<z.ZodObject<{
290
+ fieldId: z.ZodString;
291
+ ndviImageUrl: z.ZodString;
292
+ captureDate: z.ZodString;
293
+ requestedDate: z.ZodOptional<z.ZodString>;
294
+ daysOffset: z.ZodOptional<z.ZodNumber>;
295
+ isNearestMatch: z.ZodOptional<z.ZodBoolean>;
296
+ cloudCoverage: z.ZodOptional<z.ZodNumber>;
297
+ statistics: z.ZodObject<{
298
+ min: z.ZodNumber;
299
+ max: z.ZodNumber;
300
+ mean: z.ZodNumber;
301
+ median: z.ZodNumber;
302
+ stdDev: z.ZodNumber;
303
+ }, "strip", z.ZodTypeAny, {
304
+ min: number;
305
+ max: number;
306
+ mean: number;
307
+ median: number;
308
+ stdDev: number;
309
+ }, {
310
+ min: number;
311
+ max: number;
312
+ mean: number;
313
+ median: number;
314
+ stdDev: number;
315
+ }>;
316
+ colorScale: z.ZodArray<z.ZodObject<{
317
+ value: z.ZodNumber;
318
+ color: z.ZodString;
319
+ label: z.ZodString;
320
+ }, "strip", z.ZodTypeAny, {
321
+ value: number;
322
+ label: string;
323
+ color: string;
324
+ }, {
325
+ value: number;
326
+ label: string;
327
+ color: string;
328
+ }>, "many">;
329
+ source: z.ZodString;
330
+ bounds: z.ZodOptional<z.ZodObject<{
331
+ north: z.ZodNumber;
332
+ south: z.ZodNumber;
333
+ east: z.ZodNumber;
334
+ west: z.ZodNumber;
335
+ }, "strip", z.ZodTypeAny, {
336
+ north: number;
337
+ south: number;
338
+ east: number;
339
+ west: number;
340
+ }, {
341
+ north: number;
342
+ south: number;
343
+ east: number;
344
+ west: number;
345
+ }>>;
346
+ }, "strip", z.ZodTypeAny, {
347
+ source: string;
348
+ fieldId: string;
349
+ captureDate: string;
350
+ ndviImageUrl: string;
351
+ statistics: {
352
+ min: number;
353
+ max: number;
354
+ mean: number;
355
+ median: number;
356
+ stdDev: number;
357
+ };
358
+ colorScale: {
359
+ value: number;
360
+ label: string;
361
+ color: string;
362
+ }[];
363
+ cloudCoverage?: number | undefined;
364
+ requestedDate?: string | undefined;
365
+ daysOffset?: number | undefined;
366
+ isNearestMatch?: boolean | undefined;
367
+ bounds?: {
368
+ north: number;
369
+ south: number;
370
+ east: number;
371
+ west: number;
372
+ } | undefined;
373
+ }, {
374
+ source: string;
375
+ fieldId: string;
376
+ captureDate: string;
377
+ ndviImageUrl: string;
378
+ statistics: {
379
+ min: number;
380
+ max: number;
381
+ mean: number;
382
+ median: number;
383
+ stdDev: number;
384
+ };
385
+ colorScale: {
386
+ value: number;
387
+ label: string;
388
+ color: string;
389
+ }[];
390
+ cloudCoverage?: number | undefined;
391
+ requestedDate?: string | undefined;
392
+ daysOffset?: number | undefined;
393
+ isNearestMatch?: boolean | undefined;
394
+ bounds?: {
395
+ north: number;
396
+ south: number;
397
+ east: number;
398
+ west: number;
399
+ } | undefined;
400
+ }>, "many">;
401
+ }, "strip", z.ZodTypeAny, {
402
+ farmId: string;
403
+ fields: {
404
+ source: string;
405
+ fieldId: string;
406
+ captureDate: string;
407
+ ndviImageUrl: string;
408
+ statistics: {
409
+ min: number;
410
+ max: number;
411
+ mean: number;
412
+ median: number;
413
+ stdDev: number;
414
+ };
415
+ colorScale: {
416
+ value: number;
417
+ label: string;
418
+ color: string;
419
+ }[];
420
+ cloudCoverage?: number | undefined;
421
+ requestedDate?: string | undefined;
422
+ daysOffset?: number | undefined;
423
+ isNearestMatch?: boolean | undefined;
424
+ bounds?: {
425
+ north: number;
426
+ south: number;
427
+ east: number;
428
+ west: number;
429
+ } | undefined;
430
+ }[];
431
+ date?: string | undefined;
432
+ }, {
433
+ farmId: string;
434
+ fields: {
435
+ source: string;
436
+ fieldId: string;
437
+ captureDate: string;
438
+ ndviImageUrl: string;
439
+ statistics: {
440
+ min: number;
441
+ max: number;
442
+ mean: number;
443
+ median: number;
444
+ stdDev: number;
445
+ };
446
+ colorScale: {
447
+ value: number;
448
+ label: string;
449
+ color: string;
450
+ }[];
451
+ cloudCoverage?: number | undefined;
452
+ requestedDate?: string | undefined;
453
+ daysOffset?: number | undefined;
454
+ isNearestMatch?: boolean | undefined;
455
+ bounds?: {
456
+ north: number;
457
+ south: number;
458
+ east: number;
459
+ west: number;
460
+ } | undefined;
461
+ }[];
462
+ date?: string | undefined;
463
+ }>;
464
+ 404: z.ZodObject<{
465
+ message: z.ZodString;
466
+ code: z.ZodString;
467
+ }, "strip", z.ZodTypeAny, {
468
+ code: string;
469
+ message: string;
470
+ }, {
471
+ code: string;
472
+ message: string;
473
+ }>;
474
+ 503: z.ZodObject<{
475
+ message: z.ZodString;
476
+ code: z.ZodString;
477
+ }, "strip", z.ZodTypeAny, {
478
+ code: string;
479
+ message: string;
480
+ }, {
481
+ code: string;
482
+ message: string;
483
+ }>;
484
+ };
485
+ };
271
486
  getSoilMoistureHeatmap: {
272
487
  query: z.ZodObject<{
273
488
  date: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
@@ -789,7 +1004,7 @@ export declare const monitoringVisualizationRouter: {
789
1004
  }>;
790
1005
  }, "strip", z.ZodTypeAny, {
791
1006
  fieldId: string;
792
- before: {
1007
+ after: {
793
1008
  date: string;
794
1009
  trueColorUrl: string | null;
795
1010
  ndviUrl: string | null;
@@ -799,7 +1014,7 @@ export declare const monitoringVisualizationRouter: {
799
1014
  mean: number;
800
1015
  };
801
1016
  };
802
- after: {
1017
+ before: {
803
1018
  date: string;
804
1019
  trueColorUrl: string | null;
805
1020
  ndviUrl: string | null;
@@ -817,7 +1032,7 @@ export declare const monitoringVisualizationRouter: {
817
1032
  };
818
1033
  }, {
819
1034
  fieldId: string;
820
- before: {
1035
+ after: {
821
1036
  date: string;
822
1037
  trueColorUrl: string | null;
823
1038
  ndviUrl: string | null;
@@ -827,7 +1042,7 @@ export declare const monitoringVisualizationRouter: {
827
1042
  mean: number;
828
1043
  };
829
1044
  };
830
- after: {
1045
+ before: {
831
1046
  date: string;
832
1047
  trueColorUrl: string | null;
833
1048
  ndviUrl: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"monitoring-visualization.routes.d.ts","sourceRoot":"","sources":["../../src/routes/monitoring-visualization.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwExB,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgjBxC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAC"}
1
+ {"version":3,"file":"monitoring-visualization.routes.d.ts","sourceRoot":"","sources":["../../src/routes/monitoring-visualization.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0ExB,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+jBxC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAC"}
@@ -2,7 +2,7 @@ import { initContract } from '@ts-rest/core';
2
2
  import { z } from 'zod';
3
3
  import {
4
4
  // Phase 1 schemas
5
- satelliteImageryQuerySchema, satelliteImageryResponseSchema, ndviHeatmapQuerySchema, ndviHeatmapResponseSchema, soilMoistureHeatmapQuerySchema, soilMoistureHeatmapResponseSchema,
5
+ satelliteImageryQuerySchema, satelliteImageryResponseSchema, ndviHeatmapQuerySchema, ndviHeatmapResponseSchema, ndviMosaicQuerySchema, ndviMosaicResponseSchema, soilMoistureHeatmapQuerySchema, soilMoistureHeatmapResponseSchema,
6
6
  // Phase 2 schemas
7
7
  availableDatesQuerySchema, availableDatesResponseSchema, farmAvailableDatesQuerySchema, farmAvailableDatesResponseSchema, historicalImageryQuerySchema, historicalImageryResponseSchema, compareImageryQuerySchema, compareImageryResponseSchema, timelapseRequestSchema, timelapseResponseSchema,
8
8
  // Phase 3 schemas
@@ -55,6 +55,20 @@ export const monitoringVisualizationRouter = c.router({
55
55
  },
56
56
  summary: 'Get NDVI heatmap overlay for field',
57
57
  },
58
+ /**
59
+ * NDVI heatmaps for every active field on a farm (dashboard mosaic).
60
+ */
61
+ getFarmNdviMosaic: {
62
+ method: 'GET',
63
+ path: '/farms/:farmId/visualization/ndvi-mosaic',
64
+ query: ndviMosaicQuerySchema,
65
+ responses: {
66
+ 200: ndviMosaicResponseSchema,
67
+ 404: visualizationErrorSchema,
68
+ 503: visualizationErrorSchema,
69
+ },
70
+ summary: 'Get NDVI heatmaps for all farm fields',
71
+ },
58
72
  /**
59
73
  * Get soil moisture heatmap/data for field overlay
60
74
  * Returns spatial soil moisture data for visualization