@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.harvestRouter = void 0;
4
- const core_1 = require("@ts-rest/core");
5
- const zod_1 = require("zod");
6
- const harvest_schemas_1 = require("../schemas/harvest.schemas");
7
- const common_schemas_1 = require("../schemas/common.schemas");
8
- const c = (0, core_1.initContract)();
9
- exports.harvestRouter = c.router({
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { createHarvestSchema, updateHarvestSchema, harvestResponseSchema, harvestDetailResponseSchema, harvestListResponseSchema, } from '../schemas/harvest.schemas';
4
+ import { jsonApiErrorResponseSchema, jsonApiSuccessResponseSchema, jsonApiPaginationQuerySchema, jsonApiSortQuerySchema, jsonApiIncludeQuerySchema, jsonApiFilterQuerySchema } from '../schemas/common.schemas';
5
+ const c = initContract();
6
+ export const harvestRouter = c.router({
10
7
  // List harvests for a farm
11
8
  listHarvests: {
12
9
  method: 'GET',
13
10
  path: '/farms/:farmId/harvests',
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[fieldId]': zod_1.z.string().uuid().optional(),
21
- 'filter[crop]': zod_1.z.string().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[fieldId]': z.string().uuid().optional(),
18
+ 'filter[crop]': z.string().optional(),
22
19
  })),
23
20
  responses: {
24
- 200: harvest_schemas_1.harvestListResponseSchema,
25
- 404: common_schemas_1.jsonApiErrorResponseSchema,
26
- 401: common_schemas_1.jsonApiErrorResponseSchema,
21
+ 200: harvestListResponseSchema,
22
+ 404: jsonApiErrorResponseSchema,
23
+ 401: jsonApiErrorResponseSchema,
27
24
  },
28
25
  summary: 'List harvests',
29
26
  description: 'Get all harvest records for a farm',
@@ -32,14 +29,14 @@ exports.harvestRouter = c.router({
32
29
  createHarvest: {
33
30
  method: 'POST',
34
31
  path: '/farms/:farmId/harvests',
35
- pathParams: zod_1.z.object({ farmId: zod_1.z.string().uuid() }),
36
- body: zod_1.z.object({ data: harvest_schemas_1.createHarvestSchema }),
32
+ pathParams: z.object({ farmId: z.string().uuid() }),
33
+ body: z.object({ data: createHarvestSchema }),
37
34
  responses: {
38
- 201: harvest_schemas_1.harvestResponseSchema,
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: harvestResponseSchema,
36
+ 400: jsonApiErrorResponseSchema,
37
+ 404: jsonApiErrorResponseSchema,
38
+ 401: jsonApiErrorResponseSchema,
39
+ 422: jsonApiErrorResponseSchema,
43
40
  },
44
41
  summary: 'Create harvest',
45
42
  description: 'Record a new harvest with yield calculation',
@@ -48,15 +45,15 @@ exports.harvestRouter = c.router({
48
45
  getHarvest: {
49
46
  method: 'GET',
50
47
  path: '/farms/:farmId/harvests/: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: harvest_schemas_1.harvestDetailResponseSchema,
58
- 404: common_schemas_1.jsonApiErrorResponseSchema,
59
- 401: common_schemas_1.jsonApiErrorResponseSchema,
54
+ 200: harvestDetailResponseSchema,
55
+ 404: jsonApiErrorResponseSchema,
56
+ 401: jsonApiErrorResponseSchema,
60
57
  },
61
58
  summary: 'Get harvest by ID',
62
59
  description: 'Get detailed information about a specific harvest',
@@ -65,17 +62,17 @@ exports.harvestRouter = c.router({
65
62
  updateHarvest: {
66
63
  method: 'PATCH',
67
64
  path: '/farms/:farmId/harvests/: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: harvest_schemas_1.updateHarvestSchema }),
69
+ body: z.object({ data: updateHarvestSchema }),
73
70
  responses: {
74
- 200: harvest_schemas_1.harvestResponseSchema,
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: harvestResponseSchema,
72
+ 400: jsonApiErrorResponseSchema,
73
+ 404: jsonApiErrorResponseSchema,
74
+ 401: jsonApiErrorResponseSchema,
75
+ 422: jsonApiErrorResponseSchema,
79
76
  },
80
77
  summary: 'Update harvest',
81
78
  description: 'Update harvest information',
@@ -84,14 +81,14 @@ exports.harvestRouter = c.router({
84
81
  deleteHarvest: {
85
82
  method: 'DELETE',
86
83
  path: '/farms/:farmId/harvests/: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 harvest',
97
94
  description: 'Delete a harvest record',
@@ -1,16 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.healthRouter = void 0;
4
- const core_1 = require("@ts-rest/core");
5
- const health_schemas_1 = require("../schemas/health.schemas");
6
- const c = (0, core_1.initContract)();
7
- exports.healthRouter = c.router({
1
+ import { initContract } from '@ts-rest/core';
2
+ import { healthCheckResponseSchema } from '../schemas/health.schemas';
3
+ const c = initContract();
4
+ export const healthRouter = c.router({
8
5
  check: {
9
6
  method: 'GET',
10
7
  path: '/health',
11
8
  responses: {
12
- 200: health_schemas_1.healthCheckResponseSchema,
13
- 503: health_schemas_1.healthCheckResponseSchema, // Service unavailable
9
+ 200: healthCheckResponseSchema,
10
+ 503: healthCheckResponseSchema, // Service unavailable
14
11
  },
15
12
  summary: 'Health check endpoint',
16
13
  description: 'Check the health status of the API and its dependencies (database, Redis, storage)',
@@ -1,61 +1,58 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.apiContract = void 0;
4
- const core_1 = require("@ts-rest/core");
5
- const auth_routes_1 = require("./auth.routes");
6
- const users_routes_1 = require("./users.routes");
7
- const farms_routes_1 = require("./farms.routes");
8
- const fields_routes_1 = require("./fields.routes");
9
- const tasks_routes_1 = require("./tasks.routes");
10
- const inventory_routes_1 = require("./inventory.routes");
11
- const finance_routes_1 = require("./finance.routes");
12
- const harvest_routes_1 = require("./harvest.routes");
13
- const soil_tests_routes_1 = require("./soil-tests.routes");
14
- const weather_routes_1 = require("./weather.routes");
15
- const team_routes_1 = require("./team.routes");
16
- const equipment_routes_1 = require("./equipment.routes");
17
- const documents_routes_1 = require("./documents.routes");
18
- const suppliers_routes_1 = require("./suppliers.routes");
19
- const analytics_routes_1 = require("./analytics.routes");
20
- const categories_routes_1 = require("./categories.routes");
21
- const agents_routes_1 = require("./agents.routes");
22
- const agent_workflows_routes_1 = require("./agent-workflows.routes");
23
- const field_monitoring_routes_1 = require("./field-monitoring.routes");
24
- const field_observations_routes_1 = require("./field-observations.routes");
25
- const admin_routes_1 = require("./admin.routes");
26
- const health_routes_1 = require("./health.routes");
27
- const seasonal_plans_routes_1 = require("./seasonal-plans.routes");
28
- const input_usage_routes_1 = require("./input-usage.routes");
29
- const c = (0, core_1.initContract)();
1
+ import { initContract } from '@ts-rest/core';
2
+ import { authRouter } from './auth.routes';
3
+ import { usersRouter } from './users.routes';
4
+ import { farmsRouter } from './farms.routes';
5
+ import { fieldsRouter } from './fields.routes';
6
+ import { tasksRouter } from './tasks.routes';
7
+ import { inventoryRouter } from './inventory.routes';
8
+ import { financeRouter } from './finance.routes';
9
+ import { harvestRouter } from './harvest.routes';
10
+ import { soilTestsRouter } from './soil-tests.routes';
11
+ import { weatherRouter } from './weather.routes';
12
+ import { teamRouter } from './team.routes';
13
+ import { equipmentRouter } from './equipment.routes';
14
+ import { documentsRouter } from './documents.routes';
15
+ import { suppliersRouter } from './suppliers.routes';
16
+ import { analyticsRouter } from './analytics.routes';
17
+ import { categoriesRouter } from './categories.routes';
18
+ import { agentsRouter } from './agents.routes';
19
+ import { agentWorkflowsRouter } from './agent-workflows.routes';
20
+ import { fieldMonitoringRouter } from './field-monitoring.routes';
21
+ import { fieldObservationsRouter } from './field-observations.routes';
22
+ import { adminRouter } from './admin.routes';
23
+ import { healthRouter } from './health.routes';
24
+ import { seasonalPlansRouter } from './seasonal-plans.routes';
25
+ import { inputUsageRouter } from './input-usage.routes';
26
+ const c = initContract();
30
27
  /**
31
28
  * Main API contract combining all routers
32
29
  *
33
30
  * Uses explicit interface typing to work around TypeScript's type serialization limit
34
31
  * when combining many complex router types. Type safety is fully maintained.
35
32
  */
36
- exports.apiContract = c.router({
37
- auth: auth_routes_1.authRouter,
38
- users: users_routes_1.usersRouter,
39
- farms: farms_routes_1.farmsRouter,
40
- fields: fields_routes_1.fieldsRouter,
41
- tasks: tasks_routes_1.tasksRouter,
42
- inventory: inventory_routes_1.inventoryRouter,
43
- finance: finance_routes_1.financeRouter,
44
- harvest: harvest_routes_1.harvestRouter,
45
- soilTests: soil_tests_routes_1.soilTestsRouter,
46
- weather: weather_routes_1.weatherRouter,
47
- team: team_routes_1.teamRouter,
48
- equipment: equipment_routes_1.equipmentRouter,
49
- documents: documents_routes_1.documentsRouter,
50
- suppliers: suppliers_routes_1.suppliersRouter,
51
- analytics: analytics_routes_1.analyticsRouter,
52
- categories: categories_routes_1.categoriesRouter,
53
- agents: agents_routes_1.agentsRouter,
54
- agentWorkflows: agent_workflows_routes_1.agentWorkflowsRouter,
55
- fieldMonitoring: field_monitoring_routes_1.fieldMonitoringRouter,
56
- fieldObservations: field_observations_routes_1.fieldObservationsRouter,
57
- admin: admin_routes_1.adminRouter,
58
- health: health_routes_1.healthRouter,
59
- seasonalPlans: seasonal_plans_routes_1.seasonalPlansRouter,
60
- inputUsage: input_usage_routes_1.inputUsageRouter,
33
+ export const apiContract = c.router({
34
+ auth: authRouter,
35
+ users: usersRouter,
36
+ farms: farmsRouter,
37
+ fields: fieldsRouter,
38
+ tasks: tasksRouter,
39
+ inventory: inventoryRouter,
40
+ finance: financeRouter,
41
+ harvest: harvestRouter,
42
+ soilTests: soilTestsRouter,
43
+ weather: weatherRouter,
44
+ team: teamRouter,
45
+ equipment: equipmentRouter,
46
+ documents: documentsRouter,
47
+ suppliers: suppliersRouter,
48
+ analytics: analyticsRouter,
49
+ categories: categoriesRouter,
50
+ agents: agentsRouter,
51
+ agentWorkflows: agentWorkflowsRouter,
52
+ fieldMonitoring: fieldMonitoringRouter,
53
+ fieldObservations: fieldObservationsRouter,
54
+ admin: adminRouter,
55
+ health: healthRouter,
56
+ seasonalPlans: seasonalPlansRouter,
57
+ inputUsage: inputUsageRouter,
61
58
  });
@@ -1,26 +1,23 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.inputUsageRouter = void 0;
4
- const core_1 = require("@ts-rest/core");
5
- const zod_1 = require("zod");
6
- const input_usage_schemas_1 = require("../schemas/input-usage.schemas");
7
- const common_schemas_1 = require("../schemas/common.schemas");
8
- const c = (0, core_1.initContract)();
9
- exports.inputUsageRouter = c.router({
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { inputUsageResponseSchema, } from '../schemas/input-usage.schemas';
4
+ import { jsonApiErrorResponseSchema, } from '../schemas/common.schemas';
5
+ const c = initContract();
6
+ export const inputUsageRouter = c.router({
10
7
  // Get input usage for a farm
11
8
  getInputUsage: {
12
9
  method: 'GET',
13
10
  path: '/farms/:farmId/input-usage',
14
- pathParams: zod_1.z.object({ farmId: zod_1.z.string().uuid() }),
15
- query: zod_1.z.object({
16
- season: zod_1.z.string().optional(), // e.g., "2024-2025"
17
- 'filter[startDate]': zod_1.z.string().datetime().optional(),
18
- 'filter[endDate]': zod_1.z.string().datetime().optional(),
11
+ pathParams: z.object({ farmId: z.string().uuid() }),
12
+ query: z.object({
13
+ season: z.string().optional(), // e.g., "2024-2025"
14
+ 'filter[startDate]': z.string().datetime().optional(),
15
+ 'filter[endDate]': z.string().datetime().optional(),
19
16
  }),
20
17
  responses: {
21
- 200: input_usage_schemas_1.inputUsageResponseSchema,
22
- 404: common_schemas_1.jsonApiErrorResponseSchema,
23
- 401: common_schemas_1.jsonApiErrorResponseSchema,
18
+ 200: inputUsageResponseSchema,
19
+ 404: jsonApiErrorResponseSchema,
20
+ 401: jsonApiErrorResponseSchema,
24
21
  },
25
22
  summary: 'Get input usage',
26
23
  description: 'Get input usage with planned vs actual metrics calculated from tasks that reference inventory items',
@@ -1,28 +1,25 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.inventoryRouter = void 0;
4
- const core_1 = require("@ts-rest/core");
5
- const zod_1 = require("zod");
6
- const inventory_schemas_1 = require("../schemas/inventory.schemas");
7
- const common_schemas_1 = require("../schemas/common.schemas");
8
- const c = (0, core_1.initContract)();
9
- exports.inventoryRouter = c.router({
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { logPurchaseSchema, createInventoryItemSchema, updateInventoryItemSchema, inventoryItemResponseSchema, inventoryItemDetailResponseSchema, inventoryItemListResponseSchema, } from '../schemas/inventory.schemas';
4
+ import { jsonApiErrorResponseSchema, jsonApiSuccessResponseSchema, jsonApiPaginationQuerySchema, jsonApiSortQuerySchema, jsonApiIncludeQuerySchema, jsonApiSingleResponseSchema } from '../schemas/common.schemas';
5
+ const c = initContract();
6
+ export const inventoryRouter = c.router({
10
7
  // List inventory items for a farm
11
8
  listInventory: {
12
9
  method: 'GET',
13
10
  path: '/farms/:farmId/inventory',
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(zod_1.z.object({
19
- 'filter[category]': zod_1.z.string().optional(),
20
- 'filter[lowStock]': zod_1.z.coerce.boolean().optional(), // Filter items with low stock
11
+ pathParams: z.object({ farmId: z.string().uuid() }),
12
+ query: jsonApiPaginationQuerySchema
13
+ .merge(jsonApiSortQuerySchema)
14
+ .merge(jsonApiIncludeQuerySchema)
15
+ .merge(z.object({
16
+ 'filter[category]': z.string().optional(),
17
+ 'filter[lowStock]': z.coerce.boolean().optional(), // Filter items with low stock
21
18
  })),
22
19
  responses: {
23
- 200: inventory_schemas_1.inventoryItemListResponseSchema,
24
- 404: common_schemas_1.jsonApiErrorResponseSchema,
25
- 401: common_schemas_1.jsonApiErrorResponseSchema,
20
+ 200: inventoryItemListResponseSchema,
21
+ 404: jsonApiErrorResponseSchema,
22
+ 401: jsonApiErrorResponseSchema,
26
23
  },
27
24
  summary: 'List inventory items',
28
25
  description: 'Get all inventory items for a specific farm',
@@ -31,14 +28,14 @@ exports.inventoryRouter = c.router({
31
28
  createInventoryItem: {
32
29
  method: 'POST',
33
30
  path: '/farms/:farmId/inventory',
34
- pathParams: zod_1.z.object({ farmId: zod_1.z.string().uuid() }),
35
- body: zod_1.z.object({ data: inventory_schemas_1.createInventoryItemSchema }),
31
+ pathParams: z.object({ farmId: z.string().uuid() }),
32
+ body: z.object({ data: createInventoryItemSchema }),
36
33
  responses: {
37
- 201: inventory_schemas_1.inventoryItemResponseSchema,
38
- 400: common_schemas_1.jsonApiErrorResponseSchema,
39
- 404: common_schemas_1.jsonApiErrorResponseSchema,
40
- 401: common_schemas_1.jsonApiErrorResponseSchema,
41
- 422: common_schemas_1.jsonApiErrorResponseSchema,
34
+ 201: inventoryItemResponseSchema,
35
+ 400: jsonApiErrorResponseSchema,
36
+ 404: jsonApiErrorResponseSchema,
37
+ 401: jsonApiErrorResponseSchema,
38
+ 422: jsonApiErrorResponseSchema,
42
39
  },
43
40
  summary: 'Create inventory item',
44
41
  description: 'Create a new inventory item without logging a purchase',
@@ -47,15 +44,15 @@ exports.inventoryRouter = c.router({
47
44
  getInventoryItem: {
48
45
  method: 'GET',
49
46
  path: '/farms/:farmId/inventory/:id',
50
- pathParams: zod_1.z.object({
51
- farmId: zod_1.z.string().uuid(),
52
- id: zod_1.z.string().uuid(),
47
+ pathParams: z.object({
48
+ farmId: z.string().uuid(),
49
+ id: z.string().uuid(),
53
50
  }),
54
- query: common_schemas_1.jsonApiIncludeQuerySchema,
51
+ query: jsonApiIncludeQuerySchema,
55
52
  responses: {
56
- 200: inventory_schemas_1.inventoryItemDetailResponseSchema,
57
- 404: common_schemas_1.jsonApiErrorResponseSchema,
58
- 401: common_schemas_1.jsonApiErrorResponseSchema,
53
+ 200: inventoryItemDetailResponseSchema,
54
+ 404: jsonApiErrorResponseSchema,
55
+ 401: jsonApiErrorResponseSchema,
59
56
  },
60
57
  summary: 'Get inventory item by ID',
61
58
  description: 'Get detailed information about a specific inventory item',
@@ -64,17 +61,17 @@ exports.inventoryRouter = c.router({
64
61
  updateInventoryItem: {
65
62
  method: 'PATCH',
66
63
  path: '/farms/:farmId/inventory/:id',
67
- pathParams: zod_1.z.object({
68
- farmId: zod_1.z.string().uuid(),
69
- id: zod_1.z.string().uuid(),
64
+ pathParams: z.object({
65
+ farmId: z.string().uuid(),
66
+ id: z.string().uuid(),
70
67
  }),
71
- body: zod_1.z.object({ data: inventory_schemas_1.updateInventoryItemSchema }),
68
+ body: z.object({ data: updateInventoryItemSchema }),
72
69
  responses: {
73
- 200: inventory_schemas_1.inventoryItemResponseSchema,
74
- 400: common_schemas_1.jsonApiErrorResponseSchema,
75
- 404: common_schemas_1.jsonApiErrorResponseSchema,
76
- 401: common_schemas_1.jsonApiErrorResponseSchema,
77
- 422: common_schemas_1.jsonApiErrorResponseSchema,
70
+ 200: inventoryItemResponseSchema,
71
+ 400: jsonApiErrorResponseSchema,
72
+ 404: jsonApiErrorResponseSchema,
73
+ 401: jsonApiErrorResponseSchema,
74
+ 422: jsonApiErrorResponseSchema,
78
75
  },
79
76
  summary: 'Update inventory item',
80
77
  description: 'Update inventory item information',
@@ -83,14 +80,14 @@ exports.inventoryRouter = c.router({
83
80
  deleteInventoryItem: {
84
81
  method: 'DELETE',
85
82
  path: '/farms/:farmId/inventory/:id',
86
- pathParams: zod_1.z.object({
87
- farmId: zod_1.z.string().uuid(),
88
- id: zod_1.z.string().uuid(),
83
+ pathParams: z.object({
84
+ farmId: z.string().uuid(),
85
+ id: z.string().uuid(),
89
86
  }),
90
87
  responses: {
91
- 204: common_schemas_1.jsonApiSuccessResponseSchema,
92
- 404: common_schemas_1.jsonApiErrorResponseSchema,
93
- 401: common_schemas_1.jsonApiErrorResponseSchema,
88
+ 204: jsonApiSuccessResponseSchema,
89
+ 404: jsonApiErrorResponseSchema,
90
+ 401: jsonApiErrorResponseSchema,
94
91
  },
95
92
  summary: 'Delete inventory item',
96
93
  description: 'Delete an inventory item',
@@ -99,21 +96,21 @@ exports.inventoryRouter = c.router({
99
96
  logPurchase: {
100
97
  method: 'POST',
101
98
  path: '/farms/:farmId/inventory/purchase',
102
- pathParams: zod_1.z.object({ farmId: zod_1.z.string().uuid() }),
103
- body: zod_1.z.object({ data: inventory_schemas_1.logPurchaseSchema }),
99
+ pathParams: z.object({ farmId: z.string().uuid() }),
100
+ body: z.object({ data: logPurchaseSchema }),
104
101
  responses: {
105
- 201: (0, common_schemas_1.jsonApiSingleResponseSchema)(zod_1.z.object({
106
- type: zod_1.z.literal('purchase-results'),
107
- id: zod_1.z.string().uuid(),
108
- attributes: zod_1.z.object({
109
- inventoryItemId: zod_1.z.string().uuid(),
110
- expenseId: zod_1.z.string().uuid().optional(), // Created expense ID
102
+ 201: jsonApiSingleResponseSchema(z.object({
103
+ type: z.literal('purchase-results'),
104
+ id: z.string().uuid(),
105
+ attributes: z.object({
106
+ inventoryItemId: z.string().uuid(),
107
+ expenseId: z.string().uuid().optional(), // Created expense ID
111
108
  }),
112
109
  })),
113
- 400: common_schemas_1.jsonApiErrorResponseSchema,
114
- 404: common_schemas_1.jsonApiErrorResponseSchema,
115
- 401: common_schemas_1.jsonApiErrorResponseSchema,
116
- 422: common_schemas_1.jsonApiErrorResponseSchema,
110
+ 400: jsonApiErrorResponseSchema,
111
+ 404: jsonApiErrorResponseSchema,
112
+ 401: jsonApiErrorResponseSchema,
113
+ 422: jsonApiErrorResponseSchema,
117
114
  },
118
115
  summary: 'Log purchase',
119
116
  description: 'Log a purchase that updates inventory and creates an expense',
@@ -1,26 +1,23 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.seasonalPlansRouter = void 0;
4
- const core_1 = require("@ts-rest/core");
5
- const zod_1 = require("zod");
6
- const seasonal_plans_schemas_1 = require("../schemas/seasonal-plans.schemas");
7
- const common_schemas_1 = require("../schemas/common.schemas");
8
- const c = (0, core_1.initContract)();
9
- exports.seasonalPlansRouter = c.router({
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { seasonalPlanResponseSchema, } from '../schemas/seasonal-plans.schemas';
4
+ import { jsonApiErrorResponseSchema, } from '../schemas/common.schemas';
5
+ const c = initContract();
6
+ export const seasonalPlansRouter = c.router({
10
7
  // Get seasonal plan progress for a farm
11
8
  getSeasonalPlan: {
12
9
  method: 'GET',
13
10
  path: '/farms/:farmId/seasonal-plans',
14
- pathParams: zod_1.z.object({ farmId: zod_1.z.string().uuid() }),
15
- query: zod_1.z.object({
16
- season: zod_1.z.string().optional(), // e.g., "2024-2025"
17
- 'filter[startDate]': zod_1.z.string().datetime().optional(),
18
- 'filter[endDate]': zod_1.z.string().datetime().optional(),
11
+ pathParams: z.object({ farmId: z.string().uuid() }),
12
+ query: z.object({
13
+ season: z.string().optional(), // e.g., "2024-2025"
14
+ 'filter[startDate]': z.string().datetime().optional(),
15
+ 'filter[endDate]': z.string().datetime().optional(),
19
16
  }),
20
17
  responses: {
21
- 200: seasonal_plans_schemas_1.seasonalPlanResponseSchema,
22
- 404: common_schemas_1.jsonApiErrorResponseSchema,
23
- 401: common_schemas_1.jsonApiErrorResponseSchema,
18
+ 200: seasonalPlanResponseSchema,
19
+ 404: jsonApiErrorResponseSchema,
20
+ 401: jsonApiErrorResponseSchema,
24
21
  },
25
22
  summary: 'Get seasonal plan progress',
26
23
  description: 'Get seasonal plan progress with planned vs actual metrics calculated from tasks and field data',