{"id":"releases/2026-11-13/schemas/species-1.json","kind":"schema","format":"schema/1.0","provenance":{"release":"2026-11-13","sources":["inaturalist-observations-v2","gbif-occurrence-v2","species-names","inaturalist-photos","usgs-gap-ranges-conus-2001v1","noaa-nclimgrid-daily","us-riis-l48-v2","oh-oda-invasive-plants","oh-odnr-aquatic-invasive","inaturalist-checklist","government-species-lists","census-tiger-2026","census-cartographic-boundaries-2025","resolve-ecoregions-2017","usgs-wbd","census-urban-areas-2020","natural-earth-countries","usgs-annual-nlcd-c1v2-2025","usgs-3dep-1as","usgs-padus-4-1","odnr-lands","census-zcta-county-2020","census-places-2020"],"licences":["CC-BY-4.0","CC-BY-NC-4.0","CC0-1.0"],"gbif_download_dois":["10.15468/dl.8m7c3d","10.15468/dl.y2jkt8"],"method":"seasonal-5","taxonomy":"col-xr-2026-06-19/match-2026-10-20","boundaries":"tiger-2026; census-cb-2025-500k; census-zcta-county-2020; census-places-2020; resolve-ecoregions-2017; usgs-annual-nlcd-c1v2-2025; usgs-3dep-1as; PAD-US 4.1 073747bf4d9b, ODNR Lands 8f5985bbd476, parks list 1.2; WBD HU8 04 1a78c5142bde, 05 d59adb45cc28; census-uac20 dbd0e5786258","ranges":["gap/conus-2001v1"],"protection":{"usfws":"2026-11-03T15:25:11.428Z","ohio":"2026-10"},"code":"414181dce188c3b7397c29608556900ed4e75a41","run":"43333827288"},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"OpenPhenology species/1","description":"One species and every area with a result or within its mapped range.","type":"object","required":["id","kind","format","provenance","data"],"properties":{"id":{"description":"The file's path from the API root.","type":"string","pattern":"^releases/\\d{4}-\\d{2}-\\d{2}/species/[A-Za-z0-9._-]+(/\\d+)?\\.json$"},"kind":{"description":"The format's name, such as `county-weekly`.","const":"species"},"format":{"description":"Format name and version, for example `county-weekly/1.0`.","type":"string","pattern":"^species/1\\.\\d+$"},"provenance":{"description":"Where the content came from.","type":"object","required":["release","sources","licences","gbif_download_dois","method","taxonomy","boundaries","ranges","protection","code","run"],"properties":{"release":{"description":"The release the file belongs to, such as `2026-10-19`.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"sources":{"description":"Source IDs, as listed in `sources.json`.","type":"array","items":{"type":"string"}},"licences":{"description":"The licences of those sources.","type":"array","items":{"type":"string"}},"gbif_download_dois":{"description":"The GBIF downloads the records came from, as DOIs.","type":"array","items":{"type":"string"}},"method":{"description":"The method version, such as `seasonal-3`.","anyOf":[{"type":"string"},{"type":"null"}]},"taxonomy":{"description":"The taxonomy version species keys come from.","anyOf":[{"type":"string"},{"type":"null"}]},"boundaries":{"description":"The boundary version areas come from.","anyOf":[{"type":"string"},{"type":"null"}]},"ranges":{"description":"Each mapped range edition used.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"protection":{"description":"The version of each sensitive-species list applied, by list.","anyOf":[{"type":"object","additionalProperties":{"type":"string"}},{"type":"null"}]},"code":{"description":"The commit of the code that produced the file.","anyOf":[{"type":"string"},{"type":"null"}]},"run":{"description":"The run that produced the file.","anyOf":[{"type":"string"},{"type":"null"}]}}},"data":{"description":"The content, as the format sets out.","type":"object","required":["species_key","scientific_name","authorship","common_name","synonyms","rank","classification","group","slug","areas","ranges"],"properties":{"species_key":{"description":"The species key in the shared taxonomy.","type":"string","pattern":"^[A-Za-z0-9._-]+$"},"scientific_name":{"description":"The scientific name, without authorship.","type":"string","minLength":1},"authorship":{"description":"The authorship of the scientific name.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"common_name":{"description":"The display name, or `null` when there is none.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"synonyms":{"description":"Other scientific names, from the shared taxonomy.","type":"array","items":{"type":"string","minLength":1}},"rank":{"description":"The taxonomic rank, such as `species`.","type":"string","minLength":1},"classification":{"description":"Kingdom to genus.","type":"object","required":["kingdom","phylum","class","order","family","genus"],"properties":{"kingdom":{"description":"The kingdom.","anyOf":[{"type":"string"},{"type":"null"}]},"phylum":{"description":"The phylum.","anyOf":[{"type":"string"},{"type":"null"}]},"class":{"description":"The class.","anyOf":[{"type":"string"},{"type":"null"}]},"order":{"description":"The order.","anyOf":[{"type":"string"},{"type":"null"}]},"family":{"description":"The family.","anyOf":[{"type":"string"},{"type":"null"}]},"genus":{"description":"The genus.","anyOf":[{"type":"string"},{"type":"null"}]}}},"group":{"description":"The browse group, such as `birds`.","anyOf":[{"type":"string","pattern":"^[a-z]+(-[a-z]+)*$"},{"type":"null"}]},"slug":{"description":"The page slug.","anyOf":[{"type":"string","pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},{"type":"null"}]},"areas":{"description":"Every area with a result.","type":"array","items":{"type":"object","required":["area","level","records","season","season_withheld"],"properties":{"area":{"description":"The area code.","anyOf":[{"type":"string","pattern":"^[a-z]{2}-[a-z0-9]{1,3}$"},{"type":"string","pattern":"^\\d{5}$"},{"type":"string","pattern":"^(huc8-\\d{8}|eco-\\d+|parks?-[a-z0-9]+(-[a-z0-9]+)*|ua-\\d{5})$"}]},"level":{"description":"Whether it is a state or a county, or from `species/1.16` a\nwatershed, ecoregion, park or metro park system, or from\n`species/1.17` a city (`urban-area`). A sensitive species has no\nplace result.","enum":["state","county","watershed","ecoregion","park","park-system","urban-area"]},"records":{"description":"Records counted there.","type":"integer","minimum":0},"record_dates":{"description":"How many distinct dates those records fall on; `null` for a species\nsensitive in the state. Added in `species/1.10`, so absent from\nearlier files.","anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"latest_month":{"description":"The month of the latest of those records, `YYYY-MM`: when people\nrecorded it, never whether it is there now. `null` for a species\nsensitive in the state. Added in `species/1.10`.","anyOf":[{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},{"type":"null"}]},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["year-round","two-seasons","one-year","precision"]},{"type":"null"}]},"conditions":{"description":"Medians over the records the season counts, each on the record's date\nat its place (ODR-2026-028). Added in `species/1.7`, so absent from\nearlier files.","type":"object","required":["sunrise","sunset","high","low","midpoint"],"properties":{"sunrise":{"description":"Median sunrise, local clock time `HH:MM`, calculated with NOAA's solar calculation.","anyOf":[{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}]},"sunset":{"description":"Median sunset, local clock time `HH:MM`, calculated with NOAA's solar calculation.","anyOf":[{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}]},"high":{"description":"Median daily high in °C, from NOAA nClimGrid-Daily; lower 48 states only.","anyOf":[{"type":"number"},{"type":"null"}]},"low":{"description":"Median daily low in °C, from NOAA nClimGrid-Daily; lower 48 states only.","anyOf":[{"type":"number"},{"type":"null"}]},"midpoint":{"description":"Median midpoint of the day's high and low in °C (NOAA's `tavg`); not an\naverage of temperatures through the day. Lower 48 states only.","anyOf":[{"type":"number"},{"type":"null"}]}}},"windows":{"description":"When `season_withheld` is `two-seasons`, the two windows its records\nsplit into (data rules `seasonal.md`); otherwise `null`. Added in\n`species/1.9`, so absent from earlier files.","anyOf":[{"type":"array","items":{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"The window's records.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]}]},"minItems":2,"maxItems":2},{"type":"null"}]},"flowering":{"description":"For a plant, the result from its records that show flowers\n(ODR-2026-025); `null` for a species that is not a plant. Added in\n`species/1.8`, so absent from earlier files.","anyOf":[{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"Records that show flowers, counted there.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]},"windows":{"description":"Its two windows when it is `two-seasons`, or `null`. Added in `species/1.9`.","anyOf":[{"type":"array","items":{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"The window's records.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]}]},"minItems":2,"maxItems":2},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]},{"if":{"type":"object","required":["windows"],"properties":{"windows":{"type":"array"}}},"then":{"properties":{"season_withheld":{"const":"two-seasons"}}}}]},{"type":"null"}]},"fruiting":{"description":"For a plant, the result from its records that show fruit\n(ODR-2026-032); `null` for a species that is not a plant. Added in\n`species/1.11`, so absent from earlier files.","anyOf":[{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"Records that show flowers, counted there.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]},"windows":{"description":"Its two windows when it is `two-seasons`, or `null`. Added in `species/1.9`.","anyOf":[{"type":"array","items":{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"The window's records.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]}]},"minItems":2,"maxItems":2},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]},{"if":{"type":"object","required":["windows"],"properties":{"windows":{"type":"array"}}},"then":{"properties":{"season_withheld":{"const":"two-seasons"}}}}]},{"type":"null"}]},"adult":{"description":"For an insect, the result from its records annotated as an adult\n(ODR-2026-032); `null` for a species that is not an insect. Added in\n`species/1.11`, so absent from earlier files.","anyOf":[{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"Records that show flowers, counted there.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]},"windows":{"description":"Its two windows when it is `two-seasons`, or `null`. Added in `species/1.9`.","anyOf":[{"type":"array","items":{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"The window's records.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]}]},"minItems":2,"maxItems":2},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]},{"if":{"type":"object","required":["windows"],"properties":{"windows":{"type":"array"}}},"then":{"properties":{"season_withheld":{"const":"two-seasons"}}}}]},{"type":"null"}]},"larva":{"description":"For an insect, the result from its records annotated as a larva\n(ODR-2026-032); `null` for a species that is not an insect. Pages say\n\"reported as a caterpillar\" for butterflies and moths. Added in\n`species/1.11`, so absent from earlier files.","anyOf":[{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"Records that show flowers, counted there.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]},"windows":{"description":"Its two windows when it is `two-seasons`, or `null`. Added in `species/1.9`.","anyOf":[{"type":"array","items":{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"The window's records.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]}]},"minItems":2,"maxItems":2},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]},{"if":{"type":"object","required":["windows"],"properties":{"windows":{"type":"array"}}},"then":{"properties":{"season_withheld":{"const":"two-seasons"}}}}]},{"type":"null"}]},"male":{"description":"The result from its records reported as male, or `null` without\nsuch records there (ODR-2026-042). Pages say \"reported as male\".\nAdded in `species/1.15`, so absent from earlier files.","anyOf":[{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"Records that show flowers, counted there.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]},"windows":{"description":"Its two windows when it is `two-seasons`, or `null`. Added in `species/1.9`.","anyOf":[{"type":"array","items":{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"The window's records.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]}]},"minItems":2,"maxItems":2},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]},{"if":{"type":"object","required":["windows"],"properties":{"windows":{"type":"array"}}},"then":{"properties":{"season_withheld":{"const":"two-seasons"}}}}]},{"type":"null"}]},"female":{"description":"As `male`, for records reported as female. Added in `species/1.15`.","anyOf":[{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"Records that show flowers, counted there.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]},"windows":{"description":"Its two windows when it is `two-seasons`, or `null`. Added in `species/1.9`.","anyOf":[{"type":"array","items":{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"The window's records.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]}]},"minItems":2,"maxItems":2},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]},{"if":{"type":"object","required":["windows"],"properties":{"windows":{"type":"array"}}},"then":{"properties":{"season_withheld":{"const":"two-seasons"}}}}]},{"type":"null"}]},"signs":{"description":"Per kind of sign with records there, the result from its records\nreported from that sign; `{}` with none. Pages say \"reported from\ngalls\" and so on. Added in `species/1.15`.","type":"object","propertyNames":{"enum":["feather","scat","track","bone","molt","gall","egg","hair","leaf-mine","construction"]},"additionalProperties":{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"type":"integer","minimum":0},"season":{"type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]},"windows":{"anyOf":[{"type":"array","items":{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"type":"integer","minimum":0},"season":{"type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]}]},"minItems":2,"maxItems":2},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]},{"if":{"type":"object","required":["windows"],"properties":{"windows":{"type":"array"}}},"then":{"properties":{"season_withheld":{"const":"two-seasons"}}}}]}},"heard":{"description":"The result from its records with a sound recording, with the hours\nthey were made in, or `null` without such records. Pages say\n\"reported with a sound recording\". Added in `species/1.15`.","anyOf":[{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"Records that show flowers, counted there.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]},"windows":{"description":"Its two windows when it is `two-seasons`, or `null`. Added in `species/1.9`.","anyOf":[{"type":"array","items":{"type":"object","required":["records","season","season_withheld"],"properties":{"records":{"description":"The window's records.","type":"integer","minimum":0},"season":{"description":"Early, middle and late weeks, or empty.","type":"array","items":{"type":"integer","minimum":1,"maximum":53},"maxItems":3},"season_withheld":{"description":"Why `season` is empty, or `null`.","anyOf":[{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]}]},"minItems":2,"maxItems":2},{"type":"null"}]},"hours":{"description":"Record counts for hours 0 to 23, or `null` below the minimum or for a sensitive species.","anyOf":[{"type":"array","items":{"type":"integer","minimum":0},"minItems":24,"maxItems":24},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["too-few-records","year-round","two-seasons","one-year","precision"]}}}]},{"if":{"type":"object","required":["windows"],"properties":{"windows":{"type":"array"}}},"then":{"properties":{"season_withheld":{"const":"two-seasons"}}}}]},{"type":"null"}]},"hours":{"description":"State only: record counts for hours 0 to 23 of local time, from\nrecords that give a time; `null` for a county, below the minimum, or\nfor a species sensitive in the state. When people recorded it, never\nwhen it is active. Added in `species/1.15`.","anyOf":[{"type":"array","items":{"type":"integer","minimum":0},"minItems":24,"maxItems":24},{"type":"null"}]},"months_not_reported":{"description":"State only: month numbers, 1 to 12, with no record in any pooled\nyear (and no FeederWatch report); `[]` when every month is reported,\n`null` for a county. Never absence or migration. Added in\n`species/1.15`.","anyOf":[{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"uniqueItems":true},{"type":"null"}]},"land_cover":{"description":"State only: land cover at its records within 100 m that are not\nobscured; `null` for a county, below the minimum, or for a species\nsensitive in the state. Where records come from, never where it\nlives. Added in `species/1.15`.","anyOf":[{"type":"object","required":["records","groups"],"properties":{"records":{"description":"The records counted.","type":"integer","minimum":0},"groups":{"description":"Largest first: the group and its share of the records counted, in %.","type":"array","items":{"type":"object","required":["group","share"],"properties":{"group":{"description":"A land-cover group, as in region `land_cover`, or `water`.","enum":["forest","farmland","developed","wetland","grassland-shrub","barren","water"]},"share":{"description":"Its share of the records counted, in %, to one decimal.","type":"number","minimum":0,"maximum":100}}}}}},{"type":"null"}]},"look_alikes":{"description":"State only: up to 5 species often confused with it, the state's\nconfusions first; `null` for a county. Added in `species/1.15`.","anyOf":[{"type":"array","items":{"type":"object","required":["species_key","state","worldwide","chosen_by"],"properties":{"species_key":{"description":"The look-alike's species key.","type":"string","pattern":"^[A-Za-z0-9._-]+$"},"state":{"description":"iNaturalist identifications confusing the two in the state.","type":"integer","minimum":0},"worldwide":{"description":"The same, worldwide.","type":"integer","minimum":0},"chosen_by":{"description":"Which count chose it: the state's first, then worldwide.","enum":["state","worldwide"]}}},"maxItems":5},{"type":"null"}]}},"allOf":[{"anyOf":[{"type":"object","properties":{"level":{"const":"state"},"area":{"type":"string","pattern":"^[a-z]{2}-[a-z0-9]{1,3}$"}}},{"type":"object","properties":{"level":{"const":"county"},"area":{"type":"string","pattern":"^\\d{5}$"}}},{"type":"object","properties":{"level":{"const":"watershed"},"area":{"type":"string","pattern":"^huc8-\\d{8}$"}}},{"type":"object","properties":{"level":{"const":"ecoregion"},"area":{"type":"string","pattern":"^eco-\\d+$"}}},{"type":"object","properties":{"level":{"const":"park"},"area":{"type":"string","pattern":"^park-[a-z0-9]+(-[a-z0-9]+)*$"}}},{"type":"object","properties":{"level":{"const":"park-system"},"area":{"type":"string","pattern":"^parks-[a-z0-9]+(-[a-z0-9]+)*$"}}},{"type":"object","properties":{"level":{"const":"urban-area"},"area":{"type":"string","pattern":"^ua-\\d{5}$"}}}]},{"anyOf":[{"type":"object","properties":{"season":{"type":"array","minItems":3},"season_withheld":{"type":"null"}}},{"type":"object","properties":{"season":{"type":"array","maxItems":0},"season_withheld":{"enum":["year-round","two-seasons","one-year","precision"]}}}]},{"if":{"type":"object","required":["windows"],"properties":{"windows":{"type":"array"}}},"then":{"properties":{"season_withheld":{"const":"two-seasons"}}}}]}},"ranges":{"description":"Every area within its mapped range.","type":"array","items":{"type":"object","required":["area","level","source","seasons"],"properties":{"area":{"description":"The area code.","anyOf":[{"type":"string","pattern":"^[a-z]{2}-[a-z0-9]{1,3}$"},{"type":"string","pattern":"^\\d{5}$"},{"type":"string","pattern":"^(huc8-\\d{8}|eco-\\d+|parks?-[a-z0-9]+(-[a-z0-9]+)*|ua-\\d{5})$"}]},"level":{"description":"Whether it is a state or a county.","enum":["state","county"]},"source":{"description":"The range's source ID.","anyOf":[{"type":"string"},{"type":"null"}]},"seasons":{"description":"The range's seasons there.","type":"array","items":{"enum":["year-round","summer","winter","migratory","passage"]}}},"allOf":[{"anyOf":[{"type":"object","properties":{"level":{"const":"state"},"area":{"type":"string","pattern":"^[a-z]{2}-[a-z0-9]{1,3}$"}}},{"type":"object","properties":{"level":{"const":"county"},"area":{"type":"string","pattern":"^\\d{5}$"}}},{"type":"object","properties":{"level":{"const":"watershed"},"area":{"type":"string","pattern":"^huc8-\\d{8}$"}}},{"type":"object","properties":{"level":{"const":"ecoregion"},"area":{"type":"string","pattern":"^eco-\\d+$"}}},{"type":"object","properties":{"level":{"const":"park"},"area":{"type":"string","pattern":"^park-[a-z0-9]+(-[a-z0-9]+)*$"}}},{"type":"object","properties":{"level":{"const":"park-system"},"area":{"type":"string","pattern":"^parks-[a-z0-9]+(-[a-z0-9]+)*$"}}},{"type":"object","properties":{"level":{"const":"urban-area"},"area":{"type":"string","pattern":"^ua-\\d{5}$"}}}]}]}},"statuses":{"description":"The species' listings on government lists: the federal Endangered\nSpecies Act list and Ohio's lists. Empty when it is on none. Added in\n`species/1.1`, so absent from `species/1.0` files.","type":"array","items":{"type":"object","required":["list","place","listed_name","status","where"],"properties":{"list":{"description":"The list: `usfws` (US Fish & Wildlife Service, Endangered Species Act) or `ohio`.","enum":["usfws","ohio"]},"place":{"description":"Where the list applies: `us` for the federal list, a state code for a state list.","type":"string","pattern":"^(us|[a-z]{2}-[a-z0-9]{1,3})$"},"listed_name":{"description":"The scientific name the list gives; it shows when only a subspecies or variety is listed.","type":"string","minLength":1},"status":{"description":"The status, as the list writes it, such as `Endangered`.","type":"string","minLength":1},"where":{"description":"The federal list's own description of where the listing applies, such as `Wherever found`; `null` for a state list.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"list_name":{"description":"The list as the site names it, such as `Ohio's list of endangered and\nthreatened wild animals`. Added in `species/1.6`, so absent from earlier\nfiles.","type":"string","minLength":1},"keeper":{"description":"Who keeps the list, such as `Ohio Division of Wildlife`. Added in `species/1.6`.","type":"string","minLength":1},"edition":{"description":"The edition used: the month the federal list was read, such as\n`October 2026`, or the state list's own edition, such as `June 2026`.\nAdded in `species/1.6`.","type":"string","minLength":1}}}},"concerns":{"description":"Each time Ohio names the species, or a subspecies or variety of it, as\na species of concern or of special interest (ODR-2026-041). Neither is\na listing, and neither makes records sensitive. Empty when none\napplies. Added in `species/1.13`, so absent from earlier files.","type":"array","items":{"type":"object","required":["list","place","listed_name","category","list_name","keeper","edition"],"properties":{"list":{"description":"The list: `ohio`.","const":"ohio"},"place":{"description":"Where it applies: the state's code.","type":"string","pattern":"^[a-z]{2}-[a-z0-9]{1,3}$"},"listed_name":{"description":"The scientific name the publication gives.","type":"string","minLength":1},"category":{"description":"`species of concern` or `special interest`.","enum":["species of concern","special interest"]},"list_name":{"description":"The publication, such as `Ohio's Listed Species`.","type":"string","minLength":1},"keeper":{"description":"Who keeps it, such as `Ohio Division of Wildlife`.","type":"string","minLength":1},"edition":{"description":"Its edition, such as `June 2026`.","type":"string","minLength":1}}}},"recorded_in":{"description":"The counties, in area-code order, where the species has records counted\ntoward a result but no county result of its own, because they fall\nshort of the minimum in `seasonal.md`. It says only that the species was\nrecorded there, never how many records or when. Empty in a state where\nthe species is sensitive. Added in `species/1.14`, so absent from\nearlier files.","type":"array","items":{"type":"string","pattern":"^\\d{5}$"}},"introductions":{"description":"The species' US-RIIS listings in the lower 48 states: introduced, or\nintroduced and assessed as invasive. Empty when it is not listed, which\nnever means native. Added in `species/1.2`, so absent from earlier files.","type":"array","items":{"type":"object","required":["source","region","listed_name","status"],"properties":{"source":{"description":"The list: `us-riis-l48-v2` (US-RIIS ver. 2.0, conterminous 48 states);\nfrom `species/1.12` (ODR-2026-039), `inaturalist-checklist`\n(iNaturalist's state checklist, status `introduced` only),\n`oh-oda-invasive-plants` (Ohio Department of Agriculture, OAC\n901:5-30-01) and `oh-odnr-aquatic-invasive` (ODNR, OAC 1501:31-19-01),\nboth status `invasive`.","enum":["us-riis-l48-v2","inaturalist-checklist","oh-oda-invasive-plants","oh-odnr-aquatic-invasive"]},"region":{"description":"Where the listing applies: `us-l48`, the 48 conterminous states and DC;\n`us-oh`, Ohio only (from `species/1.12`).","enum":["us-l48","us-oh"]},"listed_name":{"description":"The scientific name the list gives; it shows when only a subspecies or variety is listed.","type":"string","minLength":1},"status":{"description":"`introduced`, or `invasive`: causing, or likely to cause, harm there.","enum":["introduced","invasive"]}}}},"inaturalist_taxon_id":{"description":"The species' iNaturalist taxon ID, or `null` when it has none. Added in\n`species/1.3`, so absent from earlier files.","anyOf":[{"type":"integer","minimum":1},{"type":"null"}]},"photo":{"description":"The species' photo, or `null` when it has none. Added in `species/1.4`,\nso absent from earlier files.","anyOf":[{"type":"object","required":["id","source","sizes","credit","licence","licence_url","url"],"properties":{"id":{"description":"`inat-` and the iNaturalist photo ID.","type":"string","pattern":"^inat-\\d+$"},"source":{"description":"Where it was chosen from: the default photo, a taxon photo, or an observation photo.","enum":["default","taxon","observation"]},"sizes":{"description":"Per role the photo was cut to, the widths made, smallest first.","type":"object","propertyNames":{"enum":["hero","feature","species","card","thumb","social"]},"additionalProperties":{"type":"array","items":{"type":"integer","minimum":1},"minItems":1}},"credit":{"description":"The credit iNaturalist gives, word for word; show it with the photo.","type":"string","minLength":1},"licence":{"description":"The licence's SPDX identifier, such as `CC-BY-NC-4.0`, or `CC0-1.0` or `PDM`.","type":"string","minLength":1},"licence_url":{"description":"The licence's address.","type":"string","minLength":1},"url":{"description":"The photo's page on iNaturalist.","type":"string","minLength":1}}},{"type":"null"}]},"part_photos":{"description":"A photo for each stage, sex or kind of sign with a result, from a\nrecord annotated with it; `{}` for a species sensitive anywhere it is\nshown. Added in `species/1.15`, so absent from earlier files.","type":"object","propertyNames":{"enum":["flowering","fruiting","adult","larva","male","female","feather","scat","track","bone","molt","gall","egg","hair","leaf-mine","construction"]},"additionalProperties":{"type":"object","required":["id","source","sizes","credit","licence","licence_url","url"],"properties":{"id":{"type":"string","pattern":"^inat-\\d+$"},"source":{"enum":["default","taxon","observation"]},"sizes":{"type":"object","propertyNames":{"enum":["hero","feature","species","card","thumb","social"]},"additionalProperties":{"type":"array","items":{"type":"integer","minimum":1},"minItems":1}},"credit":{"type":"string","minLength":1},"licence":{"type":"string","minLength":1},"licence_url":{"type":"string","minLength":1},"url":{"type":"string","minLength":1}}}},"below_species":{"description":"Per state with a result, the taxa below species that its records were\nidentified to: names only, never counts, never per county. Empty when\nnone of a state's records go below species. Added in `species/1.5`, so\nabsent from earlier files.","type":"array","items":{"type":"object","required":["area","taxa","other_below_species"],"properties":{"area":{"description":"The state's code.","type":"string","pattern":"^[a-z]{2}-[a-z0-9]{1,3}$"},"taxa":{"description":"Each subspecies, variety or form with at least 5 of the state's records, by scientific name.","type":"array","items":{"type":"object","required":["taxon_key","scientific_name","rank","common_name"],"properties":{"taxon_key":{"description":"The taxon key in the shared taxonomy.","type":"string","pattern":"^[A-Za-z0-9._-]+$"},"scientific_name":{"description":"The scientific name, with its rank marker, such as `subsp.`.","type":"string","minLength":1},"rank":{"description":"The rank.","enum":["subspecies","variety","form"]},"common_name":{"description":"The display name, or `null`.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]}}}},"other_below_species":{"description":"True when other records went below species but their taxon is not listed.","type":"boolean"}}}}}}},"allOf":[{"if":{"type":"object","properties":{"format":{"enum":["species/1.0"]}}},"else":{"type":"object","properties":{"data":{"type":"object","properties":{"statuses":true},"required":["statuses"]}}}},{"if":{"type":"object","properties":{"format":{"enum":["species/1.0","species/1.1"]}}},"else":{"type":"object","properties":{"data":{"type":"object","properties":{"introductions":true},"required":["introductions"]}}}},{"if":{"type":"object","properties":{"format":{"enum":["species/1.0","species/1.1","species/1.2"]}}},"else":{"type":"object","properties":{"data":{"type":"object","properties":{"inaturalist_taxon_id":true},"required":["inaturalist_taxon_id"]}}}},{"if":{"type":"object","properties":{"format":{"enum":["species/1.0","species/1.1","species/1.2","species/1.3"]}}},"else":{"type":"object","properties":{"data":{"type":"object","properties":{"photo":true},"required":["photo"]}}}},{"if":{"type":"object","properties":{"format":{"enum":["species/1.0","species/1.1","species/1.2","species/1.3","species/1.4"]}}},"else":{"type":"object","properties":{"data":{"type":"object","properties":{"below_species":true},"required":["below_species"]}}}},{"if":{"type":"object","properties":{"format":{"enum":["species/1.0","species/1.1","species/1.2","species/1.3","species/1.4","species/1.5","species/1.6","species/1.7","species/1.8","species/1.9","species/1.10","species/1.11","species/1.12"]}}},"else":{"type":"object","properties":{"data":{"type":"object","properties":{"concerns":true},"required":["concerns"]}}}},{"if":{"type":"object","properties":{"format":{"enum":["species/1.0","species/1.1","species/1.2","species/1.3","species/1.4","species/1.5","species/1.6","species/1.7","species/1.8","species/1.9","species/1.10","species/1.11","species/1.12","species/1.13"]}}},"else":{"type":"object","properties":{"data":{"type":"object","properties":{"recorded_in":true},"required":["recorded_in"]}}}},{"if":{"type":"object","properties":{"format":{"enum":["species/1.0","species/1.1","species/1.2","species/1.3","species/1.4","species/1.5","species/1.6","species/1.7","species/1.8","species/1.9","species/1.10","species/1.11","species/1.12","species/1.13","species/1.14"]}}},"else":{"type":"object","properties":{"data":{"type":"object","properties":{"part_photos":true},"required":["part_photos"]}}}}]}}