@deepintel-ltd/farmpro-contracts 1.7.14 → 1.7.20

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 (126) 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/agent-workflows.routes.d.ts +88 -88
  5. package/dist/routes/agents.routes.d.ts +3266 -6
  6. package/dist/routes/agents.routes.d.ts.map +1 -1
  7. package/dist/routes/agents.routes.js +130 -1
  8. package/dist/routes/analytics.routes.d.ts +20 -20
  9. package/dist/routes/cooperative.routes.d.ts +1327 -0
  10. package/dist/routes/cooperative.routes.d.ts.map +1 -0
  11. package/dist/routes/cooperative.routes.js +47 -0
  12. package/dist/routes/documents.routes.d.ts +855 -58
  13. package/dist/routes/documents.routes.d.ts.map +1 -1
  14. package/dist/routes/documents.routes.js +43 -1
  15. package/dist/routes/equipment.routes.d.ts +38 -38
  16. package/dist/routes/extension.routes.d.ts +2431 -0
  17. package/dist/routes/extension.routes.d.ts.map +1 -0
  18. package/dist/routes/extension.routes.js +75 -0
  19. package/dist/routes/farm-status.routes.d.ts +315 -0
  20. package/dist/routes/farm-status.routes.d.ts.map +1 -0
  21. package/dist/routes/farm-status.routes.js +26 -0
  22. package/dist/routes/farms.routes.d.ts +775 -0
  23. package/dist/routes/farms.routes.d.ts.map +1 -1
  24. package/dist/routes/farms.routes.js +15 -1
  25. package/dist/routes/fertigation.routes.d.ts +148 -148
  26. package/dist/routes/field-monitoring.routes.d.ts +557 -52
  27. package/dist/routes/field-monitoring.routes.d.ts.map +1 -1
  28. package/dist/routes/field-monitoring.routes.js +23 -1
  29. package/dist/routes/field-observations.routes.d.ts +56 -56
  30. package/dist/routes/fields.routes.d.ts +156 -155
  31. package/dist/routes/fields.routes.d.ts.map +1 -1
  32. package/dist/routes/finance.routes.d.ts +3493 -0
  33. package/dist/routes/finance.routes.d.ts.map +1 -1
  34. package/dist/routes/finance.routes.js +158 -1
  35. package/dist/routes/geofences.routes.d.ts.map +1 -1
  36. package/dist/routes/index.d.ts +18 -0
  37. package/dist/routes/index.d.ts.map +1 -1
  38. package/dist/routes/index.js +12 -0
  39. package/dist/routes/irrigation.routes.d.ts +6 -6
  40. package/dist/routes/live-monitor.routes.d.ts +513 -0
  41. package/dist/routes/live-monitor.routes.d.ts.map +1 -0
  42. package/dist/routes/live-monitor.routes.js +81 -0
  43. package/dist/routes/livestock-map.routes.d.ts +4 -4
  44. package/dist/routes/measurements.routes.d.ts +13 -4
  45. package/dist/routes/measurements.routes.d.ts.map +1 -1
  46. package/dist/routes/monitoring-visualization.routes.d.ts +40 -33
  47. package/dist/routes/monitoring-visualization.routes.d.ts.map +1 -1
  48. package/dist/routes/monitoring-visualization.routes.js +7 -4
  49. package/dist/routes/notifications.routes.d.ts +1350 -0
  50. package/dist/routes/notifications.routes.d.ts.map +1 -0
  51. package/dist/routes/notifications.routes.js +66 -0
  52. package/dist/routes/pest-disease-risk.routes.d.ts +20 -20
  53. package/dist/routes/prescription-maps.routes.d.ts +567 -20
  54. package/dist/routes/prescription-maps.routes.d.ts.map +1 -1
  55. package/dist/routes/prescription-maps.routes.js +18 -1
  56. package/dist/routes/soil-tests.routes.d.ts +30 -30
  57. package/dist/routes/subscriptions.routes.d.ts +14 -14
  58. package/dist/routes/team-payments.routes.d.ts +9571 -0
  59. package/dist/routes/team-payments.routes.d.ts.map +1 -0
  60. package/dist/routes/team-payments.routes.js +262 -0
  61. package/dist/routes/weather.routes.d.ts +545 -52
  62. package/dist/routes/weather.routes.d.ts.map +1 -1
  63. package/dist/routes/weather.routes.js +13 -1
  64. package/dist/routes/yield-prediction.routes.d.ts +30 -30
  65. package/dist/schemas/agent-workflows.schemas.d.ts +92 -92
  66. package/dist/schemas/agents.schemas.d.ts +1121 -0
  67. package/dist/schemas/agents.schemas.d.ts.map +1 -1
  68. package/dist/schemas/agents.schemas.js +181 -0
  69. package/dist/schemas/analytics.schemas.d.ts +56 -56
  70. package/dist/schemas/cooperative.schemas.d.ts +560 -0
  71. package/dist/schemas/cooperative.schemas.d.ts.map +1 -0
  72. package/dist/schemas/cooperative.schemas.js +71 -0
  73. package/dist/schemas/documents.schemas.d.ts +248 -48
  74. package/dist/schemas/documents.schemas.d.ts.map +1 -1
  75. package/dist/schemas/documents.schemas.js +38 -0
  76. package/dist/schemas/equipment.schemas.d.ts +30 -30
  77. package/dist/schemas/extension.schemas.d.ts +1204 -0
  78. package/dist/schemas/extension.schemas.d.ts.map +1 -0
  79. package/dist/schemas/extension.schemas.js +68 -0
  80. package/dist/schemas/farm-status.schemas.d.ts +451 -0
  81. package/dist/schemas/farm-status.schemas.d.ts.map +1 -0
  82. package/dist/schemas/farm-status.schemas.js +44 -0
  83. package/dist/schemas/farms.schemas.d.ts +591 -0
  84. package/dist/schemas/farms.schemas.d.ts.map +1 -1
  85. package/dist/schemas/farms.schemas.js +44 -0
  86. package/dist/schemas/fertigation.schemas.d.ts +50 -50
  87. package/dist/schemas/field-monitoring.schemas.d.ts +318 -42
  88. package/dist/schemas/field-monitoring.schemas.d.ts.map +1 -1
  89. package/dist/schemas/field-monitoring.schemas.js +9 -0
  90. package/dist/schemas/field-observations.schemas.d.ts +45 -44
  91. package/dist/schemas/field-observations.schemas.d.ts.map +1 -1
  92. package/dist/schemas/fields.schemas.d.ts +188 -186
  93. package/dist/schemas/fields.schemas.d.ts.map +1 -1
  94. package/dist/schemas/fields.schemas.js +10 -2
  95. package/dist/schemas/finance.schemas.d.ts +1057 -0
  96. package/dist/schemas/finance.schemas.d.ts.map +1 -1
  97. package/dist/schemas/finance.schemas.js +170 -0
  98. package/dist/schemas/irrigation.schemas.d.ts +8 -8
  99. package/dist/schemas/live-monitor.schemas.d.ts +596 -0
  100. package/dist/schemas/live-monitor.schemas.d.ts.map +1 -0
  101. package/dist/schemas/live-monitor.schemas.js +107 -0
  102. package/dist/schemas/livestock-map.schemas.d.ts +10 -10
  103. package/dist/schemas/measurements.schemas.d.ts +21 -8
  104. package/dist/schemas/measurements.schemas.d.ts.map +1 -1
  105. package/dist/schemas/measurements.schemas.js +13 -6
  106. package/dist/schemas/monitoring-visualization.schemas.d.ts +47 -40
  107. package/dist/schemas/monitoring-visualization.schemas.d.ts.map +1 -1
  108. package/dist/schemas/monitoring-visualization.schemas.js +24 -16
  109. package/dist/schemas/notifications.schemas.d.ts +464 -0
  110. package/dist/schemas/notifications.schemas.d.ts.map +1 -0
  111. package/dist/schemas/notifications.schemas.js +40 -0
  112. package/dist/schemas/pest-disease-risk.schemas.d.ts +18 -18
  113. package/dist/schemas/prescription-maps.schemas.d.ts +41 -18
  114. package/dist/schemas/prescription-maps.schemas.d.ts.map +1 -1
  115. package/dist/schemas/prescription-maps.schemas.js +8 -0
  116. package/dist/schemas/recommendations.schemas.d.ts +2 -2
  117. package/dist/schemas/soil-tests.schemas.d.ts +28 -28
  118. package/dist/schemas/subscriptions.schemas.d.ts +22 -22
  119. package/dist/schemas/team-payments.schemas.d.ts +2604 -0
  120. package/dist/schemas/team-payments.schemas.d.ts.map +1 -0
  121. package/dist/schemas/team-payments.schemas.js +151 -0
  122. package/dist/schemas/weather.schemas.d.ts +789 -112
  123. package/dist/schemas/weather.schemas.d.ts.map +1 -1
  124. package/dist/schemas/weather.schemas.js +37 -0
  125. package/dist/schemas/yield-prediction.schemas.d.ts +12 -12
  126. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.routes.d.ts","sourceRoot":"","sources":["../../src/routes/extension.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0E1B,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { extensionAssignmentListResponseSchema, extensionAssignmentResponseSchema, createExtensionAssignmentInputSchema, createExtensionVisitInputSchema, extensionVisitResponseSchema, createExtensionRecommendationInputSchema, extensionRecommendationResponseSchema, extensionErrorSchema, } from '../schemas/extension.schemas';
4
+ const c = initContract();
5
+ export const extensionRouter = c.router({
6
+ listAssignments: {
7
+ method: 'GET',
8
+ path: '/extension/assignments',
9
+ responses: {
10
+ 200: extensionAssignmentListResponseSchema,
11
+ 401: extensionErrorSchema,
12
+ },
13
+ summary: 'List extension worker assignments',
14
+ description: 'Returns farms assigned to the authenticated extension worker.',
15
+ },
16
+ createVisit: {
17
+ method: 'POST',
18
+ path: '/extension/visits',
19
+ body: z.object({ data: createExtensionVisitInputSchema }),
20
+ responses: {
21
+ 201: extensionVisitResponseSchema,
22
+ 400: extensionErrorSchema,
23
+ 401: extensionErrorSchema,
24
+ 403: extensionErrorSchema,
25
+ 404: extensionErrorSchema,
26
+ },
27
+ summary: 'Log an extension visit',
28
+ description: 'Record a field visit for an assigned farm.',
29
+ },
30
+ createRecommendation: {
31
+ method: 'POST',
32
+ path: '/extension/recommendations',
33
+ body: z.object({ data: createExtensionRecommendationInputSchema }),
34
+ responses: {
35
+ 201: extensionRecommendationResponseSchema,
36
+ 400: extensionErrorSchema,
37
+ 401: extensionErrorSchema,
38
+ 403: extensionErrorSchema,
39
+ 404: extensionErrorSchema,
40
+ },
41
+ summary: 'Deliver an extension recommendation',
42
+ description: 'Create a recommendation for a farmer on an assigned farm.',
43
+ },
44
+ createAssignment: {
45
+ method: 'POST',
46
+ path: '/organizations/:orgId/extension/assignments',
47
+ pathParams: z.object({ orgId: z.string().uuid() }),
48
+ body: z.object({ data: createExtensionAssignmentInputSchema }),
49
+ responses: {
50
+ 201: extensionAssignmentResponseSchema,
51
+ 400: extensionErrorSchema,
52
+ 401: extensionErrorSchema,
53
+ 403: extensionErrorSchema,
54
+ 404: extensionErrorSchema,
55
+ },
56
+ summary: 'Assign extension worker to farm',
57
+ description: 'Org admin assigns an extension worker to a member farm.',
58
+ },
59
+ revokeAssignment: {
60
+ method: 'DELETE',
61
+ path: '/organizations/:orgId/extension/assignments/:assignmentId',
62
+ pathParams: z.object({
63
+ orgId: z.string().uuid(),
64
+ assignmentId: z.string().uuid(),
65
+ }),
66
+ responses: {
67
+ 200: extensionAssignmentResponseSchema,
68
+ 401: extensionErrorSchema,
69
+ 403: extensionErrorSchema,
70
+ 404: extensionErrorSchema,
71
+ },
72
+ summary: 'Revoke extension worker assignment',
73
+ description: 'Org admin completes an extension worker farm assignment.',
74
+ },
75
+ });
@@ -0,0 +1,315 @@
1
+ import { z } from 'zod';
2
+ export declare const farmStatusRouter: {
3
+ getFarmStatus: {
4
+ pathParams: z.ZodObject<{
5
+ farmId: z.ZodString;
6
+ }, "strip", z.ZodTypeAny, {
7
+ farmId: string;
8
+ }, {
9
+ farmId: string;
10
+ }>;
11
+ summary: "Get live farm status";
12
+ description: "Returns the live dashboard snapshot for a farm: composite health score, alert counts, task stats and NDVI summary.";
13
+ method: "GET";
14
+ path: "/farms/:farmId/status";
15
+ responses: {
16
+ 200: z.ZodObject<{
17
+ data: z.ZodObject<{
18
+ type: z.ZodLiteral<"farm-status">;
19
+ id: z.ZodString;
20
+ attributes: z.ZodObject<{
21
+ farmId: z.ZodString;
22
+ health: z.ZodObject<{
23
+ overall: z.ZodNumber;
24
+ cropHealth: z.ZodNumber;
25
+ weatherRisk: z.ZodNumber;
26
+ taskCompliance: z.ZodNumber;
27
+ financialHealth: z.ZodNumber;
28
+ }, "strip", z.ZodTypeAny, {
29
+ overall: number;
30
+ cropHealth: number;
31
+ weatherRisk: number;
32
+ taskCompliance: number;
33
+ financialHealth: number;
34
+ }, {
35
+ overall: number;
36
+ cropHealth: number;
37
+ weatherRisk: number;
38
+ taskCompliance: number;
39
+ financialHealth: number;
40
+ }>;
41
+ alertSummary: z.ZodObject<{
42
+ total: z.ZodNumber;
43
+ critical: z.ZodNumber;
44
+ high: z.ZodNumber;
45
+ medium: z.ZodNumber;
46
+ low: z.ZodNumber;
47
+ actionRequired: z.ZodNumber;
48
+ }, "strip", z.ZodTypeAny, {
49
+ critical: number;
50
+ low: number;
51
+ medium: number;
52
+ high: number;
53
+ total: number;
54
+ actionRequired: number;
55
+ }, {
56
+ critical: number;
57
+ low: number;
58
+ medium: number;
59
+ high: number;
60
+ total: number;
61
+ actionRequired: number;
62
+ }>;
63
+ taskSummary: z.ZodObject<{
64
+ pending: z.ZodNumber;
65
+ overdue: z.ZodNumber;
66
+ completedLast14Days: z.ZodNumber;
67
+ }, "strip", z.ZodTypeAny, {
68
+ pending: number;
69
+ overdue: number;
70
+ completedLast14Days: number;
71
+ }, {
72
+ pending: number;
73
+ overdue: number;
74
+ completedLast14Days: number;
75
+ }>;
76
+ ndvi: z.ZodObject<{
77
+ average: z.ZodNullable<z.ZodNumber>;
78
+ fieldCount: z.ZodNumber;
79
+ }, "strip", z.ZodTypeAny, {
80
+ average: number | null;
81
+ fieldCount: number;
82
+ }, {
83
+ average: number | null;
84
+ fieldCount: number;
85
+ }>;
86
+ computedAt: z.ZodString;
87
+ }, "strip", z.ZodTypeAny, {
88
+ ndvi: {
89
+ average: number | null;
90
+ fieldCount: number;
91
+ };
92
+ farmId: string;
93
+ health: {
94
+ overall: number;
95
+ cropHealth: number;
96
+ weatherRisk: number;
97
+ taskCompliance: number;
98
+ financialHealth: number;
99
+ };
100
+ alertSummary: {
101
+ critical: number;
102
+ low: number;
103
+ medium: number;
104
+ high: number;
105
+ total: number;
106
+ actionRequired: number;
107
+ };
108
+ taskSummary: {
109
+ pending: number;
110
+ overdue: number;
111
+ completedLast14Days: number;
112
+ };
113
+ computedAt: string;
114
+ }, {
115
+ ndvi: {
116
+ average: number | null;
117
+ fieldCount: number;
118
+ };
119
+ farmId: string;
120
+ health: {
121
+ overall: number;
122
+ cropHealth: number;
123
+ weatherRisk: number;
124
+ taskCompliance: number;
125
+ financialHealth: number;
126
+ };
127
+ alertSummary: {
128
+ critical: number;
129
+ low: number;
130
+ medium: number;
131
+ high: number;
132
+ total: number;
133
+ actionRequired: number;
134
+ };
135
+ taskSummary: {
136
+ pending: number;
137
+ overdue: number;
138
+ completedLast14Days: number;
139
+ };
140
+ computedAt: string;
141
+ }>;
142
+ }, "strip", z.ZodTypeAny, {
143
+ type: "farm-status";
144
+ id: string;
145
+ attributes: {
146
+ ndvi: {
147
+ average: number | null;
148
+ fieldCount: number;
149
+ };
150
+ farmId: string;
151
+ health: {
152
+ overall: number;
153
+ cropHealth: number;
154
+ weatherRisk: number;
155
+ taskCompliance: number;
156
+ financialHealth: number;
157
+ };
158
+ alertSummary: {
159
+ critical: number;
160
+ low: number;
161
+ medium: number;
162
+ high: number;
163
+ total: number;
164
+ actionRequired: number;
165
+ };
166
+ taskSummary: {
167
+ pending: number;
168
+ overdue: number;
169
+ completedLast14Days: number;
170
+ };
171
+ computedAt: string;
172
+ };
173
+ }, {
174
+ type: "farm-status";
175
+ id: string;
176
+ attributes: {
177
+ ndvi: {
178
+ average: number | null;
179
+ fieldCount: number;
180
+ };
181
+ farmId: string;
182
+ health: {
183
+ overall: number;
184
+ cropHealth: number;
185
+ weatherRisk: number;
186
+ taskCompliance: number;
187
+ financialHealth: number;
188
+ };
189
+ alertSummary: {
190
+ critical: number;
191
+ low: number;
192
+ medium: number;
193
+ high: number;
194
+ total: number;
195
+ actionRequired: number;
196
+ };
197
+ taskSummary: {
198
+ pending: number;
199
+ overdue: number;
200
+ completedLast14Days: number;
201
+ };
202
+ computedAt: string;
203
+ };
204
+ }>;
205
+ }, "strip", z.ZodTypeAny, {
206
+ data: {
207
+ type: "farm-status";
208
+ id: string;
209
+ attributes: {
210
+ ndvi: {
211
+ average: number | null;
212
+ fieldCount: number;
213
+ };
214
+ farmId: string;
215
+ health: {
216
+ overall: number;
217
+ cropHealth: number;
218
+ weatherRisk: number;
219
+ taskCompliance: number;
220
+ financialHealth: number;
221
+ };
222
+ alertSummary: {
223
+ critical: number;
224
+ low: number;
225
+ medium: number;
226
+ high: number;
227
+ total: number;
228
+ actionRequired: number;
229
+ };
230
+ taskSummary: {
231
+ pending: number;
232
+ overdue: number;
233
+ completedLast14Days: number;
234
+ };
235
+ computedAt: string;
236
+ };
237
+ };
238
+ }, {
239
+ data: {
240
+ type: "farm-status";
241
+ id: string;
242
+ attributes: {
243
+ ndvi: {
244
+ average: number | null;
245
+ fieldCount: number;
246
+ };
247
+ farmId: string;
248
+ health: {
249
+ overall: number;
250
+ cropHealth: number;
251
+ weatherRisk: number;
252
+ taskCompliance: number;
253
+ financialHealth: number;
254
+ };
255
+ alertSummary: {
256
+ critical: number;
257
+ low: number;
258
+ medium: number;
259
+ high: number;
260
+ total: number;
261
+ actionRequired: number;
262
+ };
263
+ taskSummary: {
264
+ pending: number;
265
+ overdue: number;
266
+ completedLast14Days: number;
267
+ };
268
+ computedAt: string;
269
+ };
270
+ };
271
+ }>;
272
+ 401: z.ZodObject<{
273
+ message: z.ZodString;
274
+ code: z.ZodString;
275
+ }, "strip", z.ZodTypeAny, {
276
+ code: string;
277
+ message: string;
278
+ }, {
279
+ code: string;
280
+ message: string;
281
+ }>;
282
+ 403: z.ZodObject<{
283
+ message: z.ZodString;
284
+ code: z.ZodString;
285
+ }, "strip", z.ZodTypeAny, {
286
+ code: string;
287
+ message: string;
288
+ }, {
289
+ code: string;
290
+ message: string;
291
+ }>;
292
+ 404: z.ZodObject<{
293
+ message: z.ZodString;
294
+ code: z.ZodString;
295
+ }, "strip", z.ZodTypeAny, {
296
+ code: string;
297
+ message: string;
298
+ }, {
299
+ code: string;
300
+ message: string;
301
+ }>;
302
+ 500: z.ZodObject<{
303
+ message: z.ZodString;
304
+ code: z.ZodString;
305
+ }, "strip", z.ZodTypeAny, {
306
+ code: string;
307
+ message: string;
308
+ }, {
309
+ code: string;
310
+ message: string;
311
+ }>;
312
+ };
313
+ };
314
+ };
315
+ //# sourceMappingURL=farm-status.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"farm-status.routes.d.ts","sourceRoot":"","sources":["../../src/routes/farm-status.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkB3B,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { farmStatusResponseSchema } from '../schemas/farm-status.schemas';
4
+ const c = initContract();
5
+ const errorSchema = z.object({
6
+ message: z.string(),
7
+ code: z.string(),
8
+ });
9
+ export const farmStatusRouter = c.router({
10
+ // Live per-farm status snapshot for the command center dashboard.
11
+ // Returns the latest health score + alert/task summary, computed on demand.
12
+ getFarmStatus: {
13
+ method: 'GET',
14
+ path: '/farms/:farmId/status',
15
+ pathParams: z.object({ farmId: z.string().uuid() }),
16
+ responses: {
17
+ 200: farmStatusResponseSchema,
18
+ 401: errorSchema,
19
+ 403: errorSchema,
20
+ 404: errorSchema,
21
+ 500: errorSchema,
22
+ },
23
+ summary: 'Get live farm status',
24
+ description: 'Returns the live dashboard snapshot for a farm: composite health score, alert counts, task stats and NDVI summary.',
25
+ },
26
+ });