2026-03-25 00:51:04 +03:30
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/dashboard-data/generate/",
|
|
|
|
|
"status_code": 202,
|
|
|
|
|
"description": "Dashboard data task queued",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/dashboard-data/generate/post_202.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/dashboard-data/generate/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Missing sensor_id",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/dashboard-data/generate/post_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/dashboard-data/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Pending dashboard task",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/dashboard-data/status/get_200_pending.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/dashboard-data/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Dashboard task in progress",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/dashboard-data/status/get_200_progress.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/dashboard-data/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Successful dashboard task",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/dashboard-data/status/get_200_success.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/dashboard-data/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Failed dashboard task",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/dashboard-data/status/get_200_failure.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/fertilization/recommend/",
|
|
|
|
|
"status_code": 202,
|
|
|
|
|
"description": "Fertilization task queued",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/fertilization/recommend/post_202.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/fertilization/recommend/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/fertilization/recommend/post_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/fertilization/recommend/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Fertilization status pending",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/fertilization/status/get_200_pending.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/fertilization/recommend/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Fertilization status progress",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/fertilization/status/get_200_progress.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/fertilization/recommend/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Fertilization status success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/fertilization/status/get_200_success.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/fertilization/recommend/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Fertilization status failure",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/fertilization/status/get_200_failure.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/irrigation/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "List irrigation methods",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/methods/get_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/irrigation/",
|
|
|
|
|
"status_code": 201,
|
|
|
|
|
"description": "Create irrigation method",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/methods/post_201.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/irrigation/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Irrigation create validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/methods/post_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/irrigation/recommend/",
|
|
|
|
|
"status_code": 202,
|
|
|
|
|
"description": "Irrigation recommendation task queued",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/recommend/post_202.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/irrigation/recommend/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Irrigation recommendation validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/recommend/post_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/irrigation/recommend/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Irrigation recommendation status pending",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/recommend/status/get_200_pending.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/irrigation/recommend/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Irrigation recommendation status progress",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/recommend/status/get_200_progress.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/irrigation/recommend/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Irrigation recommendation status success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/recommend/status/get_200_success.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/irrigation/recommend/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Irrigation recommendation status failure",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/recommend/status/get_200_failure.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/irrigation/{pk}/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Irrigation method get success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/method-detail/get_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/irrigation/{pk}/",
|
|
|
|
|
"status_code": 404,
|
|
|
|
|
"description": "Irrigation method get not found",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/method-detail/get_404.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PUT",
|
|
|
|
|
"path": "/api/irrigation/{pk}/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Irrigation method put success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/method-detail/put_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PUT",
|
|
|
|
|
"path": "/api/irrigation/{pk}/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Irrigation method put validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/method-detail/put_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PUT",
|
|
|
|
|
"path": "/api/irrigation/{pk}/",
|
|
|
|
|
"status_code": 404,
|
|
|
|
|
"description": "Irrigation method put not found",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/method-detail/put_404.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PATCH",
|
|
|
|
|
"path": "/api/irrigation/{pk}/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Irrigation method patch success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/method-detail/patch_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PATCH",
|
|
|
|
|
"path": "/api/irrigation/{pk}/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Irrigation method patch validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/method-detail/patch_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PATCH",
|
|
|
|
|
"path": "/api/irrigation/{pk}/",
|
|
|
|
|
"status_code": 404,
|
|
|
|
|
"description": "Irrigation method patch not found",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/method-detail/patch_404.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "DELETE",
|
|
|
|
|
"path": "/api/irrigation/{pk}/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Delete irrigation method",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/method-detail/delete_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "DELETE",
|
|
|
|
|
"path": "/api/irrigation/{pk}/",
|
|
|
|
|
"status_code": 404,
|
|
|
|
|
"description": "Delete irrigation method not found",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/irrigation/method-detail/delete_404.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/soil-data/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Soil data served from database",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/soil-data/get_200_database.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/soil-data/",
|
|
|
|
|
"status_code": 202,
|
|
|
|
|
"description": "Soil data fetch task queued",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/soil-data/get_202_queued.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/soil-data/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Soil data validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/soil-data/get_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/soil-data/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Soil data POST served from database",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/soil-data/post_200_database.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/soil-data/",
|
|
|
|
|
"status_code": 202,
|
|
|
|
|
"description": "Soil data POST task queued",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/soil-data/post_202_queued.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/soil-data/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Soil data POST validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/soil-data/post_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/soil-data/tasks/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Soil task status pending",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/soil-data/status/get_200_pending.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/soil-data/tasks/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Soil task status progress",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/soil-data/status/get_200_progress.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/soil-data/tasks/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Soil task status success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/soil-data/status/get_200_success.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/soil-data/tasks/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Soil task status failure",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/soil-data/status/get_200_failure.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/plants/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "List plants",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/list-get_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/plants/",
|
|
|
|
|
"status_code": 201,
|
|
|
|
|
"description": "Create plant",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/create-post_201.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/plants/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Plant create validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/create-post_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/plants/{pk}/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Plant detail get success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/detail-get_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/plants/{pk}/",
|
|
|
|
|
"status_code": 404,
|
|
|
|
|
"description": "Plant detail get not found",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/detail-get_404.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PUT",
|
|
|
|
|
"path": "/api/plants/{pk}/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Plant detail put success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/detail-put_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PUT",
|
|
|
|
|
"path": "/api/plants/{pk}/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Plant detail put validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/detail-put_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PUT",
|
|
|
|
|
"path": "/api/plants/{pk}/",
|
|
|
|
|
"status_code": 404,
|
|
|
|
|
"description": "Plant detail put not found",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/detail-put_404.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PATCH",
|
|
|
|
|
"path": "/api/plants/{pk}/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Plant detail patch success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/detail-patch_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PATCH",
|
|
|
|
|
"path": "/api/plants/{pk}/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Plant detail patch validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/detail-patch_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PATCH",
|
|
|
|
|
"path": "/api/plants/{pk}/",
|
|
|
|
|
"status_code": 404,
|
|
|
|
|
"description": "Plant detail patch not found",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/detail-patch_404.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "DELETE",
|
|
|
|
|
"path": "/api/plants/{pk}/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Delete plant success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/detail-delete_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "DELETE",
|
|
|
|
|
"path": "/api/plants/{pk}/",
|
|
|
|
|
"status_code": 404,
|
|
|
|
|
"description": "Delete plant not found",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/detail-delete_404.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/plants/fetch-info/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Fetch plant info success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/fetch-info-post_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/plants/fetch-info/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Fetch plant info missing name",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/fetch-info-post_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/plants/fetch-info/",
|
|
|
|
|
"status_code": 503,
|
|
|
|
|
"description": "Fetch plant info service unavailable",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/plant/fetch-info-post_503.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/rag/chat/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "RAG chat streaming response",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/chat-post_200_stream.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/rag/chat/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Missing query",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/chat-post_400_missing_query.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/rag/chat/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Invalid service id",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/chat-post_400_invalid_service.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/rag/chat/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Missing user_id for service",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/chat-post_400_missing_user.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/rag/recommend/irrigation/",
|
|
|
|
|
"status_code": 202,
|
|
|
|
|
"description": "RAG irrigation task queued",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/irrigation/post_202.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/rag/recommend/irrigation/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "RAG irrigation validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/irrigation/post_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/rag/recommend/irrigation/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "RAG irrigation status pending",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/irrigation/status/get_200_pending.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/rag/recommend/irrigation/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "RAG irrigation status progress",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/irrigation/status/get_200_progress.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/rag/recommend/irrigation/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "RAG irrigation status success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/irrigation/status/get_200_success.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/rag/recommend/irrigation/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "RAG irrigation status failure",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/irrigation/status/get_200_failure.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/rag/recommend/fertilization/",
|
|
|
|
|
"status_code": 202,
|
|
|
|
|
"description": "RAG fertilization task queued",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/fertilization/post_202.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/rag/recommend/fertilization/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "RAG fertilization validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/fertilization/post_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/rag/recommend/fertilization/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "RAG fertilization status pending",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/fertilization/status/get_200_pending.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/rag/recommend/fertilization/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "RAG fertilization status progress",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/fertilization/status/get_200_progress.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/rag/recommend/fertilization/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "RAG fertilization status success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/fertilization/status/get_200_success.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/rag/recommend/fertilization/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "RAG fertilization status failure",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/rag/fertilization/status/get_200_failure.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PUT",
|
2026-04-02 23:25:39 +03:30
|
|
|
"path": "/api/sensor-data/{farm_uuid}/",
|
2026-03-25 00:51:04 +03:30
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Sensor update put success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/sensor-data/update-put_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PUT",
|
2026-04-02 23:25:39 +03:30
|
|
|
"path": "/api/sensor-data/{farm_uuid}/",
|
2026-03-25 00:51:04 +03:30
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Sensor update put validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/sensor-data/update-put_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PUT",
|
2026-04-02 23:25:39 +03:30
|
|
|
"path": "/api/sensor-data/{farm_uuid}/",
|
2026-03-25 00:51:04 +03:30
|
|
|
"status_code": 404,
|
|
|
|
|
"description": "Sensor update put location not found",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/sensor-data/update-put_404.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PATCH",
|
2026-04-02 23:25:39 +03:30
|
|
|
"path": "/api/sensor-data/{farm_uuid}/",
|
2026-03-25 00:51:04 +03:30
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Sensor update patch success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/sensor-data/update-patch_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PATCH",
|
2026-04-02 23:25:39 +03:30
|
|
|
"path": "/api/sensor-data/{farm_uuid}/",
|
2026-03-25 00:51:04 +03:30
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Sensor update patch validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/sensor-data/update-patch_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "PATCH",
|
2026-04-02 23:25:39 +03:30
|
|
|
"path": "/api/sensor-data/{farm_uuid}/",
|
2026-03-25 00:51:04 +03:30
|
|
|
"status_code": 404,
|
|
|
|
|
"description": "Sensor update patch location not found",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/sensor-data/update-patch_404.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/sensor-data/parameters/",
|
|
|
|
|
"status_code": 201,
|
|
|
|
|
"description": "Create sensor parameter",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/sensor-data/parameters-post_201.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/sensor-data/parameters/",
|
|
|
|
|
"status_code": 400,
|
|
|
|
|
"description": "Sensor parameter validation error",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/sensor-data/parameters-post_400.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "POST",
|
|
|
|
|
"path": "/api/tasks/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Task trigger success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/tasks/post_200.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/tasks/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Task status pending",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/tasks/status/get_200_pending.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/tasks/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Task status progress",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/tasks/status/get_200_progress.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/tasks/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Task status success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/tasks/status/get_200_success.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/tasks/{task_id}/status/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Task status failure",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/mock_data/tasks/status/get_200_failure.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-04-10 16:12:51 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/pest-detection/risk-summary/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Pest and disease risk summary success",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/ai/pest-detection/risk-summary/get_200_success.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-04-10 16:12:51 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/weather-forecast/card/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Farm weather card data",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/ai/weather-forecast/card/get_200_success.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Spec example for a route family that exists in code, but this file remains mock/contract documentation only."
|
2026-04-10 16:12:51 +03:30
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"path": "/api/yield-harvest/summary/",
|
|
|
|
|
"status_code": 200,
|
|
|
|
|
"description": "Yield prediction card, chart and harvest prediction card",
|
2026-05-05 21:01:58 +03:30
|
|
|
"file": "json/ai/yield-harvest/summary/get_200_success.json",
|
|
|
|
|
"contract_status": "contract_only",
|
|
|
|
|
"integration_status": "mock_spec",
|
|
|
|
|
"notes": "Mock/spec example only; verify actual route registration before treating as implemented."
|
2026-03-25 00:51:04 +03:30
|
|
|
}
|
2026-05-05 21:01:58 +03:30
|
|
|
]
|