openapi: 3.0.3 info: title: Toro Horizon360 Crews Irrigation API description: Toro Horizon360 is an all-in-one business management software for landscape contractors. The API provides endpoints for managing crews, schedules, jobs, customers, invoices, equipment, and payments for landscaping businesses. version: 1.0.0 contact: name: Toro Company url: https://horizon360.toro.com/ x-logo: url: https://kinlane-images.s3.amazonaws.com/shared/apis-json/apis-json-logo.jpg servers: - url: https://api.horizon360.toro.com/v1 description: Horizon360 Production API security: - bearerAuth: [] tags: - name: Irrigation description: Control and monitor irrigation systems paths: /irrigation/status: get: operationId: getIrrigationStatus summary: Get Irrigation Status description: Returns the current status of all irrigation systems and controllers. tags: - Irrigation responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/IrrigationStatus' '401': $ref: '#/components/responses/Unauthorized' /irrigation/zones: get: operationId: listIrrigationZones summary: List Irrigation Zones description: Returns all defined irrigation zones and their current configuration. tags: - Irrigation parameters: - name: status in: query schema: type: string enum: - active - inactive - watering description: Filter zones by status responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ZoneList' /irrigation/zones/{zoneId}: get: operationId: getIrrigationZone summary: Get Irrigation Zone description: Returns details for a specific irrigation zone. tags: - Irrigation parameters: - name: zoneId in: path required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Zone' '404': $ref: '#/components/responses/NotFound' /irrigation/zones/{zoneId}/start: post: operationId: startIrrigation summary: Start Irrigation description: Manually start irrigation for a specific zone. tags: - Irrigation parameters: - name: zoneId in: path required: true schema: type: string requestBody: content: application/json: schema: type: object properties: duration: type: integer description: Duration in minutes minimum: 1 maximum: 120 responses: '200': description: Irrigation started /irrigation/zones/{zoneId}/stop: post: operationId: stopIrrigation summary: Stop Irrigation description: Stop active irrigation for a specific zone. tags: - Irrigation parameters: - name: zoneId in: path required: true schema: type: string responses: '200': description: Irrigation stopped components: schemas: Zone: type: object properties: id: type: string name: type: string description: type: string status: type: string enum: - active - inactive - watering wateringDurationMinutes: type: integer lastWateredAt: type: string format: date-time nextScheduledAt: type: string format: date-time soilMoisture: type: number description: Soil moisture percentage flowRateGpm: type: number description: Flow rate in gallons per minute ZoneList: type: object properties: data: type: array items: $ref: '#/components/schemas/Zone' total: type: integer Error: type: object properties: code: type: string message: type: string IrrigationStatus: type: object properties: systemStatus: type: string enum: - normal - watering - suspended - fault activeZones: type: integer totalZones: type: integer weatherHold: type: boolean lastUpdated: type: string format: date-time responses: NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Authentication required content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT