changedInput schema / properties / parkCode / description
Previous value: -"Park code, or comma-separated list (e.g. \"yell\"). Get codes from nps_find_parks. Provide parkCode or stateCode."New value: +"Park code, or comma-separated list (e.g. \"yell\") — 4-letter lowercase codes. Get codes from nps_find_parks. Provide parkCode or stateCode."
removedInput schema / properties / parkCode / pattern
Removed value: -"^[a-z]{4}(,[a-z]{4})*$"
changedInput schema / properties / stateCode / description
Previous value: -"Two-letter state code, or comma-separated list. Returns events across NPS sites in those states."New value: +"Two-letter state code, or comma-separated list (e.g. \"WY\", \"WY,MT,ID\"). Returns events across NPS sites in those states."
removedInput schema / properties / stateCode / pattern
Removed value: -"^[A-Za-z]{2}(,[A-Za-z]{2})*$"
changedOutput schema / properties / events / items / properties / dateEnd / description
Previous value: -"Event end date (YYYY-MM-DD), or null."New value: +"Event end date (YYYY-MM-DD), or null. For a recurring event this is the anchor date, not the last occurrence — see occurrenceDates and isRecurring."
changedOutput schema / properties / events / items / properties / dateStart / description
Previous value: -"Event start date (YYYY-MM-DD), or null."New value: +"Event start date (YYYY-MM-DD), or null. For a recurring event this is the series anchor (its original first date), which can predate your requested window — use occurrenceDates for the dates that actually fall in the window."
addedOutput schema / properties / events / items / properties / isRecurring
Added value: +{
+ "description": "True when this is a recurring series (multiple occurrence dates). Explains why dateStart/dateEnd may show a single frozen anchor date while occurrenceDates carries the real dates.",
+ "type": "boolean"
+}
addedOutput schema / properties / events / items / properties / occurrenceDates
Added value: +{
+ "description": "Occurrence dates (YYYY-MM-DD) that fall within the requested dateStart/dateEnd window. When no date window is requested, this lists every remaining occurrence from today through the series end. Empty when the window matches no occurrence. Trust this for \"when does this actually happen?\" — dateStart/dateEnd above are the record's anchor and can be stale for a long-running recurring series.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+}
changedOutput schema / properties / events / items / required
Previous value: -[
- "id",
- "title",
- "parkCode",
- "description",
- "location",
- "dateStart",
- "dateEnd",
- "times",
- "category",
- "isFree",
- "feeInfo",
- "registrationUrl",
- "infoUrl"
-]New value: +[
+ "id",
+ "title",
+ "parkCode",
+ "description",
+ "location",
+ "dateStart",
+ "dateEnd",
+ "occurrenceDates",
+ "isRecurring",
+ "times",
+ "category",
+ "isFree",
+ "feeInfo",
+ "registrationUrl",
+ "infoUrl"
+]