Water & Weather API Reference for Frontend
این فایل برای فرانت آماده شده تا ساختار پاسخ APIهای زیر مشخص باشد:
GET /api/water/card/
GET /api/water/need-prediction/
GET /api/water/summary/
POST /api/weather/farm-card/
Base Notes
GET /api/water/card/ و GET /api/water/summary/ بدون farm_uuid هم جواب میدهند.
GET /api/water/need-prediction/ هم بدون farm_uuid جواب میدهد، ولی اگر farm_uuid وجود داشته باشد ممکن است داده مزرعهمحور برگردد.
POST /api/weather/farm-card/ نیاز به farm_uuid در body دارد.
- response shapeها بین این endpointها یکدست نیستند:
- بعضی endpointها با
status/data
- بعضی endpointها با
code/msg/data
1) Water Card
Endpoint
Query Params
| field |
type |
required |
description |
farm_uuid |
string (uuid) |
no |
UUID مزرعه |
Success Response
Response Fields
| field |
type |
description |
status |
string |
در حالت موفق مقدار success |
data.condition |
string |
وضعیت فعلی آبوهوا |
data.temperature |
number |
دمای فعلی |
data.unit |
string |
واحد دما |
data.humidity |
number |
رطوبت نسبی |
data.windSpeed |
number |
سرعت باد |
data.windUnit |
string |
واحد سرعت باد |
data.chartData.labels |
string[] |
برچسبهای زمانی |
data.chartData.series |
number[][] |
سریهای نمودار |
Frontend Notes
- این endpoint برای weather widget یا weather card مناسب است.
chartData.series به شکل آرایه دوبعدی است.
- اگر
farm_uuid ارسال شود، backend داده را از AI گرفته و log هم میکند.
2) Water Need Prediction
Endpoint
Query Params
| field |
type |
required |
description |
farm_uuid |
string (uuid) |
no |
UUID مزرعه |
Success Response
Response Fields
| field |
type |
description |
status |
string |
در حالت موفق مقدار success |
data.farm_uuid |
string |
UUID مزرعه در حالت farm-based |
data.totalNext7Days |
number |
مجموع نیاز آبی 7 روز آینده |
data.unit |
string |
واحد نیاز آبی، مثل mm یا m3 |
data.categories |
string[] |
روزها یا تاریخها |
data.series |
Array<{name: string, data: number[]}> |
دادههای نمودار |
data.dailyBreakdown |
object[] |
breakdown روزانه در صورت وجود |
data.insight |
object |
insight یا خلاصه تحلیلی |
data.knowledge_base |
string |
منبع دانشی در صورت وجود |
data.raw_response |
string |
پاسخ خام upstream در صورت وجود |
Frontend Notes
- اگر
farm_uuid معتبر باشد، backend داده را از AI میگیرد.
- اگر
farm_uuid ارسال نشود، backend از داده داخلی/mock استفاده میکند.
- اگر
farm_uuid ارسال شود ولی مزرعه پیدا نشود، فعلاً به fallback داخلی برمیگردد و خطا نمیدهد.
3) Water Summary
Endpoint
Query Params
| field |
type |
required |
description |
farm_uuid |
string (uuid) |
no |
UUID مزرعه |
Success Response
Response Fields
| field |
type |
description |
status |
string |
در حالت موفق مقدار success |
data.farmWeatherCard |
object |
اطلاعات کارت وضعیت آبوهوا |
data.waterNeedPrediction |
object |
پیشبینی نیاز آبی |
data.waterStressIndex |
object |
کارت شاخص تنش آبی |
waterStressIndex Fields
| field |
type |
description |
id |
string |
شناسه کارت |
title |
string |
عنوان کارت |
subtitle |
string |
زیرعنوان |
stats |
string |
مقدار اصلی برای نمایش |
avatarColor |
string |
رنگ کارت/آیکن |
avatarIcon |
string |
نام آیکن |
chipText |
string |
وضعیت متنی |
chipColor |
string |
رنگ وضعیت |
Frontend Notes
- این endpoint برای dashboard overview مناسب است.
- سه بخش اصلی summary را میتوانید مستقیم به سه widget مختلف map کنید.
waterSummary یک response ترکیبی است و برای یک صفحه dashboard خیلی کاربردی است.
4) Weather Farm Card
Endpoint
Request Body
Request Fields
| field |
type |
required |
description |
farm_uuid |
string (uuid) |
yes |
UUID مزرعه |
Success Response
Response Fields
| field |
type |
description |
code |
number |
در حالت موفق مقدار 200 |
msg |
string |
در حالت موفق مقدار success |
data.condition |
string |
وضعیت فعلی آبوهوا |
data.temperature |
number |
دمای فعلی |
data.unit |
string |
واحد دما |
data.humidity |
number |
رطوبت نسبی |
data.windSpeed |
number |
سرعت باد |
data.windUnit |
string |
واحد سرعت باد |
data.chartData.labels |
string[] |
برچسبهای زمانی |
data.chartData.series |
number[][] |
دادههای نمودار |
Error Response - Missing farm_uuid
Error Response - Farm Not Found
Error Response - Upstream Error
Frontend Notes
- این endpoint نسخه authenticated و farm-specific برای weather card است.
- اگر farm متعلق به کاربر فعلی نباشد،
404 برمیگردد.
- response این endpoint با
code/msg/data است، نه status/data.
Suggested TypeScript Interfaces
Suggested Frontend Handling
- برای
GET /api/water/card/, GET /api/water/need-prediction/, GET /api/water/summary/ انتظار status/data داشته باشید.
- برای
POST /api/weather/farm-card/ انتظار code/msg/data داشته باشید.
- برای
POST /api/weather/farm-card/ خطاها را از data.farm_uuid[0] بخوانید.
- برای chartها بهتر است
labels و series را optional render کنید.