{"openapi":"3.1.0","info":{"title":"HALOWERK agriwerk","version":"1.0.0","description":"HALOWERK agriwerk — bezahlte Endpunkte nach x402. Preise in USDC auf Base Mainnet.","contact":{"url":"https://agri.halowerk.com/"}},"servers":[{"url":"https://agri.halowerk.com"}],"paths":{"/v1/soil-moisture":{"post":{"operationId":"agriwerk_soil_moisture","summary":"Propagates root-zone soil water from supplied rain, irrigation and evapotranspiration.","description":"Runs a deterministic bucket balance for each supplied day. Rain is reduced by a caller-selected runoff fraction, evapotranspiration is subtracted, water above field capacity is reported as drainage, and storage is bounded at zero. This is a root-zone accounting model, not a sensor reading, weather forecast, hydraulic simulation or irrigation command.","tags":["agriwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["initial_water_mm","field_capacity_mm","rainfall_mm","irrigation_mm","evapotranspiration_mm"],"additionalProperties":false,"properties":{"initial_water_mm":{"type":"number","minimum":0,"maximum":10000,"description":"Initial plant-available water in the modeled root zone."},"field_capacity_mm":{"type":"number","minimum":0.001,"maximum":10000,"description":"Maximum water stored by the modeled bucket."},"rainfall_mm":{"type":"array","minItems":1,"maxItems":3660,"items":{"type":"number","minimum":0,"maximum":5000}},"irrigation_mm":{"type":"array","minItems":1,"maxItems":3660,"items":{"type":"number","minimum":0,"maximum":5000}},"evapotranspiration_mm":{"type":"array","minItems":1,"maxItems":3660,"items":{"type":"number","minimum":0,"maximum":500}},"runoff_fraction":{"type":"number","minimum":0,"maximum":1,"description":"Fraction of rainfall excluded as runoff."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/pest-outbreak":{"post":{"operationId":"agriwerk_pest_outbreak","summary":"Screens supplied field conditions against a transparent degree-day outbreak threshold.","description":"Accumulates simple daily degree-days above a supplied base temperature and combines threshold progress with mean humidity and host availability. The score is a deterministic planning heuristic over caller data; it does not identify a pest, ingest surveillance data, model population dynamics or prescribe pesticide use.","tags":["agriwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["daily_conditions","base_temperature_c","outbreak_degree_day_threshold","host_availability_fraction"],"additionalProperties":false,"properties":{"daily_conditions":{"type":"array","minItems":1,"maxItems":3660,"items":{"type":"object","required":["minimum_temperature_c","maximum_temperature_c","relative_humidity_percent"],"additionalProperties":false,"properties":{"minimum_temperature_c":{"type":"number","minimum":-100,"maximum":100},"maximum_temperature_c":{"type":"number","minimum":-100,"maximum":100},"relative_humidity_percent":{"type":"number","minimum":0,"maximum":100}}}},"base_temperature_c":{"type":"number","minimum":-50,"maximum":50},"outbreak_degree_day_threshold":{"type":"number","minimum":0.001,"maximum":100000},"host_availability_fraction":{"type":"number","minimum":0,"maximum":1}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/fertilizer-map":{"post":{"operationId":"agriwerk_fertilizer_map","summary":"Maps nitrogen, phosphorus and potassium deficits for supplied management cells.","description":"For each field cell, subtracts measured available nutrient from a supplied target and divides positive deficits by an explicit recovery fraction. It reports per-hectare rates and area totals. It does not infer crop targets, validate laboratory samples, account for nutrient chemistry or constitute an agronomic application prescription.","tags":["agriwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["cells","recovery_fraction","maximum_rate_kg_per_ha"],"additionalProperties":false,"properties":{"cells":{"type":"array","minItems":1,"maxItems":10000,"items":{"type":"object","required":["cell_id","area_hectares","available_kg_per_ha","target_kg_per_ha"],"additionalProperties":false,"properties":{"cell_id":{"type":"string","minLength":1,"maxLength":128},"area_hectares":{"type":"number","minimum":0.0001,"maximum":1000000},"available_kg_per_ha":{"type":"object","required":["nitrogen","phosphorus","potassium"],"additionalProperties":false,"properties":{"nitrogen":{"type":"number","minimum":0,"maximum":100000},"phosphorus":{"type":"number","minimum":0,"maximum":100000},"potassium":{"type":"number","minimum":0,"maximum":100000}}},"target_kg_per_ha":{"type":"object","required":["nitrogen","phosphorus","potassium"],"additionalProperties":false,"properties":{"nitrogen":{"type":"number","minimum":0,"maximum":100000},"phosphorus":{"type":"number","minimum":0,"maximum":100000},"potassium":{"type":"number","minimum":0,"maximum":100000}}}}}},"recovery_fraction":{"type":"object","required":["nitrogen","phosphorus","potassium"],"additionalProperties":false,"properties":{"nitrogen":{"type":"number","minimum":0.01,"maximum":1},"phosphorus":{"type":"number","minimum":0.01,"maximum":1},"potassium":{"type":"number","minimum":0.01,"maximum":1}}},"maximum_rate_kg_per_ha":{"type":"object","required":["nitrogen","phosphorus","potassium"],"additionalProperties":false,"properties":{"nitrogen":{"type":"number","minimum":0,"maximum":100000},"phosphorus":{"type":"number","minimum":0,"maximum":100000},"potassium":{"type":"number","minimum":0,"maximum":100000}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/livestock-health":{"post":{"operationId":"agriwerk_livestock_health","summary":"Flags livestock measurements outside caller-supplied reference ranges.","description":"Compares temperature, heart rate and an activity ratio with ranges supplied by the caller, then reports normalized deviations and a simple screening band. It is species-agnostic arithmetic, not veterinary diagnosis, remote monitoring, triage or treatment advice; reference ranges must come from a qualified source.","tags":["agriwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["animals","reference_ranges"],"additionalProperties":false,"properties":{"animals":{"type":"array","minItems":1,"maxItems":10000,"items":{"type":"object","required":["animal_id","temperature_c","heart_rate_bpm","activity_ratio"],"additionalProperties":false,"properties":{"animal_id":{"type":"string","minLength":1,"maxLength":128},"temperature_c":{"type":"number","minimum":0,"maximum":60},"heart_rate_bpm":{"type":"number","minimum":0,"maximum":500},"activity_ratio":{"type":"number","minimum":0,"maximum":10}}}},"reference_ranges":{"type":"object","required":["temperature_c","heart_rate_bpm","activity_ratio"],"additionalProperties":false,"properties":{"temperature_c":{"type":"object","required":["minimum","maximum"],"additionalProperties":false,"properties":{"minimum":{"type":"number","minimum":0,"maximum":60},"maximum":{"type":"number","minimum":0,"maximum":60}}},"heart_rate_bpm":{"type":"object","required":["minimum","maximum"],"additionalProperties":false,"properties":{"minimum":{"type":"number","minimum":0,"maximum":500},"maximum":{"type":"number","minimum":0,"maximum":500}}},"activity_ratio":{"type":"object","required":["minimum","maximum"],"additionalProperties":false,"properties":{"minimum":{"type":"number","minimum":0,"maximum":10},"maximum":{"type":"number","minimum":0,"maximum":10}}}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/harvest-window":{"post":{"operationId":"agriwerk_harvest_window","summary":"Identifies supplied forecast days that satisfy transparent maturity and field constraints.","description":"Adds simple degree-days from caller-supplied daily temperatures to an existing accumulation, then marks days that meet a supplied maturity threshold, crop-moisture interval and maximum rain constraint. It does not obtain a forecast, model crop physiology, inspect a field or guarantee harvestability.","tags":["agriwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["accumulated_degree_days","maturity_degree_days","base_temperature_c","acceptable_crop_moisture_percent","maximum_rain_mm","daily_forecast"],"additionalProperties":false,"properties":{"accumulated_degree_days":{"type":"number","minimum":0,"maximum":100000},"maturity_degree_days":{"type":"number","minimum":0.001,"maximum":100000},"base_temperature_c":{"type":"number","minimum":-50,"maximum":50},"acceptable_crop_moisture_percent":{"type":"object","required":["minimum","maximum"],"additionalProperties":false,"properties":{"minimum":{"type":"number","minimum":0,"maximum":100},"maximum":{"type":"number","minimum":0,"maximum":100}}},"maximum_rain_mm":{"type":"number","minimum":0,"maximum":1000},"daily_forecast":{"type":"array","minItems":1,"maxItems":366,"items":{"type":"object","required":["date","minimum_temperature_c","maximum_temperature_c","crop_moisture_percent","rain_mm"],"additionalProperties":false,"properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"minimum_temperature_c":{"type":"number","minimum":-100,"maximum":100},"maximum_temperature_c":{"type":"number","minimum":-100,"maximum":100},"crop_moisture_percent":{"type":"number","minimum":0,"maximum":100},"rain_mm":{"type":"number","minimum":0,"maximum":1000}}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/carbon-capture":{"post":{"operationId":"agriwerk_carbon_capture","summary":"Calculates a gross soil-carbon stock change from supplied bulk-density samples.","description":"Converts area, sampling depth, bulk density and initial/final organic-carbon mass fractions into stock estimates and a gross CO2-equivalent difference. This is a simple stock-difference calculation; it does not establish additionality, permanence, leakage, sampling representativeness, credit eligibility or verified carbon removal.","tags":["agriwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["area_hectares","sampling_depth_cm","bulk_density_kg_per_m3","initial_organic_carbon_percent","final_organic_carbon_percent"],"additionalProperties":false,"properties":{"area_hectares":{"type":"number","minimum":0.0001,"maximum":100000000},"sampling_depth_cm":{"type":"number","minimum":0.1,"maximum":1000},"bulk_density_kg_per_m3":{"type":"number","minimum":1,"maximum":5000},"initial_organic_carbon_percent":{"type":"number","minimum":0,"maximum":100},"final_organic_carbon_percent":{"type":"number","minimum":0,"maximum":100}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/vertical-farm-hvac":{"post":{"operationId":"agriwerk_vertical_farm_hvac","summary":"Estimates steady-state sensible cooling or heating and dehumidification loads.","description":"Adds lighting, equipment, people, envelope and ventilation heat flows at one supplied operating point, and converts evapotranspiration into a latent moisture-removal load. It is a steady-state sizing estimate without duct losses, thermal mass, equipment curves, controls, infiltration uncertainty or psychrometric state validation.","tags":["agriwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["lighting_kw","equipment_kw","people_count","sensible_heat_per_person_w","envelope_area_m2","envelope_u_value_w_per_m2k","outdoor_temperature_c","indoor_setpoint_c","ventilation_m3_per_s","evapotranspiration_l_per_hour"],"additionalProperties":false,"properties":{"lighting_kw":{"type":"number","minimum":0,"maximum":1000000},"equipment_kw":{"type":"number","minimum":0,"maximum":1000000},"people_count":{"type":"integer","minimum":0,"maximum":1000000},"sensible_heat_per_person_w":{"type":"number","minimum":0,"maximum":2000},"envelope_area_m2":{"type":"number","minimum":0,"maximum":100000000},"envelope_u_value_w_per_m2k":{"type":"number","minimum":0,"maximum":100},"outdoor_temperature_c":{"type":"number","minimum":-100,"maximum":100},"indoor_setpoint_c":{"type":"number","minimum":-50,"maximum":60},"ventilation_m3_per_s":{"type":"number","minimum":0,"maximum":1000000},"evapotranspiration_l_per_hour":{"type":"number","minimum":0,"maximum":100000000}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/drone-spray-path":{"post":{"operationId":"agriwerk_drone_spray_path","summary":"Generates a deterministic lawnmower path over a supplied rectangular field.","description":"Builds parallel passes over an axis-aligned rectangle using supplied swath width and overlap, alternating travel direction to reduce deadhead distance. Coordinates are in caller-supplied local units. It does not use maps, terrain, wind, obstacles, battery limits, no-fly zones, chemical rules or flight-control integration.","tags":["agriwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["origin","width","height","swath_width","overlap_fraction","orientation"],"additionalProperties":false,"properties":{"origin":{"type":"object","required":["x","y"],"additionalProperties":false,"properties":{"x":{"type":"number","minimum":-1000000000,"maximum":1000000000},"y":{"type":"number","minimum":-1000000000,"maximum":1000000000}}},"width":{"type":"number","minimum":0.001,"maximum":1000000000},"height":{"type":"number","minimum":0.001,"maximum":1000000000},"swath_width":{"type":"number","minimum":0.001,"maximum":1000000000},"overlap_fraction":{"type":"number","minimum":0,"maximum":0.95},"orientation":{"type":"string","enum":["passes_along_width","passes_along_height"]}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/seed-germination":{"post":{"operationId":"agriwerk_seed_germination","summary":"Calculates a germination proportion and Wilson confidence interval.","description":"Computes the observed germination rate and a Wilson score interval from germinated and tested counts using a supplied normal critical value. It does not correct sampling bias, test vigor, identify disease or predict field emergence.","tags":["agriwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["germinated_count","tested_count"],"additionalProperties":false,"properties":{"germinated_count":{"type":"integer","minimum":0,"maximum":1000000000},"tested_count":{"type":"integer","minimum":1,"maximum":1000000000},"critical_z":{"type":"number","minimum":0.1,"maximum":10,"description":"Normal critical value, for example 1.96 for an approximate 95% interval."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/supply-spoilage":{"post":{"operationId":"agriwerk_supply_spoilage","summary":"Estimates shelf-life consumption across a supplied temperature history.","description":"Converts each supplied storage segment into equivalent ageing at a reference temperature using a caller-supplied Q10 factor, then compares the sum with nominal shelf life. This empirical approximation is not a microbial model, food-safety decision, sensor feed, cold-chain certification or release authorization.","tags":["agriwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["nominal_shelf_life_days","reference_temperature_c","q10_factor","temperature_history"],"additionalProperties":false,"properties":{"nominal_shelf_life_days":{"type":"number","minimum":0.001,"maximum":100000},"reference_temperature_c":{"type":"number","minimum":-100,"maximum":100},"q10_factor":{"type":"number","minimum":1,"maximum":20},"temperature_history":{"type":"array","minItems":1,"maxItems":10000,"items":{"type":"object","required":["duration_hours","temperature_c"],"additionalProperties":false,"properties":{"duration_hours":{"type":"number","minimum":0.001,"maximum":1000000},"temperature_c":{"type":"number","minimum":-100,"maximum":200}}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}}},"components":{"schemas":{"PaymentRequired":{"type":"object","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"description":{"type":"string"},"inputSchema":{"type":"object"},"accepts":{"type":"array","items":{"type":"object"}}}}},"securitySchemes":{"x402":{"type":"apiKey","in":"header","name":"PAYMENT-SIGNATURE","description":"x402 Zahlungsnachweis"}}}}