generated: '2026-07-15' method: generated source: openapi/farmos-farmos-api-openapi.yml description: Recommended x-agentic-access execution contracts, classified heuristically from the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind audience per deployment. See research/curity/agentic-governance/. summary: operations: 100 by_action_class: connected: 43 acting: 57 by_consequence: read: 43 write: 57 human_in_the_loop_required: 0 operations: - path: / method: get operationId: getServerInfo x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/animal method: get operationId: listAnimalAssets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/animal method: post operationId: createAnimalAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/animal/{id} method: get operationId: getAnimalAsset x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/animal/{id} method: patch operationId: updateAnimalAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/animal/{id} method: delete operationId: deleteAnimalAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/land method: get operationId: listLandAssets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/land method: post operationId: createLandAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/land/{id} method: get operationId: getLandAsset x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/land/{id} method: patch operationId: updateLandAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/land/{id} method: delete operationId: deleteLandAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/plant method: get operationId: listPlantAssets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/plant method: post operationId: createPlantAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/plant/{id} method: get operationId: getPlantAsset x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/plant/{id} method: patch operationId: updatePlantAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/plant/{id} method: delete operationId: deletePlantAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/equipment method: get operationId: listEquipmentAssets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/equipment method: post operationId: createEquipmentAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/equipment/{id} method: get operationId: getEquipmentAsset x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/equipment/{id} method: patch operationId: updateEquipmentAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/equipment/{id} method: delete operationId: deleteEquipmentAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/structure method: get operationId: listStructureAssets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/structure method: post operationId: createStructureAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/structure/{id} method: get operationId: getStructureAsset x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/structure/{id} method: patch operationId: updateStructureAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/structure/{id} method: delete operationId: deleteStructureAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/sensor method: get operationId: listSensorAssets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/sensor method: post operationId: createSensorAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/sensor/{id} method: get operationId: getSensorAsset x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/sensor/{id} method: patch operationId: updateSensorAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/sensor/{id} method: delete operationId: deleteSensorAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/group method: get operationId: listGroupAssets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/group method: post operationId: createGroupAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/group/{id} method: get operationId: getGroupAsset x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /asset/group/{id} method: patch operationId: updateGroupAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /asset/group/{id} method: delete operationId: deleteGroupAsset x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/activity method: get operationId: listActivityLogs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/activity method: post operationId: createActivityLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/activity/{id} method: get operationId: getActivityLog x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/activity/{id} method: patch operationId: updateActivityLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/activity/{id} method: delete operationId: deleteActivityLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/observation method: get operationId: listObservationLogs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/observation method: post operationId: createObservationLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/observation/{id} method: get operationId: getObservationLog x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/observation/{id} method: patch operationId: updateObservationLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/observation/{id} method: delete operationId: deleteObservationLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/input method: get operationId: listInputLogs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/input method: post operationId: createInputLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/input/{id} method: get operationId: getInputLog x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/input/{id} method: patch operationId: updateInputLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/input/{id} method: delete operationId: deleteInputLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/harvest method: get operationId: listHarvestLogs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/harvest method: post operationId: createHarvestLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/harvest/{id} method: get operationId: getHarvestLog x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/harvest/{id} method: patch operationId: updateHarvestLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/harvest/{id} method: delete operationId: deleteHarvestLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/seeding method: get operationId: listSeedingLogs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/seeding method: post operationId: createSeedingLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/seeding/{id} method: get operationId: getSeedingLog x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/seeding/{id} method: patch operationId: updateSeedingLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/seeding/{id} method: delete operationId: deleteSeedingLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/transplanting method: get operationId: listTransplantingLogs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/transplanting method: post operationId: createTransplantingLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/transplanting/{id} method: get operationId: getTransplantingLog x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/transplanting/{id} method: patch operationId: updateTransplantingLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/transplanting/{id} method: delete operationId: deleteTransplantingLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/maintenance method: get operationId: listMaintenanceLogs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/maintenance method: post operationId: createMaintenanceLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/maintenance/{id} method: get operationId: getMaintenanceLog x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/maintenance/{id} method: patch operationId: updateMaintenanceLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/maintenance/{id} method: delete operationId: deleteMaintenanceLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/medical method: get operationId: listMedicalLogs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/medical method: post operationId: createMedicalLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/medical/{id} method: get operationId: getMedicalLog x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/medical/{id} method: patch operationId: updateMedicalLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/medical/{id} method: delete operationId: deleteMedicalLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/birth method: get operationId: listBirthLogs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/birth method: post operationId: createBirthLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/birth/{id} method: get operationId: getBirthLog x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/birth/{id} method: patch operationId: updateBirthLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/birth/{id} method: delete operationId: deleteBirthLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/lab_test method: get operationId: listLabTestLogs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/lab_test method: post operationId: createLabTestLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/lab_test/{id} method: get operationId: getLabTestLog x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /log/lab_test/{id} method: patch operationId: updateLabTestLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /log/lab_test/{id} method: delete operationId: deleteLabTestLog x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /plan/plan method: get operationId: listPlans x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /plan/plan method: post operationId: createPlan x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /plan/plan/{id} method: get operationId: getPlan x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /plan/plan/{id} method: patch operationId: updatePlan x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /plan/plan/{id} method: delete operationId: deletePlan x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /taxonomy_term/plant_type method: get operationId: listPlantTypes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /taxonomy_term/animal_type method: get operationId: listAnimalTypes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /taxonomy_term/log_category method: get operationId: listLogCategories x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /taxonomy_term/unit method: get operationId: listUnits x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /quantity/standard method: get operationId: listStandardQuantities x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /quantity/standard method: post operationId: createStandardQuantity x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /quantity/standard/{id} method: get operationId: getStandardQuantity x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none scope: - farm_manager - path: /quantity/standard/{id} method: patch operationId: updateStandardQuantity x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager - path: /quantity/standard/{id} method: delete operationId: deleteStandardQuantity x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required scope: - farm_manager