{"openapi":"3.1.0","info":{"title":"EarthShed API","version":"0.2.0","description":"Environmental risk API for British Columbia. Only listed operations are served.\n\nIGNIS relative bands compare FWI within one published issue. They are not ignition probabilities, official danger classes, property assessments or emergency notifications."},"servers":[{"url":"https://api.earthshed.ca","description":"EarthShed API"}],"components":{"securitySchemes":{"apiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"},"bearerAuth":{"type":"http","scheme":"bearer"}}},"security":[{"apiKeyHeader":[]},{"bearerAuth":[]}],"paths":{"/v1/status":{"get":{"operationId":"statusRead","summary":"Engine readiness and surface freshness. No hazard values.","description":"Readiness only. Requires no key and reports no hazard value.","security":[],"responses":{"200":{"description":"The operation result, wrapped in a `data` envelope.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"404":{"description":"No such operation is served by this API.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"503":{"description":"The engine is temporarily unavailable.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}}}}},"/v1/ignis/point/{lat}/{lon}":{"get":{"operationId":"ignisPointRead","summary":"Daily IGNIS fire-weather reading for one 5 km British Columbia land cell.","description":"Requires an EarthShed API key and counts against the user-level daily quota (50 calls per window on the free plan). The response is the full current IGNIS point contract, wrapped as `{ data }`. Capability, claim, source, limit, version and fingerprint fields are not stripped. Relative bands compare FWI within one published issue; they are not ignition probabilities or official danger classes.","security":[{"apiKeyHeader":[]},{"bearerAuth":[]}],"parameters":[{"name":"lat","in":"path","required":true,"description":"Latitude in decimal degrees.","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"path","required":true,"description":"Longitude in decimal degrees.","schema":{"type":"number","minimum":-180,"maximum":180}}],"responses":{"200":{"description":"The operation result, wrapped in a `data` envelope.","headers":{"ratelimit-limit":{"schema":{"type":"integer"}},"ratelimit-remaining":{"schema":{"type":"integer"}},"ratelimit-reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["schema_version","model","model_version","product_scope","product_key","cell_id","grid_version","resolution_m","location","issue","daily","forecasts","capabilities","claims","sources","limits","challenge","versions"],"properties":{"schema_version":{"type":"string","examples":["ignis-daily-mvp-v1"]},"model":{"type":"string","const":"ignis"},"model_version":{"type":"string"},"product_scope":{"type":"string","examples":["daily_fire_weather_danger"]},"product_key":{"type":"string","examples":["ignis-daily-mvp-v1"]},"cell_id":{"type":"string","examples":["BC-5000M-00000-00000"]},"grid_version":{"type":"string","examples":["bc-land-v1"]},"resolution_m":{"type":"integer","examples":[5000]},"location":{"type":"object","required":["lat","lon"],"properties":{"lat":{"type":"number"},"lon":{"type":"number"}}},"issue":{"type":"object","additionalProperties":true},"daily":{"type":"object","required":["status","valid_date_local","weather","components","danger","reasons","state"],"properties":{"forecast_index":{"type":"integer"},"valid_time_utc":{"type":["string","null"]},"valid_date_local":{"type":"string","format":"date"},"lead_hours":{"type":["number","null"]},"status":{"type":"string"},"weather":{"type":"object","properties":{"temperature_c":{"type":["number","null"]},"relative_humidity_pct":{"type":["number","null"]},"wind_speed_kmh":{"type":["number","null"]},"precipitation_24h_mm":{"type":["number","null"]}}},"components":{"type":"object","properties":{"ffmc":{"type":["number","null"]},"dmc":{"type":["number","null"]},"dc":{"type":["number","null"]},"isi":{"type":["number","null"]},"bui":{"type":["number","null"]},"fwi":{"type":["number","null"]},"dsr":{"type":["number","null"]}}},"danger":{"type":"object","properties":{"score_kind":{"type":"string"},"raw_fwi":{"type":["number","null"]},"percentile_0_100":{"type":["number","null"],"minimum":0,"maximum":100},"relative_band":{"type":["string","null"]},"ignition_probability":{"type":"null"},"official_danger_class":{"type":"null"},"reference_count":{"type":"integer"},"eligible_active_count":{"type":"integer"}}},"reasons":{"type":"array","items":{}},"state":{"type":"object","additionalProperties":true}}},"forecasts":{"type":"array","items":{"type":"object","additionalProperties":true}},"capabilities":{"type":"object","additionalProperties":true},"claims":{"type":"object","additionalProperties":true},"sources":{"type":"array","items":{"type":"object","additionalProperties":true}},"limits":{"type":"array","items":{"type":"string"}},"challenge":{"type":"array","items":{}},"versions":{"type":"object","additionalProperties":true},"methodology_fingerprint":{"type":"string"},"assessment_fingerprint":{"type":"string"}}}}}}}},"401":{"description":"No API key was presented, or it is not valid.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"403":{"description":"This operation is not included in your plan.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"404":{"description":"No such operation is served by this API.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"429":{"description":"The daily call limit for this key has been used.","headers":{"ratelimit-limit":{"schema":{"type":"integer"}},"ratelimit-remaining":{"schema":{"type":"integer"}},"ratelimit-reset":{"description":"Epoch seconds at which the daily count resets. The window turns at 14:00 America/Vancouver, so the UTC instant shifts by an hour across daylight saving.","schema":{"type":"integer"}},"retry-after":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"503":{"description":"The engine is temporarily unavailable.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}}}}},"/v1/coverage":{"get":{"operationId":"coverageRead","summary":"The modelled area, its grid resolution and cell count.","description":"Requires an EarthShed API key and counts against its daily limit. On the free plan the response is narrowed to the released fields. Values are relative model output, not a probability and not an emergency notification.","security":[{"apiKeyHeader":[]},{"bearerAuth":[]}],"responses":{"200":{"description":"The operation result, wrapped in a `data` envelope.","headers":{"ratelimit-limit":{"schema":{"type":"integer"}},"ratelimit-remaining":{"schema":{"type":"integer"}},"ratelimit-reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"description":"No API key was presented, or it is not valid.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"403":{"description":"This operation is not included in your plan.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"404":{"description":"No such operation is served by this API.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"429":{"description":"The daily call limit for this key has been used.","headers":{"ratelimit-limit":{"schema":{"type":"integer"}},"ratelimit-remaining":{"schema":{"type":"integer"}},"ratelimit-reset":{"description":"Epoch seconds at which the daily count resets. The window turns at 14:00 America/Vancouver, so the UTC instant shifts by an hour across daylight saving.","schema":{"type":"integer"}},"retry-after":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"503":{"description":"The engine is temporarily unavailable.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}}}}},"/v1/attribution":{"get":{"operationId":"attributionRead","summary":"Required attribution for the data sources behind a reading.","description":"Requires an EarthShed API key and counts against its daily limit. On the free plan the response is narrowed to the released fields. Values are relative model output, not a probability and not an emergency notification.","security":[{"apiKeyHeader":[]},{"bearerAuth":[]}],"responses":{"200":{"description":"The operation result, wrapped in a `data` envelope.","headers":{"ratelimit-limit":{"schema":{"type":"integer"}},"ratelimit-remaining":{"schema":{"type":"integer"}},"ratelimit-reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object"}}}}}},"401":{"description":"No API key was presented, or it is not valid.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"403":{"description":"This operation is not included in your plan.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"404":{"description":"No such operation is served by this API.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"429":{"description":"The daily call limit for this key has been used.","headers":{"ratelimit-limit":{"schema":{"type":"integer"}},"ratelimit-remaining":{"schema":{"type":"integer"}},"ratelimit-reset":{"description":"Epoch seconds at which the daily count resets. The window turns at 14:00 America/Vancouver, so the UTC instant shifts by an hour across daylight saving.","schema":{"type":"integer"}},"retry-after":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}},"503":{"description":"The engine is temporarily unavailable.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}}}}}}}}