{"openapi":"3.1.0","info":{"title":"MooFind DAPI Gateway","summary":"Unified API gateway for the Spot mobile app and MooFind services","description":"DAPI is the public gateway used by the **Spot** mobile app. It validates a Keycloak access token and forwards each request to the responsible MooFind microservice.\n\n### Authentication\n1. Call `POST /auth` with email and password.\n2. Copy the returned access token.\n3. Click **Authorize** and enter the token as `X-DAPI-TOKEN`.\n\nPublic routes are explicitly marked. All other routes require the API-key header shown above.\n\n### Error handling\n- `401`: token is missing, invalid or expired.\n- `422`: path, query or request-body validation failed.\n- `502`: the target microservice could not be reached.\n- Other downstream status codes are forwarded where possible.","contact":{"name":"MooFind UG","url":"https://moofind.com/"},"version":"0.7.0"},"paths":{"/auth":{"post":{"tags":["Authentication"],"summary":"Authenticate","operationId":"authenticate_auth_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/register":{"post":{"tags":["Authentication"],"summary":"Register","operationId":"register_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/refresh":{"post":{"tags":["Authentication"],"summary":"Refresh","operationId":"refresh_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/introspect":{"post":{"tags":["Authentication"],"summary":"Introspect","operationId":"introspect_introspect_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntrospectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/delete-account":{"post":{"tags":["Authentication"],"summary":"Delete Account","operationId":"delete_account_delete_account_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"DAPI access token":[]}]}},"/demo/ndvi":{"get":{"tags":["EO Demo"],"summary":"NDVI demo overlay","operationId":"demo_ndvi_demo_ndvi_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/demo/tci":{"get":{"tags":["EO Demo"],"summary":"TCI (true color) demo overlay","operationId":"demo_tci_demo_tci_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/demo/legend":{"get":{"tags":["EO Demo"],"summary":"NDVI color legend","operationId":"demo_legend_demo_legend_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/reset-password":{"post":{"tags":["Authentication"],"summary":"Reset Password","operationId":"reset_password_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"DAPI access token":[]}]}},"/eo/ndvi":{"get":{"tags":["Earth Observation"],"summary":"Get Ndvi Overlay","operationId":"get_ndvi_overlay_eo_ndvi_get","responses":{"200":{"description":"Successful Response"}},"security":[{"DAPI access token":[]}]}},"/eo/tci":{"get":{"tags":["Earth Observation"],"summary":"Get Tci Overlay","operationId":"get_tci_overlay_eo_tci_get","responses":{"200":{"description":"Successful Response"}},"security":[{"DAPI access token":[]}]}},"/eo/legend":{"get":{"tags":["Earth Observation"],"summary":"Get Legend","operationId":"get_legend_eo_legend_get","responses":{"200":{"description":"Successful Response"}},"security":[{"DAPI access token":[]}]}},"/eo/fields/{field_id}/rating":{"get":{"tags":["Earth Observation"],"summary":"Get Eo Field Rating","operationId":"get_eo_field_rating_eo_fields__field_id__rating_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/eo/fields/ratings":{"get":{"tags":["Earth Observation"],"summary":"List Eo Field Ratings","operationId":"list_eo_field_ratings_eo_fields_ratings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"DAPI access token":[]}]}},"/eo/fields/ratings/mock":{"post":{"tags":["Earth Observation"],"summary":"Create Mock Eo Field Rating","operationId":"create_mock_eo_field_rating_eo_fields_ratings_mock_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EOFieldRatingRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"DAPI access token":[]}]}},"/location/{thing_key}":{"get":{"tags":["Telemetry"],"summary":"Get Location","operationId":"get_location_location__thing_key__get","security":[{"DAPI access token":[]}],"parameters":[{"name":"thing_key","in":"path","required":true,"schema":{"type":"string","title":"Thing Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/devices":{"get":{"tags":["Telemetry"],"summary":"Get Devices","operationId":"get_devices_devices_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/location/ingest":{"post":{"tags":["Telemetry"],"summary":"Ingest Location","operationId":"ingest_location_location_ingest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationIngestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"DAPI access token":[]}]}},"/location/history/{thing_key}":{"get":{"tags":["Telemetry"],"summary":"Get Location History","operationId":"get_location_history_location_history__thing_key__get","security":[{"DAPI access token":[]}],"parameters":[{"name":"thing_key","in":"path","required":true,"schema":{"type":"string","title":"Thing Key"}},{"name":"range","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"24h","title":"Range"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fences":{"get":{"tags":["Geofencing"],"summary":"List Fences","operationId":"list_fences_fences_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"DAPI access token":[]}]}},"/add_fences":{"post":{"tags":["Geofencing"],"summary":"Create Fence","operationId":"create_fence_add_fences_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FenceCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"DAPI access token":[]}]}},"/delete_fences/{fence_id}":{"delete":{"tags":["Geofencing"],"summary":"Delete Fence","operationId":"delete_fence_delete_fences__fence_id__delete","security":[{"DAPI access token":[]}],"parameters":[{"name":"fence_id","in":"path","required":true,"schema":{"type":"string","title":"Fence Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/animals":{"post":{"tags":["Animals"],"summary":"Create an animal","operationId":"create_animal_animals_post","security":[{"DAPI access token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnimalCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Animals"],"summary":"List animals","operationId":"list_animals_animals_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"herd_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Herd Id"}},{"name":"has_collar","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Collar"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/animals/{animal_id}/details":{"get":{"tags":["Animals"],"summary":"Get complete animal details","description":"Returns animal master data together with calculated age, current herd, current paddock occupation, collar/device summary and active tasks.","operationId":"get_animal_details_animals__animal_id__details_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"animal_id","in":"path","required":true,"schema":{"type":"string","title":"Animal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/animals/{animal_id}":{"get":{"tags":["Animals"],"summary":"Get Animal","operationId":"get_animal_animals__animal_id__get","security":[{"DAPI access token":[]}],"parameters":[{"name":"animal_id","in":"path","required":true,"schema":{"type":"string","title":"Animal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Animals"],"summary":"Update an animal","operationId":"update_animal_animals__animal_id__patch","security":[{"DAPI access token":[]}],"parameters":[{"name":"animal_id","in":"path","required":true,"schema":{"type":"string","title":"Animal Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnimalUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Animals"],"summary":"Delete Animal","operationId":"delete_animal_animals__animal_id__delete","security":[{"DAPI access token":[]}],"parameters":[{"name":"animal_id","in":"path","required":true,"schema":{"type":"string","title":"Animal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/animals/{animal_id}/move-to-herd":{"post":{"tags":["Animals"],"summary":"Move Animal To Herd","operationId":"move_animal_to_herd_animals__animal_id__move_to_herd_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"animal_id","in":"path","required":true,"schema":{"type":"string","title":"Animal Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveToHerdRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/animals/{animal_id}/move-field":{"post":{"tags":["Animals"],"summary":"Move an animal to a field","description":"Compatibility endpoint. The movement is recorded by moo-paddock as an active paddock occupation.","operationId":"move_animal_to_field_compatibility_animals__animal_id__move_field_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"animal_id","in":"path","required":true,"schema":{"type":"string","title":"Animal Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveFieldRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/herds":{"post":{"tags":["Herds"],"summary":"Create Herd","operationId":"create_herd_herds_post","security":[{"DAPI access token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HerdCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Herds"],"summary":"List Herds","operationId":"list_herds_herds_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Include"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/herds/{herd_id}":{"get":{"tags":["Herds"],"summary":"Get Herd","operationId":"get_herd_herds__herd_id__get","security":[{"DAPI access token":[]}],"parameters":[{"name":"herd_id","in":"path","required":true,"schema":{"type":"string","title":"Herd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Herds"],"summary":"Update Herd","operationId":"update_herd_herds__herd_id__patch","security":[{"DAPI access token":[]}],"parameters":[{"name":"herd_id","in":"path","required":true,"schema":{"type":"string","title":"Herd Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HerdUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Herds"],"summary":"Delete Herd","operationId":"delete_herd_herds__herd_id__delete","security":[{"DAPI access token":[]}],"parameters":[{"name":"herd_id","in":"path","required":true,"schema":{"type":"string","title":"Herd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/herds/{herd_id}/animals":{"get":{"tags":["Herds"],"summary":"List Herd Animals","operationId":"list_herd_animals_herds__herd_id__animals_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"herd_id","in":"path","required":true,"schema":{"type":"string","title":"Herd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/herds/{herd_id}/animals/{animal_id}":{"post":{"tags":["Herds"],"summary":"Add Animal To Herd","operationId":"add_animal_to_herd_herds__herd_id__animals__animal_id__post","security":[{"DAPI access token":[]}],"parameters":[{"name":"herd_id","in":"path","required":true,"schema":{"type":"string","title":"Herd Id"}},{"name":"animal_id","in":"path","required":true,"schema":{"type":"string","title":"Animal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Herds"],"summary":"Remove Animal From Herd","operationId":"remove_animal_from_herd_herds__herd_id__animals__animal_id__delete","security":[{"DAPI access token":[]}],"parameters":[{"name":"herd_id","in":"path","required":true,"schema":{"type":"string","title":"Herd Id"}},{"name":"animal_id","in":"path","required":true,"schema":{"type":"string","title":"Animal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/herds/{herd_id}/move-field":{"post":{"tags":["Herds"],"summary":"Move a herd to a field","description":"Compatibility endpoint. The movement is recorded by moo-paddock as an active paddock occupation.","operationId":"move_herd_to_field_compatibility_herds__herd_id__move_field_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"herd_id","in":"path","required":true,"schema":{"type":"string","title":"Herd Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveFieldRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assignments":{"post":{"tags":["Assignments"],"summary":"Create Assignment","operationId":"create_assignment_assignments_post","security":[{"DAPI access token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignmentCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Assignments"],"summary":"List Assignments","operationId":"list_assignments_assignments_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"fieldId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fieldid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assignments/{assignment_id}/end":{"post":{"tags":["Assignments"],"summary":"End Assignment","operationId":"end_assignment_assignments__assignment_id__end_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"assignment_id","in":"path","required":true,"schema":{"type":"string","title":"Assignment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/map/animals":{"get":{"tags":["Animals"],"summary":"Map Animals","operationId":"map_animals_map_animals_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"DAPI access token":[]}]}},"/animals/{animal_id}/assign-collar":{"post":{"tags":["Animals"],"summary":"Assign Animal Collar","operationId":"assign_animal_collar_animals__animal_id__assign_collar_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"animal_id","in":"path","required":true,"schema":{"type":"string","title":"Animal Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignCollarRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/animals/{animal_id}/remove-collar":{"post":{"tags":["Animals"],"summary":"Remove Animal Collar","operationId":"remove_animal_collar_animals__animal_id__remove_collar_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"animal_id","in":"path","required":true,"schema":{"type":"string","title":"Animal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/paddock/health":{"get":{"tags":["Paddock Plans"],"summary":"Paddock Health","operationId":"paddock_health_paddock_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"DAPI access token":[]}]}},"/paddock-plans":{"get":{"tags":["Paddock Plans"],"summary":"List Paddock Plans","operationId":"list_paddock_plans_paddock_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"DAPI access token":[]}]},"post":{"tags":["Paddock Plans"],"summary":"Create Paddock Plan","operationId":"create_paddock_plan_paddock_plans_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaddockPlanRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"DAPI access token":[]}]}},"/paddock-plans/{plan_id}":{"get":{"tags":["Paddock Plans"],"summary":"Get Paddock Plan","operationId":"get_paddock_plan_paddock_plans__plan_id__get","security":[{"DAPI access token":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Paddock Plans"],"summary":"Update Paddock Plan","operationId":"update_paddock_plan_paddock_plans__plan_id__patch","security":[{"DAPI access token":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaddockPlanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Paddock Plans"],"summary":"Delete Paddock Plan","operationId":"delete_paddock_plan_paddock_plans__plan_id__delete","security":[{"DAPI access token":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/occupations":{"post":{"tags":["Occupations"],"summary":"Create Occupation","operationId":"create_occupation_occupations_post","security":[{"DAPI access token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OccupationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Occupations"],"summary":"List Occupations","operationId":"list_occupations_occupations_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"fieldId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fieldid"}},{"name":"active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/occupations/current":{"get":{"tags":["Occupations"],"summary":"Get the current occupation for an animal or herd","operationId":"get_current_occupation_occupations_current_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"animal_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Animal UUID.","title":"Animal Id"},"description":"Animal UUID."},{"name":"herd_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Herd UUID.","title":"Herd Id"},"description":"Herd UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/occupations/{occupation_id}":{"get":{"tags":["Occupations"],"summary":"Get Occupation","operationId":"get_occupation_occupations__occupation_id__get","security":[{"DAPI access token":[]}],"parameters":[{"name":"occupation_id","in":"path","required":true,"schema":{"type":"string","title":"Occupation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Occupations"],"summary":"Update Occupation","operationId":"update_occupation_occupations__occupation_id__patch","security":[{"DAPI access token":[]}],"parameters":[{"name":"occupation_id","in":"path","required":true,"schema":{"type":"string","title":"Occupation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OccupationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/occupations/{occupation_id}/start":{"post":{"tags":["Occupations"],"summary":"Start Occupation","operationId":"start_occupation_occupations__occupation_id__start_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"occupation_id","in":"path","required":true,"schema":{"type":"string","title":"Occupation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/occupations/{occupation_id}/end":{"post":{"tags":["Occupations"],"summary":"End Occupation","operationId":"end_occupation_occupations__occupation_id__end_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"occupation_id","in":"path","required":true,"schema":{"type":"string","title":"Occupation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fields/{field_id}/assign-herd":{"post":{"tags":["Field Operations"],"summary":"Assign Herd To Field","operationId":"assign_herd_to_field_fields__field_id__assign_herd_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignTargetRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fields/{field_id}/assign-animal":{"post":{"tags":["Field Operations"],"summary":"Assign Animal To Field","operationId":"assign_animal_to_field_fields__field_id__assign_animal_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignTargetRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fields/{field_id}/occupants":{"get":{"tags":["Field Operations"],"summary":"Get Field Occupants","operationId":"get_field_occupants_fields__field_id__occupants_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fields/{field_id}/notebook":{"get":{"tags":["Field Operations"],"summary":"Get Field Notebook","operationId":"get_field_notebook_fields__field_id__notebook_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fields/{field_id}/history":{"get":{"tags":["Field Operations"],"summary":"Get Field History","operationId":"get_field_history_fields__field_id__history_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fields/{field_id}/move-herd":{"post":{"tags":["Field Operations"],"summary":"Move Herd To Field","operationId":"move_herd_to_field_fields__field_id__move_herd_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveHerdRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/recommendations":{"post":{"tags":["Recommendations"],"summary":"Create Recommendation","operationId":"create_recommendation_recommendations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"DAPI access token":[]}]}},"/fields/{field_id}/recommendation":{"get":{"tags":["Recommendations"],"summary":"Get Field Recommendation","operationId":"get_field_recommendation_fields__field_id__recommendation_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fields/recommendations":{"get":{"tags":["Recommendations"],"summary":"List Field Recommendations","operationId":"list_field_recommendations_fields_recommendations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"DAPI access token":[]}]}},"/fields/{field_id}/eo-rating":{"get":{"tags":["Recommendations"],"summary":"Get Field Eo Rating","operationId":"get_field_eo_rating_fields__field_id__eo_rating_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/avoidance-areas":{"post":{"tags":["Recommendations"],"summary":"Create Avoidance Area","operationId":"create_avoidance_area_avoidance_areas_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvoidanceAreaRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"DAPI access token":[]}]}},"/fields/{field_id}/avoidance-areas":{"get":{"tags":["Recommendations"],"summary":"List Avoidance Areas","operationId":"list_avoidance_areas_fields__field_id__avoidance_areas_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fields/overview":{"get":{"tags":["Recommendations"],"summary":"Fields Overview","operationId":"fields_overview_fields_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"DAPI access token":[]}]}},"/rotation/suggestions":{"get":{"tags":["Recommendations"],"summary":"Rotation Suggestions","operationId":"rotation_suggestions_rotation_suggestions_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"herd_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Herd Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks":{"post":{"tags":["Tasks"],"summary":"Create Task","operationId":"create_task_tasks_post","security":[{"DAPI access token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Tasks"],"summary":"List tasks","operationId":"list_tasks_tasks_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"activeOnly","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Activeonly"}},{"name":"field_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Id"}},{"name":"herd_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Herd Id"}},{"name":"animal_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Animal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}":{"get":{"tags":["Tasks"],"summary":"Get Task","operationId":"get_task_tasks__task_id__get","security":[{"DAPI access token":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Tasks"],"summary":"Update Task","operationId":"update_task_tasks__task_id__patch","security":[{"DAPI access token":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Tasks"],"summary":"Delete Task","operationId":"delete_task_tasks__task_id__delete","security":[{"DAPI access token":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tasks/{task_id}/complete":{"post":{"tags":["Tasks"],"summary":"Complete Task","operationId":"complete_task_tasks__task_id__complete_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fields/eo-ratings":{"get":{"tags":["Recommendations"],"summary":"Get All Field Eo Ratings","operationId":"get_all_field_eo_ratings_fields_eo_ratings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"DAPI access token":[]}]}},"/fields/{field_id}/seasonal-condition":{"get":{"tags":["Recommendations"],"summary":"Get Field Seasonal Condition","operationId":"get_field_seasonal_condition_fields__field_id__seasonal_condition_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/calendar/occupations":{"get":{"tags":["Occupations"],"summary":"Calendar Occupations","operationId":"calendar_occupations_calendar_occupations_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Id"}},{"name":"herd_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Herd Id"}},{"name":"animal_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Animal Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fields/{field_id}/move-animal":{"post":{"tags":["Field Operations"],"summary":"Move Animal To Field Paddock","operationId":"move_animal_to_field_paddock_fields__field_id__move_animal_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","title":"Field Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveAnimalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/alerts/health":{"get":{"tags":["Alerts"],"summary":"Alerts Health","description":"Check moo-alerts health through DAPI.\n\nApp/API clients still need X-DAPI-TOKEN.\nDAPI -> moo-alerts /health does not need token because /health is public.","operationId":"alerts_health_alerts_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"DAPI access token":[]}]}},"/alerts":{"get":{"tags":["Alerts"],"summary":"List Alerts","operationId":"list_alerts_alerts_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"alert_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/alerts/active":{"get":{"tags":["Alerts"],"summary":"List Active Alerts","operationId":"list_active_alerts_alerts_active_get","security":[{"DAPI access token":[]}],"parameters":[{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}},{"name":"evaluate","in":"query","required":false,"schema":{"type":"boolean","description":"If true, ask moo-alerts to evaluate current collar/fence state before returning active alerts.","default":true,"title":"Evaluate"},"description":"If true, ask moo-alerts to evaluate current collar/fence state before returning active alerts."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/alerts/evaluate":{"post":{"tags":["Alerts"],"summary":"Evaluate Alerts","operationId":"evaluate_alerts_alerts_evaluate_post","security":[{"DAPI access token":[]}],"parameters":[{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AlertEvaluateRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/alerts/{alert_id}":{"get":{"tags":["Alerts"],"summary":"Get Alert","operationId":"get_alert_alerts__alert_id__get","security":[{"DAPI access token":[]}],"parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","title":"Alert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/alerts/{alert_id}/acknowledge":{"patch":{"tags":["Alerts"],"summary":"Acknowledge Alert","operationId":"acknowledge_alert_alerts__alert_id__acknowledge_patch","security":[{"DAPI access token":[]}],"parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","title":"Alert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/alerts/{alert_id}/resolve":{"patch":{"tags":["Alerts"],"summary":"Resolve Alert","operationId":"resolve_alert_alerts__alert_id__resolve_patch","security":[{"DAPI access token":[]}],"parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","title":"Alert Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AlertEvaluateRequest":{"properties":{"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}},"additionalProperties":true,"type":"object","title":"AlertEvaluateRequest"},"AnimalCreateRequest":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","examples":["Daisy"]},"ear_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ear Tag","examples":["DE-001234567890"]},"birth_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Date","description":"Animal date of birth in YYYY-MM-DD format.","examples":["2023-01-21"]},"date_on_farm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date On Farm","description":"Date the animal arrived at or was born on the farm, in YYYY-MM-DD format.","examples":["2023-01-21"]},"species":{"type":"string","title":"Species","examples":["cow"]},"animal_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Animal Type","examples":["dairy_cow"]},"breed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Breed","examples":["Jersey"]},"sex":{"anyOf":[{"type":"string","enum":["female","male","unknown"]},{"type":"null"}],"title":"Sex","default":"unknown","examples":["female"]},"collar_imei":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Collar Imei","examples":["353141288950079"]},"herd_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Herd Id","description":"Current herd UUID."},"notes_general":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes General","examples":["Young dairy cow"]},"birth_weight":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Birth Weight","examples":[32.5]},"current_weight":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Current Weight","examples":[420.0]},"weight_unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Weight Unit","default":"kg","examples":["kg"]},"feeding_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feeding Notes"},"milking":{"type":"boolean","title":"Milking","default":false},"pregnant":{"type":"boolean","title":"Pregnant","default":false},"insemination_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Insemination Date","description":"YYYY-MM-DD."},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due Date","description":"Expected calving date in YYYY-MM-DD format."},"breeding_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Breeding Status","examples":["pregnant"]},"genetics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Genetics"},"lineage":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Lineage"},"purchase_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purchase Date","description":"YYYY-MM-DD."},"sale_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sale Date","description":"YYYY-MM-DD."},"status":{"type":"string","enum":["active","sold","deceased","transferred","archived"],"title":"Status","default":"active"},"health_records":{"additionalProperties":true,"type":"object","title":"Health Records"},"production_records":{"additionalProperties":true,"type":"object","title":"Production Records"},"reproduction_records":{"additionalProperties":true,"type":"object","title":"Reproduction Records"}},"additionalProperties":true,"type":"object","required":["name","species"],"title":"AnimalCreateRequest"},"AnimalUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"ear_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ear Tag"},"birth_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birth Date","description":"YYYY-MM-DD."},"date_on_farm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date On Farm","description":"YYYY-MM-DD."},"species":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Species"},"animal_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Animal Type"},"breed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Breed"},"sex":{"anyOf":[{"type":"string","enum":["female","male","unknown"]},{"type":"null"}],"title":"Sex"},"collar_imei":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Collar Imei"},"herd_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Herd Id"},"notes_general":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes General"},"birth_weight":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Birth Weight"},"current_weight":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Current Weight"},"weight_unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Weight Unit"},"feeding_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feeding Notes"},"milking":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Milking"},"pregnant":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pregnant"},"insemination_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Insemination Date"},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due Date"},"breeding_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Breeding Status"},"genetics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Genetics"},"lineage":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Lineage"},"purchase_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purchase Date"},"sale_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sale Date"},"status":{"anyOf":[{"type":"string","enum":["active","sold","deceased","transferred","archived"]},{"type":"null"}],"title":"Status"},"health_records":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Health Records"},"production_records":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Production Records"},"reproduction_records":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Reproduction Records"}},"additionalProperties":true,"type":"object","title":"AnimalUpdateRequest"},"AssignCollarRequest":{"properties":{"collar_imei":{"type":"string","title":"Collar Imei"}},"additionalProperties":true,"type":"object","required":["collar_imei"],"title":"AssignCollarRequest"},"AssignTargetRequest":{"properties":{"herd_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Herd Id"},"animal_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Animal Id"},"planned_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Planned Start"},"planned_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Planned End"},"grazing_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grazing Days"},"resting_days_before":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resting Days Before"},"resting_days_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resting Days After"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"additionalProperties":true,"type":"object","title":"AssignTargetRequest"},"AssignmentCreateRequest":{"properties":{"field_id":{"type":"string","title":"Field Id"},"herd_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Herd Id"},"animal_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Animal Id"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At","description":"ISO-8601 date-time."},"ended_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ended At","description":"ISO-8601 date-time."},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"additionalProperties":true,"type":"object","required":["field_id"],"title":"AssignmentCreateRequest"},"AuthRequest":{"properties":{"email":{"type":"string","title":"Email","examples":["farmer@example.com"]},"password":{"type":"string","minLength":1,"title":"Password","examples":["change-me"]}},"additionalProperties":true,"type":"object","required":["email","password"],"title":"AuthRequest"},"AvoidanceAreaRequest":{"properties":{"field_id":{"type":"string","title":"Field Id"},"eo_snapshot_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eo Snapshot Date"},"reason":{"type":"string","title":"Reason"},"severity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"},"geojson":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Geojson"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"additionalProperties":true,"type":"object","required":["field_id","reason"],"title":"AvoidanceAreaRequest"},"EOFieldRatingRequest":{"properties":{"fence_id":{"type":"string","title":"Fence Id"},"ndvi_avg":{"type":"number","title":"Ndvi Avg"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":"mock"},"product_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"additionalProperties":true,"type":"object","required":["fence_id","ndvi_avg"],"title":"EOFieldRatingRequest"},"FenceCreateRequest":{"properties":{"name":{"type":"string","title":"Name","examples":["North pasture"]},"geojson":{"additionalProperties":true,"type":"object","title":"Geojson","description":"GeoJSON Polygon geometry. Coordinates use [longitude, latitude] order.","examples":[{"coordinates":[[[8.6,50.1],[8.61,50.1],[8.61,50.11],[8.6,50.1]]],"type":"Polygon"}]}},"additionalProperties":true,"type":"object","required":["name","geojson"],"title":"FenceCreateRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HerdCreateRequest":{"properties":{"name":{"type":"string","title":"Name","examples":["Main herd"]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"field_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Id"},"species":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Species","examples":["cattle"]}},"additionalProperties":true,"type":"object","required":["name"],"title":"HerdCreateRequest"},"HerdUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"field_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Id"},"species":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Species"}},"additionalProperties":true,"type":"object","title":"HerdUpdateRequest"},"IntrospectRequest":{"properties":{"token":{"type":"string","title":"Token","description":"Access token to validate."}},"additionalProperties":true,"type":"object","required":["token"],"title":"IntrospectRequest"},"LocationIngestRequest":{"properties":{"thingKey":{"type":"string","title":"Thingkey"},"lat":{"type":"number","title":"Lat"},"lng":{"type":"number","title":"Lng"},"timestamp":{"anyOf":[{},{"type":"null"}],"title":"Timestamp"}},"additionalProperties":true,"type":"object","required":["thingKey","lat","lng"],"title":"LocationIngestRequest"},"MoveAnimalRequest":{"properties":{"animal_id":{"type":"string","title":"Animal Id"},"planned_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Planned Start"},"planned_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Planned End"},"grazing_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grazing Days"},"resting_days_before":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resting Days Before"},"resting_days_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resting Days After"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"additionalProperties":true,"type":"object","required":["animal_id"],"title":"MoveAnimalRequest"},"MoveFieldRequest":{"properties":{"field_id":{"type":"string","title":"Field Id"}},"additionalProperties":true,"type":"object","required":["field_id"],"title":"MoveFieldRequest"},"MoveHerdRequest":{"properties":{"herd_id":{"type":"string","title":"Herd Id"},"planned_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Planned Start"},"planned_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Planned End"},"grazing_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grazing Days"},"resting_days_before":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resting Days Before"},"resting_days_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resting Days After"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"additionalProperties":true,"type":"object","required":["herd_id"],"title":"MoveHerdRequest"},"MoveToHerdRequest":{"properties":{"herd_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Herd Id"}},"additionalProperties":true,"type":"object","title":"MoveToHerdRequest"},"OccupationRequest":{"properties":{"field_id":{"type":"string","title":"Field Id"},"herd_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Herd Id"},"animal_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Animal Id"},"target_type":{"type":"string","title":"Target Type"},"status":{"type":"string","title":"Status","default":"planned"},"planned_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Planned Start"},"planned_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Planned End"},"grazing_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grazing Days"},"resting_days_before":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resting Days Before"},"resting_days_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resting Days After"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"additionalProperties":true,"type":"object","required":["field_id","target_type"],"title":"OccupationRequest"},"PaddockPlanRequest":{"properties":{"name":{"type":"string","title":"Name"},"season_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Season Label"},"target_species":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Species"},"status":{"type":"string","title":"Status","default":"draft"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"additionalProperties":true,"type":"object","required":["name"],"title":"PaddockPlanRequest"},"RecommendationRequest":{"properties":{"field_id":{"type":"string","title":"Field Id"},"eo_snapshot_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eo Snapshot Date"},"recommendation_class":{"type":"string","title":"Recommendation Class"},"vegetation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vegetation Score"},"degradation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Degradation Score"},"muddy_risk":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Muddy Risk"},"suggested_grazing_window_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suggested Grazing Window Start"},"suggested_grazing_window_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suggested Grazing Window End"},"summary_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Reason"},"grass_species":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Grass Species"},"source_payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source Payload"},"is_current":{"type":"boolean","title":"Is Current","default":true}},"additionalProperties":true,"type":"object","required":["field_id","recommendation_class"],"title":"RecommendationRequest"},"RefreshRequest":{"properties":{"refresh_token":{"type":"string","title":"Refresh Token","description":"Keycloak refresh token returned by /auth."}},"additionalProperties":true,"type":"object","required":["refresh_token"],"title":"RefreshRequest"},"RegisterRequest":{"properties":{"email":{"type":"string","title":"Email","examples":["farmer@example.com"]},"password":{"type":"string","maxLength":256,"minLength":8,"title":"Password","examples":["strong-password"]},"first_name":{"type":"string","minLength":1,"title":"First Name","examples":["Anna"]},"last_name":{"type":"string","minLength":1,"title":"Last Name","examples":["Beispiel"]}},"additionalProperties":true,"type":"object","required":["email","password","first_name","last_name"],"title":"RegisterRequest"},"ResetPasswordBody":{"properties":{"new_password":{"type":"string","maxLength":256,"minLength":8,"title":"New Password"}},"additionalProperties":true,"type":"object","required":["new_password"],"title":"ResetPasswordBody"},"TaskRequest":{"properties":{"field_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Id"},"herd_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Herd Id"},"animal_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Animal Id"},"task_type":{"type":"string","title":"Task Type"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due Date"},"status":{"type":"string","title":"Status","default":"open"}},"additionalProperties":true,"type":"object","required":["task_type","title"],"title":"TaskRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"DAPI access token":{"type":"apiKey","description":"Keycloak access token returned by POST /auth.","in":"header","name":"X-DAPI-TOKEN"}}},"tags":[{"name":"Authentication","description":"Login, registration, token refresh, token inspection, password reset and account deletion through **moo-auth / Keycloak**."},{"name":"Telemetry","description":"IoT device discovery, latest positions, position history and location ingestion through **moo-telit**."},{"name":"Geofencing","description":"Create, list and delete field or grazing-area fences through **moo-fence**."},{"name":"Earth Observation","description":"Protected EO imagery and field vegetation ratings through **moo-eo**."},{"name":"EO Demo","description":"Public demonstration imagery. No DAPI token is required."},{"name":"Animals","description":"Animal records, collar assignment and map views through **moo-animal**."},{"name":"Herds","description":"Herd records and herd membership operations through **moo-animal**."},{"name":"Assignments","description":"Animal/herd-to-field assignment records through **moo-animal**."},{"name":"Paddock Plans","description":"Rotational grazing plans through **moo-paddock**."},{"name":"Occupations","description":"Planned and active field occupations through **moo-paddock**."},{"name":"Field Operations","description":"Field assignment, movement, occupants, notebook and history through **moo-paddock**."},{"name":"Recommendations","description":"EO-assisted grazing recommendations, ratings, avoidance areas and rotation suggestions through **moo-paddock**."},{"name":"Tasks","description":"Operational grazing and livestock tasks through **moo-paddock**."},{"name":"Alerts","description":"Escape alert evaluation and lifecycle management through **moo-alerts**."}]}