@deepintel-ltd/farmpro-contracts 1.5.8 → 1.5.10

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 (57) hide show
  1. package/dist/index.js +50 -92
  2. package/dist/routes/admin.routes.js +13 -16
  3. package/dist/routes/agent-workflows.routes.js +81 -84
  4. package/dist/routes/agents.routes.js +29 -32
  5. package/dist/routes/analytics.routes.js +11 -14
  6. package/dist/routes/auth.routes.js +55 -58
  7. package/dist/routes/categories.routes.js +23 -26
  8. package/dist/routes/documents.routes.js +67 -70
  9. package/dist/routes/equipment.routes.js +55 -58
  10. package/dist/routes/farms.routes.js +32 -35
  11. package/dist/routes/field-monitoring.routes.d.ts +8 -1
  12. package/dist/routes/field-monitoring.routes.d.ts.map +1 -1
  13. package/dist/routes/field-monitoring.routes.js +77 -74
  14. package/dist/routes/field-observations.routes.js +41 -44
  15. package/dist/routes/fields.routes.js +44 -47
  16. package/dist/routes/finance.routes.js +121 -124
  17. package/dist/routes/harvest.routes.js +46 -49
  18. package/dist/routes/health.routes.js +6 -9
  19. package/dist/routes/index.js +51 -54
  20. package/dist/routes/input-usage.routes.js +14 -17
  21. package/dist/routes/inventory.routes.js +57 -60
  22. package/dist/routes/seasonal-plans.routes.js +14 -17
  23. package/dist/routes/soil-tests.routes.js +45 -48
  24. package/dist/routes/suppliers.routes.js +70 -73
  25. package/dist/routes/tasks.routes.js +65 -68
  26. package/dist/routes/team.routes.d.ts +306 -0
  27. package/dist/routes/team.routes.d.ts.map +1 -1
  28. package/dist/routes/team.routes.js +79 -60
  29. package/dist/routes/users.routes.js +13 -16
  30. package/dist/routes/weather.routes.js +10 -13
  31. package/dist/schemas/admin.schemas.js +43 -46
  32. package/dist/schemas/agent-workflows.schemas.js +34 -37
  33. package/dist/schemas/agents.schemas.js +46 -49
  34. package/dist/schemas/analytics.schemas.js +51 -54
  35. package/dist/schemas/auth.schemas.js +96 -99
  36. package/dist/schemas/categories.schemas.js +27 -30
  37. package/dist/schemas/common.schemas.js +89 -95
  38. package/dist/schemas/documents.schemas.js +59 -62
  39. package/dist/schemas/equipment.schemas.js +86 -89
  40. package/dist/schemas/farms.schemas.js +40 -43
  41. package/dist/schemas/field-monitoring.schemas.js +207 -210
  42. package/dist/schemas/field-observations.schemas.js +93 -96
  43. package/dist/schemas/fields.schemas.js +82 -85
  44. package/dist/schemas/finance.schemas.js +134 -137
  45. package/dist/schemas/harvest.schemas.js +46 -49
  46. package/dist/schemas/health.schemas.js +14 -17
  47. package/dist/schemas/input-usage.schemas.js +21 -24
  48. package/dist/schemas/inventory.schemas.js +58 -61
  49. package/dist/schemas/recommendations.schemas.js +22 -25
  50. package/dist/schemas/seasonal-plans.schemas.js +21 -24
  51. package/dist/schemas/soil-tests.schemas.js +70 -73
  52. package/dist/schemas/suppliers.schemas.js +90 -93
  53. package/dist/schemas/tasks.schemas.js +93 -96
  54. package/dist/schemas/team.schemas.js +35 -38
  55. package/dist/schemas/users.schemas.js +19 -22
  56. package/dist/schemas/weather.schemas.js +32 -35
  57. package/package.json +9 -1
@@ -1,29 +1,26 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.equipmentRouter = void 0;
4
- const core_1 = require("@ts-rest/core");
5
- const zod_1 = require("zod");
6
- const equipment_schemas_1 = require("../schemas/equipment.schemas");
7
- const common_schemas_1 = require("../schemas/common.schemas");
8
- const c = (0, core_1.initContract)();
9
- exports.equipmentRouter = c.router({
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { createEquipmentSchema, updateEquipmentSchema, createMaintenanceRecordSchema, equipmentResponseSchema, equipmentListResponseSchema, maintenanceRecordSchema, equipmentTypeSchema, equipmentStatusSchema, } from '../schemas/equipment.schemas';
4
+ import { jsonApiErrorResponseSchema, jsonApiSuccessResponseSchema, jsonApiPaginationQuerySchema, jsonApiSortQuerySchema, jsonApiIncludeQuerySchema, jsonApiFilterQuerySchema } from '../schemas/common.schemas';
5
+ const c = initContract();
6
+ export const equipmentRouter = c.router({
10
7
  // List equipment for a farm
11
8
  listEquipment: {
12
9
  method: 'GET',
13
10
  path: '/farms/:farmId/equipment',
14
- pathParams: zod_1.z.object({ farmId: zod_1.z.string().uuid() }),
15
- query: common_schemas_1.jsonApiPaginationQuerySchema
16
- .merge(common_schemas_1.jsonApiSortQuerySchema)
17
- .merge(common_schemas_1.jsonApiIncludeQuerySchema)
18
- .merge(common_schemas_1.jsonApiFilterQuerySchema)
19
- .merge(zod_1.z.object({
20
- 'filter[type]': equipment_schemas_1.equipmentTypeSchema.optional(),
21
- 'filter[status]': equipment_schemas_1.equipmentStatusSchema.optional(),
11
+ pathParams: z.object({ farmId: z.string().uuid() }),
12
+ query: jsonApiPaginationQuerySchema
13
+ .merge(jsonApiSortQuerySchema)
14
+ .merge(jsonApiIncludeQuerySchema)
15
+ .merge(jsonApiFilterQuerySchema)
16
+ .merge(z.object({
17
+ 'filter[type]': equipmentTypeSchema.optional(),
18
+ 'filter[status]': equipmentStatusSchema.optional(),
22
19
  })),
23
20
  responses: {
24
- 200: equipment_schemas_1.equipmentListResponseSchema,
25
- 404: common_schemas_1.jsonApiErrorResponseSchema,
26
- 401: common_schemas_1.jsonApiErrorResponseSchema,
21
+ 200: equipmentListResponseSchema,
22
+ 404: jsonApiErrorResponseSchema,
23
+ 401: jsonApiErrorResponseSchema,
27
24
  },
28
25
  summary: 'List equipment',
29
26
  description: 'Get all equipment for a farm with optional filtering',
@@ -32,14 +29,14 @@ exports.equipmentRouter = c.router({
32
29
  createEquipment: {
33
30
  method: 'POST',
34
31
  path: '/farms/:farmId/equipment',
35
- pathParams: zod_1.z.object({ farmId: zod_1.z.string().uuid() }),
36
- body: zod_1.z.object({ data: equipment_schemas_1.createEquipmentSchema }),
32
+ pathParams: z.object({ farmId: z.string().uuid() }),
33
+ body: z.object({ data: createEquipmentSchema }),
37
34
  responses: {
38
- 201: equipment_schemas_1.equipmentResponseSchema,
39
- 400: common_schemas_1.jsonApiErrorResponseSchema,
40
- 404: common_schemas_1.jsonApiErrorResponseSchema,
41
- 401: common_schemas_1.jsonApiErrorResponseSchema,
42
- 422: common_schemas_1.jsonApiErrorResponseSchema,
35
+ 201: equipmentResponseSchema,
36
+ 400: jsonApiErrorResponseSchema,
37
+ 404: jsonApiErrorResponseSchema,
38
+ 401: jsonApiErrorResponseSchema,
39
+ 422: jsonApiErrorResponseSchema,
43
40
  },
44
41
  summary: 'Create equipment',
45
42
  description: 'Add new equipment to the farm',
@@ -48,15 +45,15 @@ exports.equipmentRouter = c.router({
48
45
  getEquipment: {
49
46
  method: 'GET',
50
47
  path: '/farms/:farmId/equipment/:id',
51
- pathParams: zod_1.z.object({
52
- farmId: zod_1.z.string().uuid(),
53
- id: zod_1.z.string().uuid(),
48
+ pathParams: z.object({
49
+ farmId: z.string().uuid(),
50
+ id: z.string().uuid(),
54
51
  }),
55
- query: common_schemas_1.jsonApiIncludeQuerySchema,
52
+ query: jsonApiIncludeQuerySchema,
56
53
  responses: {
57
- 200: equipment_schemas_1.equipmentResponseSchema,
58
- 404: common_schemas_1.jsonApiErrorResponseSchema,
59
- 401: common_schemas_1.jsonApiErrorResponseSchema,
54
+ 200: equipmentResponseSchema,
55
+ 404: jsonApiErrorResponseSchema,
56
+ 401: jsonApiErrorResponseSchema,
60
57
  },
61
58
  summary: 'Get equipment by ID',
62
59
  description: 'Get detailed information about equipment',
@@ -65,17 +62,17 @@ exports.equipmentRouter = c.router({
65
62
  updateEquipment: {
66
63
  method: 'PATCH',
67
64
  path: '/farms/:farmId/equipment/:id',
68
- pathParams: zod_1.z.object({
69
- farmId: zod_1.z.string().uuid(),
70
- id: zod_1.z.string().uuid(),
65
+ pathParams: z.object({
66
+ farmId: z.string().uuid(),
67
+ id: z.string().uuid(),
71
68
  }),
72
- body: zod_1.z.object({ data: equipment_schemas_1.updateEquipmentSchema }),
69
+ body: z.object({ data: updateEquipmentSchema }),
73
70
  responses: {
74
- 200: equipment_schemas_1.equipmentResponseSchema,
75
- 400: common_schemas_1.jsonApiErrorResponseSchema,
76
- 404: common_schemas_1.jsonApiErrorResponseSchema,
77
- 401: common_schemas_1.jsonApiErrorResponseSchema,
78
- 422: common_schemas_1.jsonApiErrorResponseSchema,
71
+ 200: equipmentResponseSchema,
72
+ 400: jsonApiErrorResponseSchema,
73
+ 404: jsonApiErrorResponseSchema,
74
+ 401: jsonApiErrorResponseSchema,
75
+ 422: jsonApiErrorResponseSchema,
79
76
  },
80
77
  summary: 'Update equipment',
81
78
  description: 'Update equipment information',
@@ -84,14 +81,14 @@ exports.equipmentRouter = c.router({
84
81
  deleteEquipment: {
85
82
  method: 'DELETE',
86
83
  path: '/farms/:farmId/equipment/:id',
87
- pathParams: zod_1.z.object({
88
- farmId: zod_1.z.string().uuid(),
89
- id: zod_1.z.string().uuid(),
84
+ pathParams: z.object({
85
+ farmId: z.string().uuid(),
86
+ id: z.string().uuid(),
90
87
  }),
91
88
  responses: {
92
- 204: common_schemas_1.jsonApiSuccessResponseSchema,
93
- 404: common_schemas_1.jsonApiErrorResponseSchema,
94
- 401: common_schemas_1.jsonApiErrorResponseSchema,
89
+ 204: jsonApiSuccessResponseSchema,
90
+ 404: jsonApiErrorResponseSchema,
91
+ 401: jsonApiErrorResponseSchema,
95
92
  },
96
93
  summary: 'Delete equipment',
97
94
  description: 'Delete equipment record',
@@ -100,17 +97,17 @@ exports.equipmentRouter = c.router({
100
97
  addMaintenanceRecord: {
101
98
  method: 'POST',
102
99
  path: '/farms/:farmId/equipment/:id/maintenance',
103
- pathParams: zod_1.z.object({
104
- farmId: zod_1.z.string().uuid(),
105
- id: zod_1.z.string().uuid(),
100
+ pathParams: z.object({
101
+ farmId: z.string().uuid(),
102
+ id: z.string().uuid(),
106
103
  }),
107
- body: zod_1.z.object({ data: equipment_schemas_1.createMaintenanceRecordSchema }),
104
+ body: z.object({ data: createMaintenanceRecordSchema }),
108
105
  responses: {
109
- 201: equipment_schemas_1.maintenanceRecordSchema,
110
- 400: common_schemas_1.jsonApiErrorResponseSchema,
111
- 404: common_schemas_1.jsonApiErrorResponseSchema,
112
- 401: common_schemas_1.jsonApiErrorResponseSchema,
113
- 422: common_schemas_1.jsonApiErrorResponseSchema,
106
+ 201: maintenanceRecordSchema,
107
+ 400: jsonApiErrorResponseSchema,
108
+ 404: jsonApiErrorResponseSchema,
109
+ 401: jsonApiErrorResponseSchema,
110
+ 422: jsonApiErrorResponseSchema,
114
111
  },
115
112
  summary: 'Add maintenance record',
116
113
  description: 'Record maintenance performed on equipment',
@@ -1,22 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.farmsRouter = void 0;
4
- const core_1 = require("@ts-rest/core");
5
- const zod_1 = require("zod");
6
- const farms_schemas_1 = require("../schemas/farms.schemas");
7
- const common_schemas_1 = require("../schemas/common.schemas");
8
- const c = (0, core_1.initContract)();
9
- exports.farmsRouter = c.router({
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { createFarmSchema, updateFarmSchema, farmResponseSchema, farmDetailResponseSchema, farmListResponseSchema, } from '../schemas/farms.schemas';
4
+ import { jsonApiErrorResponseSchema, jsonApiSuccessResponseSchema, idParamSchema, jsonApiPaginationQuerySchema, jsonApiSortQuerySchema, jsonApiIncludeQuerySchema } from '../schemas/common.schemas';
5
+ const c = initContract();
6
+ export const farmsRouter = c.router({
10
7
  // List all farms for the authenticated user
11
8
  listFarms: {
12
9
  method: 'GET',
13
10
  path: '/farms',
14
- query: common_schemas_1.jsonApiPaginationQuerySchema
15
- .merge(common_schemas_1.jsonApiSortQuerySchema)
16
- .merge(common_schemas_1.jsonApiIncludeQuerySchema),
11
+ query: jsonApiPaginationQuerySchema
12
+ .merge(jsonApiSortQuerySchema)
13
+ .merge(jsonApiIncludeQuerySchema),
17
14
  responses: {
18
- 200: farms_schemas_1.farmListResponseSchema,
19
- 401: common_schemas_1.jsonApiErrorResponseSchema,
15
+ 200: farmListResponseSchema,
16
+ 401: jsonApiErrorResponseSchema,
20
17
  },
21
18
  summary: 'List all farms',
22
19
  description: 'Get a paginated list of farms for the authenticated user',
@@ -43,12 +40,12 @@ exports.farmsRouter = c.router({
43
40
  createFarm: {
44
41
  method: 'POST',
45
42
  path: '/farms',
46
- body: zod_1.z.object({ data: farms_schemas_1.createFarmSchema }),
43
+ body: z.object({ data: createFarmSchema }),
47
44
  responses: {
48
- 201: farms_schemas_1.farmResponseSchema,
49
- 400: common_schemas_1.jsonApiErrorResponseSchema,
50
- 401: common_schemas_1.jsonApiErrorResponseSchema,
51
- 422: common_schemas_1.jsonApiErrorResponseSchema,
45
+ 201: farmResponseSchema,
46
+ 400: jsonApiErrorResponseSchema,
47
+ 401: jsonApiErrorResponseSchema,
48
+ 422: jsonApiErrorResponseSchema,
52
49
  },
53
50
  summary: 'Create a new farm',
54
51
  description: 'Create a new farm with optional boundary',
@@ -69,12 +66,12 @@ exports.farmsRouter = c.router({
69
66
  getFarm: {
70
67
  method: 'GET',
71
68
  path: '/farms/:id',
72
- pathParams: common_schemas_1.idParamSchema,
73
- query: common_schemas_1.jsonApiIncludeQuerySchema,
69
+ pathParams: idParamSchema,
70
+ query: jsonApiIncludeQuerySchema,
74
71
  responses: {
75
- 200: farms_schemas_1.farmDetailResponseSchema,
76
- 404: common_schemas_1.jsonApiErrorResponseSchema,
77
- 401: common_schemas_1.jsonApiErrorResponseSchema,
72
+ 200: farmDetailResponseSchema,
73
+ 404: jsonApiErrorResponseSchema,
74
+ 401: jsonApiErrorResponseSchema,
78
75
  },
79
76
  summary: 'Get farm by ID',
80
77
  description: 'Get detailed information about a specific farm',
@@ -83,14 +80,14 @@ exports.farmsRouter = c.router({
83
80
  updateFarm: {
84
81
  method: 'PATCH',
85
82
  path: '/farms/:id',
86
- pathParams: common_schemas_1.idParamSchema,
87
- body: zod_1.z.object({ data: farms_schemas_1.updateFarmSchema }),
83
+ pathParams: idParamSchema,
84
+ body: z.object({ data: updateFarmSchema }),
88
85
  responses: {
89
- 200: farms_schemas_1.farmResponseSchema,
90
- 400: common_schemas_1.jsonApiErrorResponseSchema,
91
- 404: common_schemas_1.jsonApiErrorResponseSchema,
92
- 401: common_schemas_1.jsonApiErrorResponseSchema,
93
- 422: common_schemas_1.jsonApiErrorResponseSchema,
86
+ 200: farmResponseSchema,
87
+ 400: jsonApiErrorResponseSchema,
88
+ 404: jsonApiErrorResponseSchema,
89
+ 401: jsonApiErrorResponseSchema,
90
+ 422: jsonApiErrorResponseSchema,
94
91
  },
95
92
  summary: 'Update farm',
96
93
  description: 'Update farm information including boundary',
@@ -99,11 +96,11 @@ exports.farmsRouter = c.router({
99
96
  deleteFarm: {
100
97
  method: 'DELETE',
101
98
  path: '/farms/:id',
102
- pathParams: common_schemas_1.idParamSchema,
99
+ pathParams: idParamSchema,
103
100
  responses: {
104
- 204: common_schemas_1.jsonApiSuccessResponseSchema,
105
- 404: common_schemas_1.jsonApiErrorResponseSchema,
106
- 401: common_schemas_1.jsonApiErrorResponseSchema,
101
+ 204: jsonApiSuccessResponseSchema,
102
+ 404: jsonApiErrorResponseSchema,
103
+ 401: jsonApiErrorResponseSchema,
107
104
  },
108
105
  summary: 'Delete farm',
109
106
  description: 'Delete a farm and all associated data',
@@ -1252,7 +1252,14 @@ export declare const fieldMonitoringRouter: {
1252
1252
  };
1253
1253
  };
1254
1254
  getIntelligentSoilProfile: {
1255
- summary: "Get intelligent unified soil profile aggregating all data sources with LLM-powered recommendations";
1255
+ query: z.ZodObject<{
1256
+ forceRefresh: z.ZodEffects<z.ZodOptional<z.ZodString>, boolean, string | undefined>;
1257
+ }, "strip", z.ZodTypeAny, {
1258
+ forceRefresh: boolean;
1259
+ }, {
1260
+ forceRefresh?: string | undefined;
1261
+ }>;
1262
+ summary: "Get intelligent unified soil profile aggregating all data sources with LLM-powered recommendations. Cached for 2 days unless forceRefresh=true";
1256
1263
  method: "GET";
1257
1264
  path: "/farms/:farmId/fields/:fieldId/monitoring/soil/profile/intelligent";
1258
1265
  responses: {
@@ -1 +1 @@
1
- {"version":3,"file":"field-monitoring.routes.d.ts","sourceRoot":"","sources":["../../src/routes/field-monitoring.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgOhC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC"}
1
+ {"version":3,"file":"field-monitoring.routes.d.ts","sourceRoot":"","sources":["../../src/routes/field-monitoring.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsOhC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC"}
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fieldMonitoringRouter = void 0;
4
- const core_1 = require("@ts-rest/core");
5
- const zod_1 = require("zod");
6
- const field_monitoring_schemas_1 = require("../schemas/field-monitoring.schemas");
7
- const c = (0, core_1.initContract)();
8
- exports.fieldMonitoringRouter = c.router({
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { fieldMonitoringSummarySchema, ndviTrendDataPointSchema, weeklyNDVIStatsSchema, fieldAlertSchema, fieldComparisonSchema, farmMonitoringStatsSchema, ndviTrendQuerySchema, alertsQuerySchema, triggerAnalysisResponseSchema, fieldMonitoringErrorResponseSchema, soilReadingSchema, soilTrendSchema, historicalNDVIDataPointSchema, intelligentSoilProfileSchema, } from '../schemas/field-monitoring.schemas';
4
+ const c = initContract();
5
+ export const fieldMonitoringRouter = c.router({
9
6
  // Get current monitoring status for a field
10
7
  getFieldStatus: {
11
8
  method: 'GET',
12
9
  path: '/farms/:farmId/fields/:fieldId/monitoring',
13
10
  responses: {
14
- 200: field_monitoring_schemas_1.fieldMonitoringSummarySchema,
15
- 404: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
11
+ 200: fieldMonitoringSummarySchema,
12
+ 404: fieldMonitoringErrorResponseSchema,
16
13
  },
17
14
  summary: 'Get current monitoring status for a field',
18
15
  },
@@ -20,13 +17,13 @@ exports.fieldMonitoringRouter = c.router({
20
17
  getNDVITrend: {
21
18
  method: 'GET',
22
19
  path: '/farms/:farmId/fields/:fieldId/monitoring/ndvi-trend',
23
- query: field_monitoring_schemas_1.ndviTrendQuerySchema,
20
+ query: ndviTrendQuerySchema,
24
21
  responses: {
25
- 200: zod_1.z.union([
26
- zod_1.z.array(field_monitoring_schemas_1.ndviTrendDataPointSchema),
27
- zod_1.z.array(field_monitoring_schemas_1.weeklyNDVIStatsSchema),
22
+ 200: z.union([
23
+ z.array(ndviTrendDataPointSchema),
24
+ z.array(weeklyNDVIStatsSchema),
28
25
  ]),
29
- 404: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
26
+ 404: fieldMonitoringErrorResponseSchema,
30
27
  },
31
28
  summary: 'Get NDVI trend for date range',
32
29
  },
@@ -34,9 +31,9 @@ exports.fieldMonitoringRouter = c.router({
34
31
  getFieldAlerts: {
35
32
  method: 'GET',
36
33
  path: '/farms/:farmId/fields/:fieldId/monitoring/alerts',
37
- query: field_monitoring_schemas_1.alertsQuerySchema,
34
+ query: alertsQuerySchema,
38
35
  responses: {
39
- 200: zod_1.z.array(field_monitoring_schemas_1.fieldAlertSchema),
36
+ 200: z.array(fieldAlertSchema),
40
37
  },
41
38
  summary: 'Get alerts for a field',
42
39
  },
@@ -44,9 +41,9 @@ exports.fieldMonitoringRouter = c.router({
44
41
  getFarmAlerts: {
45
42
  method: 'GET',
46
43
  path: '/farms/:farmId/monitoring/alerts',
47
- query: field_monitoring_schemas_1.alertsQuerySchema,
44
+ query: alertsQuerySchema,
48
45
  responses: {
49
- 200: zod_1.z.array(field_monitoring_schemas_1.fieldAlertSchema),
46
+ 200: z.array(fieldAlertSchema),
50
47
  },
51
48
  summary: 'Get all alerts for a farm',
52
49
  },
@@ -55,7 +52,7 @@ exports.fieldMonitoringRouter = c.router({
55
52
  method: 'GET',
56
53
  path: '/farms/:farmId/monitoring/compare',
57
54
  responses: {
58
- 200: zod_1.z.array(field_monitoring_schemas_1.fieldComparisonSchema),
55
+ 200: z.array(fieldComparisonSchema),
59
56
  },
60
57
  summary: 'Compare health across all fields in a farm',
61
58
  },
@@ -64,7 +61,7 @@ exports.fieldMonitoringRouter = c.router({
64
61
  method: 'GET',
65
62
  path: '/farms/:farmId/monitoring/stats',
66
63
  responses: {
67
- 200: field_monitoring_schemas_1.farmMonitoringStatsSchema,
64
+ 200: farmMonitoringStatsSchema,
68
65
  },
69
66
  summary: 'Get monitoring statistics for a farm',
70
67
  },
@@ -72,10 +69,10 @@ exports.fieldMonitoringRouter = c.router({
72
69
  acknowledgeAlert: {
73
70
  method: 'PATCH',
74
71
  path: '/farms/:farmId/monitoring/alerts/:alertId/acknowledge',
75
- body: zod_1.z.object({}),
72
+ body: z.object({}),
76
73
  responses: {
77
- 200: field_monitoring_schemas_1.fieldAlertSchema,
78
- 404: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
74
+ 200: fieldAlertSchema,
75
+ 404: fieldMonitoringErrorResponseSchema,
79
76
  },
80
77
  summary: 'Acknowledge an alert',
81
78
  },
@@ -83,10 +80,10 @@ exports.fieldMonitoringRouter = c.router({
83
80
  resolveAlert: {
84
81
  method: 'PATCH',
85
82
  path: '/farms/:farmId/monitoring/alerts/:alertId/resolve',
86
- body: zod_1.z.object({}),
83
+ body: z.object({}),
87
84
  responses: {
88
- 200: field_monitoring_schemas_1.fieldAlertSchema,
89
- 404: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
85
+ 200: fieldAlertSchema,
86
+ 404: fieldMonitoringErrorResponseSchema,
90
87
  },
91
88
  summary: 'Resolve an alert',
92
89
  },
@@ -94,15 +91,15 @@ exports.fieldMonitoringRouter = c.router({
94
91
  triggerAnalysis: {
95
92
  method: 'POST',
96
93
  path: '/farms/:farmId/fields/:fieldId/monitoring/analyze',
97
- body: zod_1.z.object({
98
- force: zod_1.z.boolean().optional().default(false),
94
+ body: z.object({
95
+ force: z.boolean().optional().default(false),
99
96
  }),
100
97
  responses: {
101
- 200: field_monitoring_schemas_1.triggerAnalysisResponseSchema,
102
- 202: field_monitoring_schemas_1.triggerAnalysisResponseSchema,
103
- 404: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
104
- 500: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
105
- 503: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
98
+ 200: triggerAnalysisResponseSchema,
99
+ 202: triggerAnalysisResponseSchema,
100
+ 404: fieldMonitoringErrorResponseSchema,
101
+ 500: fieldMonitoringErrorResponseSchema,
102
+ 503: fieldMonitoringErrorResponseSchema,
106
103
  },
107
104
  summary: 'Manually trigger field analysis',
108
105
  },
@@ -110,16 +107,16 @@ exports.fieldMonitoringRouter = c.router({
110
107
  retryFailedJobs: {
111
108
  method: 'POST',
112
109
  path: '/farms/:farmId/monitoring/queue/retry-failed',
113
- body: zod_1.z.object({}),
114
- responses: {
115
- 200: zod_1.z.object({
116
- message: zod_1.z.string(),
117
- retriedCount: zod_1.z.number(),
118
- failedJobIds: zod_1.z.array(zod_1.z.string()),
119
- skippedCount: zod_1.z.number(),
120
- skippedJobIds: zod_1.z.array(zod_1.z.string()),
110
+ body: z.object({}),
111
+ responses: {
112
+ 200: z.object({
113
+ message: z.string(),
114
+ retriedCount: z.number(),
115
+ failedJobIds: z.array(z.string()),
116
+ skippedCount: z.number(),
117
+ skippedJobIds: z.array(z.string()),
121
118
  }),
122
- 500: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
119
+ 500: fieldMonitoringErrorResponseSchema,
123
120
  },
124
121
  summary: 'Retry all failed field analysis jobs',
125
122
  },
@@ -128,14 +125,14 @@ exports.fieldMonitoringRouter = c.router({
128
125
  method: 'GET',
129
126
  path: '/farms/:farmId/monitoring/queue/stats',
130
127
  responses: {
131
- 200: zod_1.z.object({
132
- waiting: zod_1.z.number(),
133
- active: zod_1.z.number(),
134
- delayed: zod_1.z.number(),
135
- failed: zod_1.z.number(),
136
- completed: zod_1.z.number(),
128
+ 200: z.object({
129
+ waiting: z.number(),
130
+ active: z.number(),
131
+ delayed: z.number(),
132
+ failed: z.number(),
133
+ completed: z.number(),
137
134
  }),
138
- 500: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
135
+ 500: fieldMonitoringErrorResponseSchema,
139
136
  },
140
137
  summary: 'Get queue statistics',
141
138
  },
@@ -144,35 +141,35 @@ exports.fieldMonitoringRouter = c.router({
144
141
  method: 'GET',
145
142
  path: '/farms/:farmId/fields/:fieldId/monitoring/soil/current',
146
143
  responses: {
147
- 200: field_monitoring_schemas_1.soilReadingSchema.nullable(),
148
- 404: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
144
+ 200: soilReadingSchema.nullable(),
145
+ 404: fieldMonitoringErrorResponseSchema,
149
146
  },
150
147
  summary: 'Get current soil moisture and temperature',
151
148
  },
152
149
  getSoilHistory: {
153
150
  method: 'GET',
154
151
  path: '/farms/:farmId/fields/:fieldId/monitoring/soil/history',
155
- query: zod_1.z.object({
156
- startDate: zod_1.z.string().datetime(),
157
- endDate: zod_1.z.string().datetime(),
152
+ query: z.object({
153
+ startDate: z.string().datetime(),
154
+ endDate: z.string().datetime(),
158
155
  }),
159
156
  responses: {
160
- 200: zod_1.z.array(field_monitoring_schemas_1.soilReadingSchema),
157
+ 200: z.array(soilReadingSchema),
161
158
  },
162
159
  summary: 'Get historical soil readings',
163
160
  },
164
161
  getSoilTrend: {
165
162
  method: 'GET',
166
163
  path: '/farms/:farmId/fields/:fieldId/monitoring/soil/trend',
167
- query: zod_1.z.object({
168
- days: zod_1.z
164
+ query: z.object({
165
+ days: z
169
166
  .string()
170
167
  .transform(Number)
171
- .pipe(zod_1.z.number().min(1).max(90))
168
+ .pipe(z.number().min(1).max(90))
172
169
  .optional(),
173
170
  }),
174
171
  responses: {
175
- 200: field_monitoring_schemas_1.soilTrendSchema,
172
+ 200: soilTrendSchema,
176
173
  },
177
174
  summary: 'Get soil moisture trend analysis',
178
175
  },
@@ -180,26 +177,26 @@ exports.fieldMonitoringRouter = c.router({
180
177
  getNDVIHistorical: {
181
178
  method: 'GET',
182
179
  path: '/farms/:farmId/fields/:fieldId/monitoring/ndvi/historical',
183
- query: zod_1.z.object({
184
- startDate: zod_1.z.string().datetime(),
185
- endDate: zod_1.z.string().datetime(),
186
- source: zod_1.z
180
+ query: z.object({
181
+ startDate: z.string().datetime(),
182
+ endDate: z.string().datetime(),
183
+ source: z
187
184
  .enum(['sentinel-2', 'landsat-8', 'modis', 'all'])
188
185
  .optional(),
189
- cloudMax: zod_1.z
186
+ cloudMax: z
190
187
  .string()
191
188
  .transform(Number)
192
- .pipe(zod_1.z.number().min(0).max(100))
189
+ .pipe(z.number().min(0).max(100))
193
190
  .optional(),
194
- coverageMin: zod_1.z
191
+ coverageMin: z
195
192
  .string()
196
193
  .transform(Number)
197
- .pipe(zod_1.z.number().min(0).max(100))
194
+ .pipe(z.number().min(0).max(100))
198
195
  .optional(),
199
196
  }),
200
197
  responses: {
201
- 200: zod_1.z.array(field_monitoring_schemas_1.historicalNDVIDataPointSchema),
202
- 404: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
198
+ 200: z.array(historicalNDVIDataPointSchema),
199
+ 404: fieldMonitoringErrorResponseSchema,
203
200
  },
204
201
  summary: 'Get historical NDVI data (long-term trends)',
205
202
  },
@@ -207,11 +204,17 @@ exports.fieldMonitoringRouter = c.router({
207
204
  getIntelligentSoilProfile: {
208
205
  method: 'GET',
209
206
  path: '/farms/:farmId/fields/:fieldId/monitoring/soil/profile/intelligent',
207
+ query: z.object({
208
+ forceRefresh: z
209
+ .string()
210
+ .optional()
211
+ .transform((val) => val === 'true' || val === '1'),
212
+ }),
210
213
  responses: {
211
- 200: field_monitoring_schemas_1.intelligentSoilProfileSchema,
212
- 404: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
213
- 400: field_monitoring_schemas_1.fieldMonitoringErrorResponseSchema,
214
+ 200: intelligentSoilProfileSchema,
215
+ 404: fieldMonitoringErrorResponseSchema,
216
+ 400: fieldMonitoringErrorResponseSchema,
214
217
  },
215
- summary: 'Get intelligent unified soil profile aggregating all data sources with LLM-powered recommendations',
218
+ summary: 'Get intelligent unified soil profile aggregating all data sources with LLM-powered recommendations. Cached for 2 days unless forceRefresh=true',
216
219
  },
217
220
  });