Skip to content

Instantly share code, notes, and snippets.

@joshtwist
Created July 6, 2025 12:34
Show Gist options
  • Save joshtwist/7cdad417351318d50509a63f51a96b61 to your computer and use it in GitHub Desktop.
Save joshtwist/7cdad417351318d50509a63f51a96b61 to your computer and use it in GitHub Desktop.
{
"openapi": "3.1.0",
"info": {
"version": "1.0.0",
"title": "SupaWeather API",
"description": "The SupaWeather API provides comprehensive weather data and forecasts for locations worldwide. Get real-time weather conditions, extended forecasts, and geocoding services.",
"contact": {
"name": "SupaWeather API Support",
"email": "[email protected]"
}
},
"servers": [
{
"url": "https://supaweather-backend-main-c9815e5.akamai-summer-2025-keynote-demo-poc.zuplo.work",
"description": "Production server"
}
],
"paths": {
"/weather/current": {
"get": {
"summary": "Get Current Weather",
"description": "Returns current weather data for a specified coordinate",
"operationId": "get_current_weather",
"tags": ["Weather"],
"parameters": [
{
"name": "lat",
"in": "query",
"description": "Latitude coordinate",
"required": true,
"schema": {
"type": "number",
"example": 51.42212
}
},
{
"name": "lon",
"in": "query",
"description": "Longitude coordinate",
"required": true,
"schema": {
"type": "number",
"example": -0.20805
}
}
],
"responses": {
"200": {
"description": "Successful response with current weather data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WeatherData"
}
}
}
}
}
}
},
"/weather/stations": {
"get": {
"summary": "Get Weather Stations",
"description": "Returns weather station data (not yet implemented)",
"operationId": "get_weather_stations",
"tags": ["Weather"],
"responses": {
"200": {
"description": "Returns 'not yet implemented'"
}
}
}
},
"/weather/forecast": {
"get": {
"summary": "Get 16-Day Weather Forecast",
"description": "Returns weather forecast data for the next 16 days for specified coordinates",
"operationId": "get_weather_forecast",
"tags": ["Weather"],
"parameters": [
{
"name": "lat",
"in": "query",
"description": "Latitude coordinate",
"required": true,
"schema": {
"type": "number",
"example": 51.42212
}
},
{
"name": "lon",
"in": "query",
"description": "Longitude coordinate",
"required": true,
"schema": {
"type": "number",
"example": -0.20805
}
}
],
"responses": {
"200": {
"description": "Successful response with 16-day forecast data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Forecast"
}
}
}
}
}
}
},
"/weather/forecast/marine": {
"get": {
"summary": "Get Marine Weather Forecast",
"description": "Gets specialized weather forecast for marine and coastal areas (not yet implemented)",
"operationId": "get_weather_forecast_marine",
"tags": ["Weather"],
"responses": {
"200": {
"description": "Returns 'not yet implemented'"
}
}
}
},
"/weather/historical": {
"get": {
"summary": "Access Historical Weather Data",
"description": "Access historical weather data for any location dating back to 1979 (not yet implemented)",
"operationId": "get_weather_historical",
"tags": ["Weather"],
"responses": {
"200": {
"description": "Returns 'not yet implemented'"
}
}
}
},
"/weather/historical/summary": {
"get": {
"summary": "Get Statistical Climate Summaries",
"description": "Get statistical climate summaries including monthly averages, extremes, and climate normals (not yet implemented)",
"operationId": "get_weather_historical_summary",
"tags": ["Weather"],
"responses": {
"200": {
"description": "Returns 'not yet implemented'"
}
}
}
},
"/weather/alerts": {
"get": {
"summary": "Retrieve Active Weather Alerts",
"description": "Retrieve active weather alerts and warnings for a specific region (not yet implemented)",
"operationId": "get_weather_alerts",
"tags": ["Weather"],
"responses": {
"200": {
"description": "Returns 'not yet implemented'"
}
}
}
},
"/weather/alerts/subscribe": {
"get": {
"summary": "Subscribe to Weather Alerts",
"description": "Create a subscription to receive weather alerts for specific locations (not yet implemented)",
"operationId": "subscribe_weather_alerts",
"tags": ["Weather"],
"responses": {
"200": {
"description": "Returns 'not yet implemented'"
}
}
}
},
"/weather/radar": {
"get": {
"summary": "Access Weather Radar Imagery",
"description": "Access weather radar imagery and precipitation maps (not yet implemented)",
"operationId": "get_weather_radar",
"tags": ["Weather"],
"responses": {
"200": {
"description": "Returns 'not yet implemented'"
}
}
}
},
"/weather/maps/satellite": {
"get": {
"summary": "Access Satellite Images",
"description": "Access real-time satellite images showing cloud cover and atmospheric conditions (not yet implemented)",
"operationId": "get_weather_maps_satellite",
"tags": ["Weather"],
"responses": {
"200": {
"description": "Returns 'not yet implemented'"
}
}
}
},
"/geocoding/search": {
"get": {
"summary": "Convert Location Names to Coordinates",
"description": "Convert city names to geographic coordinates (latitude and longitude)",
"operationId": "search_geocoding",
"tags": ["Geocoding"],
"parameters": [
{
"name": "city",
"in": "query",
"description": "City name to get coordinates for",
"required": true,
"schema": {
"type": "string",
"example": "Wimbledon"
}
}
],
"responses": {
"200": {
"description": "Successful response with location coordinates",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GeocodingResult"
},
"example": {
"name": "Wimbledon",
"lat": 51.42212,
"lon": -0.20805,
"country": "United Kingdom"
}
}
}
}
}
}
},
"/geocoding/reverse": {
"get": {
"summary": "Convert Coordinates to Location Names",
"description": "Convert geographic coordinates to location names (not yet implemented)",
"operationId": "reverse_geocoding",
"tags": ["Geocoding"],
"responses": {
"200": {
"description": "Returns 'not yet implemented'"
}
}
}
}
},
"components": {
"schemas": {
"WeatherData": {
"type": "object",
"description": "Complete weather data for a specific time and location",
"properties": {
"cloudCeiling": {
"type": "number",
"description": "Cloud ceiling height in feet",
"example": 800
},
"cloudCoverPhrase": {
"type": "string",
"description": "Descriptive phrase for cloud cover",
"example": "Partly Cloudy"
},
"dayOrNight": {
"type": "string",
"description": "Indicates day (D) or night (N)",
"enum": ["D", "N"],
"example": "D"
},
"iconCode": {
"type": "number",
"description": "Weather icon code",
"example": 26
},
"iconCodeExtend": {
"type": "number",
"description": "Extended weather icon code",
"example": 2600
},
"precip1Hour": {
"type": "number",
"description": "Precipitation in the last hour (inches)",
"example": 0
},
"precip6Hour": {
"type": "number",
"description": "Precipitation in the last 6 hours (inches)",
"example": 0
},
"precip24Hour": {
"type": "number",
"description": "Precipitation in the last 24 hours (inches)",
"example": 0.05
},
"pressureAltimeter": {
"type": "number",
"description": "Atmospheric pressure (inHg)",
"example": 30.14
},
"pressureChange": {
"type": "number",
"description": "Pressure change",
"example": 0.05
},
"pressureMeanSeaLevel": {
"type": "number",
"description": "Mean sea level pressure (mb)",
"example": 1018.6
},
"pressureTendencyCode": {
"type": "number",
"description": "Pressure tendency code",
"example": 1
},
"pressureTendencyTrend": {
"type": "string",
"description": "Pressure tendency description",
"example": "Rising"
},
"relativeHumidity": {
"type": "number",
"description": "Relative humidity percentage",
"example": 95
},
"snow1Hour": {
"type": "number",
"description": "Snowfall in the last hour (inches)",
"example": 0
},
"snow6Hour": {
"type": "number",
"description": "Snowfall in the last 6 hours (inches)",
"example": 0
},
"snow24Hour": {
"type": "number",
"description": "Snowfall in the last 24 hours (inches)",
"example": 0
},
"temperature": {
"type": "number",
"description": "Current temperature (Fahrenheit)",
"example": 38
},
"temperatureChange24Hour": {
"type": "number",
"description": "Temperature change in last 24 hours",
"example": -2
},
"temperatureDewPoint": {
"type": "number",
"description": "Dew point temperature (Fahrenheit)",
"example": 37
},
"temperatureFeelsLike": {
"type": "number",
"description": "Feels like temperature (Fahrenheit)",
"example": 38
},
"temperatureHeatIndex": {
"type": "number",
"description": "Heat index temperature (Fahrenheit)",
"example": 38
},
"temperatureMax24Hour": {
"type": "number",
"description": "Maximum temperature in last 24 hours (Fahrenheit)",
"example": 42
},
"temperatureMaxSince7Am": {
"type": "number",
"description": "Maximum temperature since 7 AM (Fahrenheit)",
"example": 38
},
"temperatureMin24Hour": {
"type": "number",
"description": "Minimum temperature in last 24 hours (Fahrenheit)",
"example": 36
},
"temperatureWindChill": {
"type": "number",
"description": "Wind chill temperature (Fahrenheit)",
"example": 38
},
"uvDescription": {
"type": "string",
"description": "UV index description",
"example": "Low"
},
"uvIndex": {
"type": "number",
"description": "UV index value",
"example": 1
},
"visibility": {
"type": "number",
"description": "Visibility in miles",
"example": 10
},
"windDirection": {
"type": "number",
"description": "Wind direction in degrees",
"example": 110
},
"windDirectionCardinal": {
"type": "string",
"description": "Wind direction as cardinal direction",
"example": "ESE"
},
"windGust": {
"type": ["number", "null"],
"description": "Wind gust speed (mph)",
"example": null
},
"windSpeed": {
"type": "number",
"description": "Wind speed (mph)",
"example": 2
},
"PhraseLong": {
"type": "string",
"description": "Long weather description",
"example": "Partly Cloudy"
},
"PhraseMedium": {
"type": "string",
"description": "Medium weather description",
"example": "Partly Cloudy"
},
"PhraseShort": {
"type": "string",
"description": "Short weather description",
"example": "P Cloudy"
}
}
},
"Forecast": {
"type": "object",
"description": "Weather forecast for 16 days",
"properties": {
"0": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 0 (today) weather data"
},
"1": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 1 weather data"
},
"2": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 2 weather data"
},
"3": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 3 weather data"
},
"4": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 4 weather data"
},
"5": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 5 weather data"
},
"6": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 6 weather data"
},
"7": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 7 weather data"
},
"8": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 8 weather data"
},
"9": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 9 weather data"
},
"10": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 10 weather data"
},
"11": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 11 weather data"
},
"12": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 12 weather data"
},
"13": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 13 weather data"
},
"14": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 14 weather data"
},
"15": {
"$ref": "#/components/schemas/WeatherData",
"description": "Day 15 weather data"
}
},
"required": [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15"
]
},
"GeocodingResult": {
"type": "object",
"description": "Geocoding result with location coordinates",
"properties": {
"name": {
"type": "string",
"description": "Location name",
"example": "Wimbledon"
},
"lat": {
"type": "number",
"description": "Latitude coordinate",
"example": 51.42212
},
"lon": {
"type": "number",
"description": "Longitude coordinate",
"example": -0.20805
},
"country": {
"type": "string",
"description": "Country name",
"example": "United Kingdom"
}
},
"required": ["name", "lat", "lon", "country"]
}
}
},
"tags": [
{
"name": "Weather",
"description": "Weather data endpoints"
},
{
"name": "Geocoding",
"description": "Location geocoding services"
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment