@deepintel-ltd/farmpro-contracts 1.7.8 → 1.7.9

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 (31) hide show
  1. package/dist/index.d.ts +11 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +10 -0
  4. package/dist/routes/crop-profile.routes.d.ts +556 -0
  5. package/dist/routes/crop-profile.routes.d.ts.map +1 -0
  6. package/dist/routes/crop-profile.routes.js +55 -0
  7. package/dist/routes/index.d.ts +6 -0
  8. package/dist/routes/index.d.ts.map +1 -1
  9. package/dist/routes/index.js +4 -0
  10. package/dist/routes/measurements.routes.d.ts +1081 -0
  11. package/dist/routes/measurements.routes.d.ts.map +1 -0
  12. package/dist/routes/measurements.routes.js +69 -0
  13. package/dist/routes/monitoring-visualization.routes.d.ts +1637 -0
  14. package/dist/routes/monitoring-visualization.routes.d.ts.map +1 -1
  15. package/dist/routes/monitoring-visualization.routes.js +153 -0
  16. package/dist/routes/prescription-maps.routes.d.ts +1611 -40
  17. package/dist/routes/prescription-maps.routes.d.ts.map +1 -1
  18. package/dist/routes/prescription-maps.routes.js +75 -1
  19. package/dist/schemas/crop-profile.schemas.d.ts +724 -0
  20. package/dist/schemas/crop-profile.schemas.d.ts.map +1 -0
  21. package/dist/schemas/crop-profile.schemas.js +84 -0
  22. package/dist/schemas/measurements.schemas.d.ts +234 -0
  23. package/dist/schemas/measurements.schemas.d.ts.map +1 -0
  24. package/dist/schemas/measurements.schemas.js +57 -0
  25. package/dist/schemas/monitoring-visualization.schemas.d.ts +1703 -0
  26. package/dist/schemas/monitoring-visualization.schemas.d.ts.map +1 -1
  27. package/dist/schemas/monitoring-visualization.schemas.js +338 -0
  28. package/dist/schemas/prescription-maps.schemas.d.ts +400 -41
  29. package/dist/schemas/prescription-maps.schemas.d.ts.map +1 -1
  30. package/dist/schemas/prescription-maps.schemas.js +95 -2
  31. package/package.json +1 -1
@@ -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;AA8CxB,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwWxC,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;AAmExB,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAugBxC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAC"}
@@ -11,6 +11,12 @@ zoneAnalysisQuerySchema, zoneAnalysisResponseSchema, anomalyQuerySchema, anomaly
11
11
  photoTimelineQuerySchema, photoTimelineResponseSchema, photoMapPinsQuerySchema, photoMapPinsResponseSchema, camerasResponseSchema, createCameraSchema, cameraSchema,
12
12
  // Phase 5 schemas
13
13
  terrainQuerySchema, terrainResponseSchema, growthStagesResponseSchema,
14
+ // Enhanced terrain schemas
15
+ elevationHeatmapQuerySchema, elevationHeatmapResponseSchema, contourQuerySchema, contourResponseSchema, slopeQuerySchema, slopeResponseSchema, aspectQuerySchema, aspectResponseSchema, drainageQuerySchema, drainageResponseSchema, elevationProfileQuerySchema, elevationProfileResponseSchema,
16
+ // Change detection schemas
17
+ changeDetectionRequestSchema, changeDetectionResponseSchema,
18
+ // Vegetation indices schemas
19
+ vegetationIndexTypeSchema, vegetationIndexQuerySchema, vegetationIndexResponseSchema, availableIndicesResponseSchema,
14
20
  // Common schemas
15
21
  visualizationErrorSchema, } from '../schemas/monitoring-visualization.schemas';
16
22
  const c = initContract();
@@ -346,4 +352,151 @@ export const monitoringVisualizationRouter = c.router({
346
352
  },
347
353
  summary: 'Get crop growth stage visualization data',
348
354
  },
355
+ // ============================================================================
356
+ // Phase 5: Enhanced Terrain Endpoints
357
+ // ============================================================================
358
+ /**
359
+ * Get elevation heatmap
360
+ * Returns color-coded elevation visualization
361
+ */
362
+ getElevationHeatmap: {
363
+ method: 'GET',
364
+ path: '/farms/:farmId/fields/:fieldId/visualization/terrain/elevation',
365
+ query: elevationHeatmapQuerySchema,
366
+ responses: {
367
+ 200: elevationHeatmapResponseSchema,
368
+ 404: visualizationErrorSchema,
369
+ 503: visualizationErrorSchema,
370
+ },
371
+ summary: 'Get elevation heatmap for field',
372
+ },
373
+ /**
374
+ * Get contour lines
375
+ * Returns contour lines at specified interval
376
+ */
377
+ getContours: {
378
+ method: 'GET',
379
+ path: '/farms/:farmId/fields/:fieldId/visualization/terrain/contours',
380
+ query: contourQuerySchema,
381
+ responses: {
382
+ 200: contourResponseSchema,
383
+ 404: visualizationErrorSchema,
384
+ 503: visualizationErrorSchema,
385
+ },
386
+ summary: 'Get contour lines for field terrain',
387
+ },
388
+ /**
389
+ * Get slope analysis
390
+ * Returns slope percentage/degrees with classification
391
+ */
392
+ getSlope: {
393
+ method: 'GET',
394
+ path: '/farms/:farmId/fields/:fieldId/visualization/terrain/slope',
395
+ query: slopeQuerySchema,
396
+ responses: {
397
+ 200: slopeResponseSchema,
398
+ 404: visualizationErrorSchema,
399
+ 503: visualizationErrorSchema,
400
+ },
401
+ summary: 'Get slope analysis for field',
402
+ },
403
+ /**
404
+ * Get aspect analysis
405
+ * Returns slope direction/facing (N/S/E/W)
406
+ */
407
+ getAspect: {
408
+ method: 'GET',
409
+ path: '/farms/:farmId/fields/:fieldId/visualization/terrain/aspect',
410
+ query: aspectQuerySchema,
411
+ responses: {
412
+ 200: aspectResponseSchema,
413
+ 404: visualizationErrorSchema,
414
+ 503: visualizationErrorSchema,
415
+ },
416
+ summary: 'Get aspect (slope direction) analysis for field',
417
+ },
418
+ /**
419
+ * Get drainage analysis
420
+ * Returns water flow direction, low points, and watersheds
421
+ */
422
+ getDrainage: {
423
+ method: 'GET',
424
+ path: '/farms/:farmId/fields/:fieldId/visualization/terrain/drainage',
425
+ query: drainageQuerySchema,
426
+ responses: {
427
+ 200: drainageResponseSchema,
428
+ 404: visualizationErrorSchema,
429
+ 503: visualizationErrorSchema,
430
+ },
431
+ summary: 'Get drainage flow analysis for field',
432
+ },
433
+ /**
434
+ * Get elevation profile (cross-section)
435
+ * Returns elevation along a line between two points
436
+ */
437
+ getElevationProfile: {
438
+ method: 'GET',
439
+ path: '/farms/:farmId/fields/:fieldId/visualization/terrain/profile',
440
+ query: elevationProfileQuerySchema,
441
+ responses: {
442
+ 200: elevationProfileResponseSchema,
443
+ 404: visualizationErrorSchema,
444
+ 400: visualizationErrorSchema,
445
+ },
446
+ summary: 'Get elevation profile between two points',
447
+ },
448
+ // ============================================================================
449
+ // Change Detection Endpoints
450
+ // ============================================================================
451
+ /**
452
+ * Detect NDVI changes between two dates
453
+ * Returns overall change metrics and hotspots
454
+ */
455
+ getChangeDetection: {
456
+ method: 'POST',
457
+ path: '/farms/:farmId/fields/:fieldId/visualization/change-detection',
458
+ body: changeDetectionRequestSchema,
459
+ responses: {
460
+ 200: changeDetectionResponseSchema,
461
+ 404: visualizationErrorSchema,
462
+ 400: visualizationErrorSchema,
463
+ },
464
+ summary: 'Detect NDVI changes between two dates',
465
+ },
466
+ // ============================================================================
467
+ // Phase 6: Vegetation Indices Endpoints
468
+ // ============================================================================
469
+ /**
470
+ * Get specific vegetation index heatmap
471
+ * Returns heatmap for NDVI, NDRE, MSAVI, SAVI, EVI, GNDVI, LAI, or NDWI
472
+ */
473
+ getVegetationIndex: {
474
+ method: 'GET',
475
+ path: '/farms/:farmId/fields/:fieldId/visualization/imagery/indices/:indexType',
476
+ pathParams: z.object({
477
+ farmId: z.string().uuid(),
478
+ fieldId: z.string().uuid(),
479
+ indexType: vegetationIndexTypeSchema,
480
+ }),
481
+ query: vegetationIndexQuerySchema,
482
+ responses: {
483
+ 200: vegetationIndexResponseSchema,
484
+ 404: visualizationErrorSchema,
485
+ 400: visualizationErrorSchema,
486
+ },
487
+ summary: 'Get specific vegetation index heatmap',
488
+ },
489
+ /**
490
+ * Get available vegetation indices with recommendations
491
+ * Returns list of available indices and recommended index for current conditions
492
+ */
493
+ getAvailableIndices: {
494
+ method: 'GET',
495
+ path: '/farms/:farmId/fields/:fieldId/visualization/indices/available',
496
+ responses: {
497
+ 200: availableIndicesResponseSchema,
498
+ 404: visualizationErrorSchema,
499
+ },
500
+ summary: 'Get available vegetation indices with recommendations',
501
+ },
349
502
  });