{"files":{"SKILL.md":"---\nname: weatherbit-interactive-swagger-ui-documentation\ndescription: \"Weatherbit - Interactive Swagger UI Documentation API skill. Use when working with Weatherbit - Interactive Swagger UI Documentation for alerts, current, history. Covers 18 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Weatherbit - Interactive Swagger UI Documentation\nAPI version: 2.0.0\n\n## Auth\nApiKey key in query\n\n## Base URL\nhttps://api.weatherbit.io/v2.0\n\n## Setup\n1. Set your API key in the appropriate header\n2. GET /alerts -- returns severe weather alerts issued by meteorological agencies - given a lat/lon.\n3. Explore available endpoints below\n\n## Endpoints\n18 endpoints across 5 groups. See references/api-spec.lap for full details.\n\n### Alerts\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /alerts | Returns severe weather alerts issued by meteorological agencies - Given a lat/lon. |\n\n### Current\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /current | Returns a Current Observation - Given a lat/lon. |\n| GET | /current/lightning | Returns nearest and most recent lightning observations - Given a lat/lon. |\n| GET | /current/airquality | Returns current air quality conditions - Given a geolocation. |\n\n### History\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /history/lightning | Returns lightning data by lat/lon from a given date. |\n| GET | /history/airquality | Returns 72 hours of historical air quality conditions - Given a geolocation. |\n| GET | /history/agweather | Returns Historical Agweather - Given a lat/lon. |\n| GET | /history/daily | Returns Historical Observations - Given a lat/lon. |\n| GET | /history/hourly | Returns Historical Observations - Given a lat/lon. |\n| GET | /history/subhourly | Returns Historical Observations - Given a lat/lon. |\n| GET | /history/energy | Returns Energy API response  - Given a single lat/lon. |\n\n### Forecast\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /forecast/daily | Returns a daily forecast - Given Lat/Lon. |\n| GET | /forecast/minutely | Returns a 60 minute precipitation forecast - Given Lat/Lon. |\n| GET | /forecast/airquality | Returns 72 hour (hourly) Air Quality forecast - Given a geolocation. |\n| GET | /forecast/hourly | Returns an hourly forecast - Given a lat/lon. |\n| GET | /forecast/agweather | Returns Agweather Forecast - Given a lat/lon. |\n| GET | /forecast/energy | Returns Energy Forecast API response  - Given a single lat/lon. |\n\n### Normals\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /normals | Returns Historical Climate Normals (Averages) - Given a lat/lon. |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"List all alerts?\" -> GET /alerts\n- \"List all current?\" -> GET /current\n- \"List all lightning?\" -> GET /history/lightning\n- \"List all daily?\" -> GET /forecast/daily\n- \"List all minutely?\" -> GET /forecast/minutely\n- \"List all airquality?\" -> GET /forecast/airquality\n- \"List all hourly?\" -> GET /forecast/hourly\n- \"List all agweather?\" -> GET /forecast/agweather\n- \"List all normals?\" -> GET /normals\n- \"List all subhourly?\" -> GET /history/subhourly\n- \"List all energy?\" -> GET /forecast/energy\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Paginated endpoints accept limit/offset or cursor parameters\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Weatherbit - Interactive Swagger UI Documentation\n@base https://api.weatherbit.io/v2.0\n@version 2.0.0\n@auth ApiKey key in query\n@common_fields {key: any # Your registered API key., lat: any # Latitude component of location., lon: any # Longitude component of location.}\n@endpoints 18\n@toc alerts(1), current(3), history(7), forecast(6), normals(1)\n\n@group alerts\n@endpoint GET /alerts\n@desc Returns severe weather alerts issued by meteorological agencies - Given a lat/lon.\n@optional {city_id: any # City ID. Example: 4487042, city: any # City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR, postal_code: any # Postal Code. Example: 28546, country: any # Country Code (2 letter) - to be used with postal_code., station: any # Station Call ID.}\n@returns(200) Weather Alert Object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group current\n@endpoint GET /current\n@desc Returns a Current Observation - Given a lat/lon.\n@optional {include: any # Include 1 hour - minutely precip forecast in the response, or severe weather alerts, city_id: any # City ID. Example: 4487042, city: any # City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR, postal_code: any # Postal Code. Example: 28546, country: any # Country Code (2 letter) - to be used with postal_code., station: any # Station Call ID., stations: any # Comma separated list of Station Call ID's. Example: KRDU,KBFI,KVNY, points: any # Comma separated list of points. Example: (35.5, -75.5),(45, 65),(45.12, -130.5), cities: any # Comma separated list of City ID's. Example: 4487042, 4494942, 4504871, units: any # Convert to units. Default Metric See units field description, lang: any # Language (Default: English) See language field description}\n@returns(200) An Observation Group object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group history\n@endpoint GET /history/lightning\n@desc Returns lightning data by lat/lon from a given date.\n@required {date: any # Date to retrieve data for. (YYYY-MM-DD)}\n@optional {limit: any # Limit result lightning. (Default 1500, Max 2500), skip: any # Number of results to skip in response. (Offset), search_distance_km: any # Radial search distance from point in KM. (Default 20 KM - Max 75 KM), sort: any # Sort results by either most recent occurrence, or least distance from point. (Default distance), output_type: any # Data type of reponse JSON or GeoJSON. Default JSON., tz: any # Assumed timezone option to use for date parameter. Default is local.}\n@returns(200) Lightning data.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group current\n@endpoint GET /current/lightning\n@desc Returns nearest and most recent lightning observations - Given a lat/lon.\n@optional {limit: any # Limit result lightning. (Default 20), skip: any # Number of results to skip in response. (Offset), search_distance_km: any # Radial search distance from point in KM. (Default 20 KM - Max 75 KM), search_mins: any # Search time backwards from current time in minutes. (Default 30 minutes - Max 45 minutes), sort: any # Sort results by either most recent occurrence, or least distance from point. (Default distance), output_type: any # Data type of reponse JSON or GeoJSON. Default JSON.}\n@returns(200) Lightning data.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group forecast\n@endpoint GET /forecast/daily\n@desc Returns a daily forecast - Given Lat/Lon.\n@optional {city_id: any # City ID. Example: 4487042, city: any # City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR, postal_code: any # Postal Code. Example: 28546, country: any # Country Code (2 letter) - to be used with postal_code., station: any # Station Call ID., days: any # Number of days to return. Default 16., units: any # Convert to units. Default Metric See units field description, lang: any # Language (Default: English) See language field description}\n@returns(200) A forecast object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endpoint GET /forecast/minutely\n@desc Returns a 60 minute precipitation forecast - Given Lat/Lon.\n@optional {city_id: any # City ID. Example: 4487042, city: any # City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR, postal_code: any # Postal Code. Example: 28546, country: any # Country Code (2 letter) - to be used with postal_code., station: any # Station Call ID., units: any # Convert to units. Default Metric See units field description}\n@returns(200) A forecast object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endpoint GET /forecast/airquality\n@desc Returns 72 hour (hourly) Air Quality forecast - Given a geolocation.\n@optional {city_id: any # City ID. Example: 4487042, city: any # City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR, postal_code: any # Postal Code. Example: 28546, country: any # Country Code (2 letter) - to be used with postal_code., hours: any # Number of hours to return.}\n@returns(200) A forecast object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group history\n@endpoint GET /history/airquality\n@desc Returns 72 hours of historical air quality conditions - Given a geolocation.\n@optional {city_id: any # City ID. Example: 4487042, city: any # City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR, postal_code: any # Postal Code. Example: 28546, country: any # Country Code (2 letter) - to be used with postal_code.}\n@returns(200) Historical air quality conditions\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group current\n@endpoint GET /current/airquality\n@desc Returns current air quality conditions - Given a geolocation.\n@optional {city_id: any # City ID. Example: 4487042, city: any # City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR, postal_code: any # Postal Code. Example: 28546, country: any # Country Code (2 letter) - to be used with postal_code.}\n@returns(200) Current air quality conditions\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group forecast\n@endpoint GET /forecast/hourly\n@desc Returns an hourly forecast - Given a lat/lon.\n@optional {city_id: any # City ID. Example: 4487042, city: any # City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR, postal_code: any # Postal Code. Example: 28546, country: any # Country Code (2 letter) - to be used with postal_code., station: any # Station Call ID., units: any # Convert to units. Default Metric See units field description, lang: any # Language (Default: English) See language field description, hours: any # Number of hours to return.}\n@returns(200) A forecast object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endpoint GET /forecast/agweather\n@desc Returns Agweather Forecast - Given a lat/lon.\n@required {start_date: any # Start Date (YYYY-MM-DD or YYYY-MM-DD:HH)., end_date: any # End Date (YYYY-MM-DD or YYYY-MM-DD:HH).}\n@optional {units: any # Convert to units. Default Metric See units field description}\n@returns(200) An AGWeather Forecast Data Object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group history\n@endpoint GET /history/agweather\n@desc Returns Historical Agweather - Given a lat/lon.\n@required {start_date: any # Start Date (YYYY-MM-DD or YYYY-MM-DD:HH)., end_date: any # End Date (YYYY-MM-DD or YYYY-MM-DD:HH)., tp: any # Time period of calculation (daily [DEFAULT], or hourly).}\n@optional {units: any # Convert to units. Default Metric See units field description}\n@returns(200) An AGWeather Historical Data Object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group normals\n@endpoint GET /normals\n@desc Returns Historical Climate Normals (Averages) - Given a lat/lon.\n@required {start_day: any # Start Day (MM-DD)., end_day: any # End Day (MM-DD)., tp: any # Time period of calculation (daily, monthly, or hourly)., series_year: any # Series year for calculation. 2020 for 1991-2020. 2010 for 1981-2010.}\n@optional {units: any # Convert to units. Default Metric See units field description}\n@returns(200) An Normals Data Object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group history\n@endpoint GET /history/daily\n@desc Returns Historical Observations - Given a lat/lon.\n@required {start_date: any # Start Date (YYYY-MM-DD or YYYY-MM-DD:HH)., end_date: any # End Date (YYYY-MM-DD or YYYY-MM-DD:HH).}\n@optional {city_id: any # City ID. Example: 4487042, city: any # City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR, postal_code: any # Postal Code. Example: 28546, country: any # Country Code (2 letter) - to be used with postal_code., station: any # Station Call ID., units: any # Convert to units. Default Metric See units field description, lang: any # Language (Default: English) See language field description}\n@returns(200) An Historical Day Data Object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endpoint GET /history/hourly\n@desc Returns Historical Observations - Given a lat/lon.\n@required {start_date: any # Start Date (YYYY-MM-DD or YYYY-MM-DD:HH)., end_date: any # End Date (YYYY-MM-DD or YYYY-MM-DD:HH).}\n@optional {city_id: any # City ID. Example: 4487042, city: any # City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR, postal_code: any # Postal Code. Example: 28546, country: any # Country Code (2 letter) - to be used with postal_code., station: any # Station Call ID., units: any # Convert to units. Default Metric See units field description, lang: any # Language (Default: English) See language field description, tz: any # Assume utc (default) or local time for start_date, end_date}\n@returns(200) An Historical Data Object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endpoint GET /history/subhourly\n@desc Returns Historical Observations - Given a lat/lon.\n@required {start_date: any # Start Date (YYYY-MM-DD or YYYY-MM-DD:HH)., end_date: any # End Date (YYYY-MM-DD or YYYY-MM-DD:HH).}\n@optional {city_id: any # City ID. Example: 4487042, city: any # City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR, postal_code: any # Postal Code. Example: 28546, country: any # Country Code (2 letter) - to be used with postal_code., station: any # Station Call ID., units: any # Convert to units. Default Metric See units field description, lang: any # Language (Default: English) See language field description, tz: any # Assume utc (default) or local time for start_date, end_date}\n@returns(200) An Historical Data Object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group forecast\n@endpoint GET /forecast/energy\n@desc Returns Energy Forecast API response  - Given a single lat/lon.\n@optional {threshold: any # Temperature threshold to use to calculate degree days (default 18 C), units: any # Convert to units. Default Metric See units field description, tp: any # Time period (default: daily)}\n@returns(200) An Energy Data Object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@group history\n@endpoint GET /history/energy\n@desc Returns Energy API response  - Given a single lat/lon.\n@required {start_date: any # Start Date (YYYY-MM-DD or YYYY-MM-DD:HH)., end_date: any # End Date (YYYY-MM-DD or YYYY-MM-DD:HH).}\n@optional {tp: any # Time period to aggregate by (daily, monthly), threshold: any # Temperature threshold to use to calculate degree days (default 18 C), units: any # Convert to units. Default Metric See units field description}\n@returns(200) An Energy Data Object.\n@returns(204) No Data Found\n@errors {400: Client Error, 403: Unauthorized/No Access for current plan level, 429: Daily or Velocity limit exceeded, 500: Internal Server Error}\n\n@endgroup\n\n@end\n"}}