<?xml version="1.0" encoding="UTF-8"?>
<agents>
  <policy>
    <name>Windfield</name>
    <operator>SummitFlux LLC</operator>
    <site>https://windfield.summitflux.com</site>
    <contact>james@summitflux.com</contact>
    <engine>USFS WindNinja 4.0 (USDA Forest Service, Missoula Fire Sciences Lab)</engine>
    <use>allowed</use>
    <training>allowed</training>
    <citation>allowed</citation>
    <redistribution>allowed</redistribution>
    <attributionRequested>true</attributionRequested>
    <attributionText>Windfield by SummitFlux, powered by USFS WindNinja</attributionText>
    <authRequired>false</authRequired>
    <cors>open</cors>
    <rateLimitGuidance>a few requests per second at most; honor retry_after on 429</rateLimitGuidance>
    <limits>
      <maxDomainKm>400</maxDomainKm>
      <maxCells>1500000</maxCells>
      <maxRunSeconds>900</maxRunSeconds>
      <maxConcurrentJobs>2</maxConcurrentJobs>
      <maxQueuedJobs>20</maxQueuedJobs>
      <maxInFlightPerIp>2</maxInFlightPerIp>
      <jobResultLifetime>~5 minutes after last access (presence-based, not a fixed TTL)</jobResultLifetime>
      <requestBodyMaxBytes>65536</requestBodyMaxBytes>
    </limits>
    <docs>
      <help>https://windfield.summitflux.com/help.html</help>
      <helpApiSection>https://windfield.summitflux.com/help.html#api</helpApiSection>
      <llmsTxt>https://windfield.summitflux.com/llms.txt</llmsTxt>
      <llmsFullTxt>https://windfield.summitflux.com/llms-full.txt</llmsFullTxt>
      <capabilities>https://windfield.summitflux.com/api/v1/capabilities</capabilities>
      <credits>https://windfield.summitflux.com/credits.html</credits>
      <about>https://windfield.summitflux.com/about.html</about>
      <privacy>https://summitflux.com/privacy-policy</privacy>
      <terms>https://summitflux.com/terms</terms>
    </docs>
  </policy>
  <endpoints>
    <endpoint method="GET" path="/api/v1/health" description="Service status and current queue depth"/>
    <endpoint method="GET" path="/api/v1/capabilities" description="Live budgets and supported options (mesh, vegetation, wx models, solvers)"/>
    <endpoint method="POST" path="/api/v1/jobs" description="Start a WindNinja run; returns id, status and status_url"/>
    <endpoint method="GET" path="/api/v1/jobs/{id}" description="Poll status/progress; results object once done"/>
    <endpoint method="GET" path="/api/v1/jobs/{id}/files/{name}" description="Fetch a specific output file (png/geotiff/kmz/shapefile/ascii/csv/cfg)"/>
    <endpoint method="GET" path="/api/v1/jobs/{id}/log" description="Plain-text WindNinja run log"/>
    <endpoint method="GET" path="/api/v1/jobs/{id}/recipe" description="The original request params, re-POSTable to /api/v1/jobs"/>
    <endpoint method="POST" path="/api/v1/jobs/{id}/keepalive" description="Bump the job's presence timer (204, empty body)"/>
    <endpoint method="GET" path="/api/v1/dem/elevation" description="Single elevation sample for lat/lon"/>
    <endpoint method="GET" path="/api/v1/geocode" description="Place search (proxies OSM Nominatim)"/>
    <endpoint method="GET" path="/api/v1/geocode/reverse" description="Reverse geocode a point to one label"/>
    <endpoint method="GET" path="/api/v1/weather/current" description="Live current and 48h hourly conditions (Open-Meteo)"/>
    <endpoint method="GET" path="/api/v1/weather/stations" description="Live station observations, multi-network (nws, metar, ndbc, raws)"/>
    <endpoint method="GET" path="/api/v1/weather/profile" description="Merged vertical wind profile (model, sounding, surface sources)"/>
  </endpoints>
</agents>
