@apifreaks/openapi-specs 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +156 -0
- package/dist/index.cjs +44663 -0
- package/dist/index.d.cts +30 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +44631 -0
- package/package.json +81 -0
- package/specs/commodity/commodity-fluctuation.json +301 -0
- package/specs/commodity/commodity-prices.json +317 -0
- package/specs/commodity/commodity-symbols.json +215 -0
- package/specs/commodity/commodity-time-series.json +329 -0
- package/specs/commodity/historical-commodity-prices.json +273 -0
- package/specs/currency/currency-converter.json +261 -0
- package/specs/currency/currency-fluctuation.json +282 -0
- package/specs/currency/currency-historical-data-limit.json +158 -0
- package/specs/currency/currency-rate.json +229 -0
- package/specs/currency/currency-supported.json +234 -0
- package/specs/currency/currency-symbols.json +161 -0
- package/specs/currency/currency-time-series.json +325 -0
- package/specs/currency/geolocalized-currency-conversion.json +287 -0
- package/specs/currency/historical-currency-converter.json +269 -0
- package/specs/currency/historical-currency-rate.json +246 -0
- package/specs/dns/bulk-dns-lookup.json +624 -0
- package/specs/dns/dns-history-lookup.json +579 -0
- package/specs/dns/dns-lookup.json +466 -0
- package/specs/dns/reverse-dns-lookup.json +414 -0
- package/specs/domain/bulk-domain-checker.json +284 -0
- package/specs/domain/domain-search-with-suggestions.json +280 -0
- package/specs/domain/domain-search.json +206 -0
- package/specs/domain/subdomain-lookup.json +343 -0
- package/specs/email-validation/bulk-email-validation.json +534 -0
- package/specs/email-validation/email-checker.json +586 -0
- package/specs/financial/bulk-vat-rates-country.json +341 -0
- package/specs/financial/financial-apis-supported-countries.json +204 -0
- package/specs/financial/iban-validation.json +328 -0
- package/specs/financial/swift-code-finder.json +192 -0
- package/specs/financial/swift-code-lookup.json +220 -0
- package/specs/financial/vat-number-validation.json +283 -0
- package/specs/financial/vat-rates-by-ip.json +275 -0
- package/specs/financial/vat-rates-country.json +288 -0
- package/specs/general/usage-credits.json +218 -0
- package/specs/geocoding/forward-geocoding.json +402 -0
- package/specs/geocoding/reverse-geocoding.json +326 -0
- package/specs/geodb/administrative-units-details.json +250 -0
- package/specs/geodb/administrative-units-levels.json +198 -0
- package/specs/geodb/administrative-units.json +237 -0
- package/specs/geodb/cities.json +288 -0
- package/specs/geodb/countries-details.json +274 -0
- package/specs/geodb/countries.json +276 -0
- package/specs/geodb/flags-supported.json +166 -0
- package/specs/geodb/flags.json +227 -0
- package/specs/geodb/regions.json +109 -0
- package/specs/geodb/subregions.json +217 -0
- package/specs/ip-intelligence/bulk-ip-lookup.json +1162 -0
- package/specs/ip-intelligence/bulk-ip-threat-intelligence.json +417 -0
- package/specs/ip-intelligence/ip-locator.json +941 -0
- package/specs/ip-intelligence/ip-threat-intelligence.json +316 -0
- package/specs/other/astronomy-data.json +803 -0
- package/specs/pdf/delete-pdf-page.json +286 -0
- package/specs/pdf/linearize-pdf.json +277 -0
- package/specs/pdf/merge-pdf.json +285 -0
- package/specs/pdf/pdf-compress.json +304 -0
- package/specs/pdf/pdf-decrypt.json +297 -0
- package/specs/pdf/pdf-encrypt.json +314 -0
- package/specs/pdf/pdf-extract-pages.json +295 -0
- package/specs/pdf/pdf-file-status.json +208 -0
- package/specs/pdf/pdf-file.json +190 -0
- package/specs/pdf/pdf-files.json +126 -0
- package/specs/pdf/pdf-resource-download.json +168 -0
- package/specs/pdf/pdf-resource-upload-binary.json +218 -0
- package/specs/pdf/pdf-resource-upload.json +248 -0
- package/specs/pdf/pdf-restrict.json +343 -0
- package/specs/pdf/pdf-split-pages.json +281 -0
- package/specs/pdf/pdf-task-status.json +252 -0
- package/specs/pdf/pdf-to-image.json +1219 -0
- package/specs/pdf/pdf-unrestrict.json +324 -0
- package/specs/pdf/rotate-pdf-pages.json +305 -0
- package/specs/phone-validation/bulk-phone-number-validation.json +518 -0
- package/specs/phone-validation/phone-number-validation.json +456 -0
- package/specs/scraper/web-scraper.json +674 -0
- package/specs/screenshot/bulk-screenshot.json +949 -0
- package/specs/screenshot/website-screenshot.json +1147 -0
- package/specs/ssl/ssl-certificate-chain-lookup.json +756 -0
- package/specs/ssl/ssl-certificate-lookup.json +634 -0
- package/specs/timezone/timezone-converter.json +362 -0
- package/specs/timezone/timezone-lookup.json +910 -0
- package/specs/user-agent/bulk-user-agent-parser.json +441 -0
- package/specs/user-agent/user-agent-parser.json +346 -0
- package/specs/weather/air-quality.json +779 -0
- package/specs/weather/bulk-live-weather.json +834 -0
- package/specs/weather/flood-forecast.json +693 -0
- package/specs/weather/historical-weather.json +1019 -0
- package/specs/weather/live-weather.json +789 -0
- package/specs/weather/marine-weather.json +940 -0
- package/specs/weather/time-series-weather.json +1056 -0
- package/specs/weather/weather-forecast.json +1202 -0
- package/specs/whois/asn-lookup.json +729 -0
- package/specs/whois/bulk-whois-lookup.json +698 -0
- package/specs/whois/domain-whois-history-lookup.json +500 -0
- package/specs/whois/reverse-whois.json +625 -0
- package/specs/whois/whois-domain-lookup.json +533 -0
- package/specs/whois/whois-ip-lookup.json +1110 -0
- package/specs/zip-code/bulk-zip-code-lookup.json +318 -0
- package/specs/zip-code/zip-code-api.json +299 -0
- package/specs/zip-code/zip-code-distance-match.json +311 -0
- package/specs/zip-code/zip-code-distance.json +307 -0
- package/specs/zip-code/zip-codes-by-city.json +279 -0
- package/specs/zip-code/zip-codes-by-region.json +278 -0
- package/specs/zip-code/zip-codes-radius-search.json +349 -0
|
@@ -0,0 +1,1202 @@
|
|
|
1
|
+
{
|
|
2
|
+
"openapi": "3.1.1",
|
|
3
|
+
"info": {
|
|
4
|
+
"title": "Weather Forecast API - Advanced Weather Prediction Data",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"description": "Retrieve daily, hourly, or minutely weather forecasts up to 16 days ahead for a city or address, GPS coordinates, or IP address. Returns location details plus, for every requested day, an astronomy block (sunrise/sunset, moon phase, day length) and exactly one of `daily`, `hourly`, or `minutely` forecast data selected by the `precision` parameter. Use `forecastDays` for a rolling N-day forecast from today, or supply `startDate` and `endDate` together for an explicit date range capped at 16 days from today. Location precedence is `lat`/`long` first, then `location`, then `ip` — if none are given, the request falls back to the caller's own IP address. Latitude, longitude, and elevation are returned as strings rather than numbers, and elevation can be an empty string when unavailable for the resolved location.",
|
|
7
|
+
"contact": {
|
|
8
|
+
"name": "APIFreaks Support",
|
|
9
|
+
"url": "https://apifreaks.com/contact",
|
|
10
|
+
"email": "support@apifreaks.com"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"servers": [
|
|
14
|
+
{
|
|
15
|
+
"url": "https://api.apifreaks.com/v1.0/weather",
|
|
16
|
+
"description": "Weather Forecast API Server"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"paths": {
|
|
20
|
+
"/forecast": {
|
|
21
|
+
"get": {
|
|
22
|
+
"tags": ["Weather APIs"],
|
|
23
|
+
"summary": "Retrieve daily, hourly, or minutely weather forecasts for up to 16 days ahead",
|
|
24
|
+
"description": "Returns forecast data for a location resolved from GPS coordinates, a place name/address, or an IP address, plus astronomy data for each requested day. Configure the date range with `forecastDays` or `startDate`/`endDate`, and choose forecast granularity with `precision`.",
|
|
25
|
+
"operationId": "getWeatherForecast",
|
|
26
|
+
"parameters": [
|
|
27
|
+
{
|
|
28
|
+
"name": "format",
|
|
29
|
+
"in": "query",
|
|
30
|
+
"required": false,
|
|
31
|
+
"description": "Format of the response. Possible values: json.",
|
|
32
|
+
"schema": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"enum": ["json"],
|
|
35
|
+
"default": "json"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "location",
|
|
40
|
+
"in": "query",
|
|
41
|
+
"required": false,
|
|
42
|
+
"description": "City name, place name, or full address to resolve to coordinates. Ignored when lat/long are also provided, since coordinates take priority.",
|
|
43
|
+
"schema": {
|
|
44
|
+
"type": "string"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "lat",
|
|
49
|
+
"in": "query",
|
|
50
|
+
"required": false,
|
|
51
|
+
"description": "Latitude of the location. Must be supplied together with long or the request fails with a 400. Takes priority over location and ip when combined with them.",
|
|
52
|
+
"schema": {
|
|
53
|
+
"type": "number"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "long",
|
|
58
|
+
"in": "query",
|
|
59
|
+
"required": false,
|
|
60
|
+
"description": "Longitude of the location. Must be supplied together with lat or the request fails with a 400.",
|
|
61
|
+
"schema": {
|
|
62
|
+
"type": "number"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "ip",
|
|
67
|
+
"in": "query",
|
|
68
|
+
"required": false,
|
|
69
|
+
"description": "IPv4 or IPv6 address to infer location from. Used only when lat/long and location are not provided; if the whole parameter is omitted, the requester's own IP is used instead. Private/reserved IPs do not error — they return placeholder location fields (e.g. country_name \"ZZ\").",
|
|
70
|
+
"schema": {
|
|
71
|
+
"type": "string"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "startDate",
|
|
76
|
+
"in": "query",
|
|
77
|
+
"required": false,
|
|
78
|
+
"description": "Start date for the forecast in YYYY-MM-DD format. Must be supplied together with endDate — passing only one returns a 400. Forecast dates must be today or later, and the range between startDate and endDate must not exceed 16 days from today.",
|
|
79
|
+
"schema": {
|
|
80
|
+
"type": "string",
|
|
81
|
+
"format": "date"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "endDate",
|
|
86
|
+
"in": "query",
|
|
87
|
+
"required": false,
|
|
88
|
+
"description": "End date for the forecast in YYYY-MM-DD format. Must be supplied together with startDate — passing only one returns a 400. Forecast dates must be today or later, and the range between startDate and endDate must not exceed 16 days from today.",
|
|
89
|
+
"schema": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"format": "date"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "forecastDays",
|
|
96
|
+
"in": "query",
|
|
97
|
+
"required": false,
|
|
98
|
+
"description": "Number of days to forecast starting today, from 1 to 16. Default is 7. Not used together with startDate/endDate.",
|
|
99
|
+
"schema": {
|
|
100
|
+
"type": "integer",
|
|
101
|
+
"minimum": 1,
|
|
102
|
+
"maximum": 16
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "precision",
|
|
107
|
+
"in": "query",
|
|
108
|
+
"required": false,
|
|
109
|
+
"description": "Forecast granularity. Possible values: daily (default), hourly, minutely. Only one of the corresponding daily/hourly/minutely blocks is returned per day — astronomy data is always included regardless of precision. An unsupported value returns a 400.",
|
|
110
|
+
"schema": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"enum": ["daily", "hourly", "minutely"],
|
|
113
|
+
"default": "daily"
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"name": "timezone",
|
|
118
|
+
"in": "query",
|
|
119
|
+
"required": false,
|
|
120
|
+
"description": "IANA timezone identifier to convert forecast and astronomy times into (e.g. America/New_York). Defaults to the resolved location's local timezone. An invalid value returns a 400.",
|
|
121
|
+
"schema": {
|
|
122
|
+
"type": "string"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"responses": {
|
|
127
|
+
"200": {
|
|
128
|
+
"description": "Successful response",
|
|
129
|
+
"content": {
|
|
130
|
+
"application/json": {
|
|
131
|
+
"schema": {
|
|
132
|
+
"$ref": "#/components/schemas/ForecastResponse"
|
|
133
|
+
},
|
|
134
|
+
"examples": {
|
|
135
|
+
"dailyPrecision": {
|
|
136
|
+
"summary": "Default daily forecast",
|
|
137
|
+
"value": {
|
|
138
|
+
"location": {
|
|
139
|
+
"location_string": "Lahore",
|
|
140
|
+
"country_name": "Pakistan",
|
|
141
|
+
"state_prov": "Punjab",
|
|
142
|
+
"city": "Lahore",
|
|
143
|
+
"locality": "",
|
|
144
|
+
"latitude": "31.56568",
|
|
145
|
+
"longitude": "74.31418",
|
|
146
|
+
"elevation": "",
|
|
147
|
+
"timezone": "Asia/Karachi",
|
|
148
|
+
"timezone_abbreviation": "GMT+5"
|
|
149
|
+
},
|
|
150
|
+
"forecast": {
|
|
151
|
+
"2026-07-24": {
|
|
152
|
+
"daily": {
|
|
153
|
+
"timestamp": "2026-07-24",
|
|
154
|
+
"weather_code": 96,
|
|
155
|
+
"temperature_2m_max": 32.8,
|
|
156
|
+
"temperature_2m_min": 25.2,
|
|
157
|
+
"apparent_temperature_max": 40,
|
|
158
|
+
"apparent_temperature_min": 30.4,
|
|
159
|
+
"temperature_2m_mean": 28.9,
|
|
160
|
+
"apparent_temperature_mean": 35.2,
|
|
161
|
+
"uv_index_max": 8.3,
|
|
162
|
+
"uv_index_clear_sky_max": 8.3,
|
|
163
|
+
"rain_sum": 2.2,
|
|
164
|
+
"showers_sum": 15.3,
|
|
165
|
+
"snowfall_sum": 0,
|
|
166
|
+
"precipitation_sum": 17.5,
|
|
167
|
+
"wind_speed_10m_max": 9.9,
|
|
168
|
+
"wind_gusts_10m_max": 24.1,
|
|
169
|
+
"wind_direction_10m_dominant": 79,
|
|
170
|
+
"shortwave_radiation_sum": 19.92,
|
|
171
|
+
"surface_pressure_mean": 975.8,
|
|
172
|
+
"visibility_mean": 5653.33,
|
|
173
|
+
"cloud_cover_mean": 83,
|
|
174
|
+
"dew_point_2m_mean": 25.4,
|
|
175
|
+
"dew_point_2m_max": 26.7,
|
|
176
|
+
"dew_point_2m_min": 24.1,
|
|
177
|
+
"et0_fao_evapotranspiration_sum": 4.38,
|
|
178
|
+
"precipitation_probability_mean": 56,
|
|
179
|
+
"relative_humidity_2m_mean": 82,
|
|
180
|
+
"relative_humidity_2m_max": 99,
|
|
181
|
+
"relative_humidity_2m_min": 63,
|
|
182
|
+
"pressure_msl_mean": 999.7,
|
|
183
|
+
"wind_gusts_10m_mean": 18,
|
|
184
|
+
"wind_speed_10m_mean": 6.5,
|
|
185
|
+
"wind_gusts_10m_min": 10.1,
|
|
186
|
+
"wind_speed_10m_min": 3.6
|
|
187
|
+
},
|
|
188
|
+
"astronomy": {
|
|
189
|
+
"date": "2026-07-24",
|
|
190
|
+
"mid_night": "00:09",
|
|
191
|
+
"night_end": "03:39",
|
|
192
|
+
"sunrise": "05:12",
|
|
193
|
+
"sunset": "19:06",
|
|
194
|
+
"night_begin": "20:38",
|
|
195
|
+
"sun_status": "-",
|
|
196
|
+
"solar_noon": "12:09",
|
|
197
|
+
"day_length": "13:54",
|
|
198
|
+
"moon_phase": "WAXING_GIBBOUS",
|
|
199
|
+
"moonrise": "15:08",
|
|
200
|
+
"moonset": "00:26",
|
|
201
|
+
"moon_status": "-"
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
"hourlyPrecision": {
|
|
208
|
+
"summary": "precision=hourly response",
|
|
209
|
+
"value": {
|
|
210
|
+
"location": {
|
|
211
|
+
"location_string": "Lahore",
|
|
212
|
+
"country_name": "Pakistan",
|
|
213
|
+
"state_prov": "Punjab",
|
|
214
|
+
"city": "Lahore",
|
|
215
|
+
"locality": "",
|
|
216
|
+
"latitude": "31.56568",
|
|
217
|
+
"longitude": "74.31418",
|
|
218
|
+
"elevation": "",
|
|
219
|
+
"timezone": "Asia/Karachi",
|
|
220
|
+
"timezone_abbreviation": "GMT+5"
|
|
221
|
+
},
|
|
222
|
+
"forecast": {
|
|
223
|
+
"2026-07-24": {
|
|
224
|
+
"hourly": [
|
|
225
|
+
{
|
|
226
|
+
"timestamp": "2026-07-24T00:00",
|
|
227
|
+
"temperature_2m": 27.3,
|
|
228
|
+
"relative_humidity_2m": 84,
|
|
229
|
+
"dew_point_2m": 24.4,
|
|
230
|
+
"apparent_temperature": 32.4,
|
|
231
|
+
"precipitation_probability": 40,
|
|
232
|
+
"precipitation": 0,
|
|
233
|
+
"rain": 0,
|
|
234
|
+
"showers": 0,
|
|
235
|
+
"snowfall": 0,
|
|
236
|
+
"weather_code": 3,
|
|
237
|
+
"pressure_msl": 1000.9,
|
|
238
|
+
"surface_pressure": 976.9,
|
|
239
|
+
"cloud_cover": 98,
|
|
240
|
+
"visibility": 7740,
|
|
241
|
+
"et0_fao_evapotranspiration": 0.01,
|
|
242
|
+
"wind_speed_10m": 8.4,
|
|
243
|
+
"wind_direction_10m": 74,
|
|
244
|
+
"wind_gusts_10m": 16.2,
|
|
245
|
+
"uv_index": 0,
|
|
246
|
+
"uv_index_clear_sky": 0,
|
|
247
|
+
"direct_normal_irradiance": 0,
|
|
248
|
+
"global_tilted_irradiance": 0,
|
|
249
|
+
"direct_radiation": 0,
|
|
250
|
+
"shortwave_radiation": 0,
|
|
251
|
+
"diffuse_radiation": 0
|
|
252
|
+
}
|
|
253
|
+
],
|
|
254
|
+
"astronomy": {
|
|
255
|
+
"date": "2026-07-24",
|
|
256
|
+
"mid_night": "00:09",
|
|
257
|
+
"night_end": "03:39",
|
|
258
|
+
"sunrise": "05:12",
|
|
259
|
+
"sunset": "19:06",
|
|
260
|
+
"night_begin": "20:38",
|
|
261
|
+
"sun_status": "-",
|
|
262
|
+
"solar_noon": "12:09",
|
|
263
|
+
"day_length": "13:54",
|
|
264
|
+
"moon_phase": "WAXING_GIBBOUS",
|
|
265
|
+
"moonrise": "15:08",
|
|
266
|
+
"moonset": "00:26",
|
|
267
|
+
"moon_status": "-"
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
"400": {
|
|
278
|
+
"description": "Bad Request — invalid, missing, or conflicting parameters",
|
|
279
|
+
"content": {
|
|
280
|
+
"application/json": {
|
|
281
|
+
"schema": {
|
|
282
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
283
|
+
},
|
|
284
|
+
"examples": {
|
|
285
|
+
"InvalidCoordinateRange": {
|
|
286
|
+
"summary": "Latitude/longitude out of range",
|
|
287
|
+
"value": {
|
|
288
|
+
"timestamp": "2026-07-24T11:34:06.131Z",
|
|
289
|
+
"status": 400,
|
|
290
|
+
"message": "Invalid latitude or longitude values. Latitude must be between -90 and 90, and longitude must be between -180 and 180",
|
|
291
|
+
"error": "invalid-params",
|
|
292
|
+
"path": "/v1.0/weather/forecast"
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
"IncompleteCoordinates": {
|
|
296
|
+
"summary": "lat given without long",
|
|
297
|
+
"value": {
|
|
298
|
+
"error": "Invalid Param Exception",
|
|
299
|
+
"message": "please pass correct parameters",
|
|
300
|
+
"path": "/v1.0/weather/forecast",
|
|
301
|
+
"status": 400,
|
|
302
|
+
"timestamp": "2026-07-24T11:34:06.623Z"
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
"UnresolvableCoordinates": {
|
|
306
|
+
"summary": "Valid but unresolvable coordinates (e.g. open ocean)",
|
|
307
|
+
"value": {
|
|
308
|
+
"timestamp": "2026-07-24T11:34:20.552Z",
|
|
309
|
+
"status": 400,
|
|
310
|
+
"message": "Please provide both lat and long parameters.",
|
|
311
|
+
"error": "invalid-params",
|
|
312
|
+
"path": "/v1.0/weather/forecast"
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
"LocationNotFound": {
|
|
316
|
+
"summary": "location text could not be geocoded",
|
|
317
|
+
"value": {
|
|
318
|
+
"timestamp": "2026-07-24T11:34:07.198Z",
|
|
319
|
+
"status": 400,
|
|
320
|
+
"message": "We couldn't find the location (asdkjhaskjdhaksjdh). Try a city or state level location address only.",
|
|
321
|
+
"error": "error",
|
|
322
|
+
"path": "/v1.0/weather/forecast"
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
"InvalidIPAddress": {
|
|
326
|
+
"summary": "Malformed ip value",
|
|
327
|
+
"value": {
|
|
328
|
+
"timestamp": "2026-07-24T11:34:07.725Z",
|
|
329
|
+
"status": 400,
|
|
330
|
+
"message": "Invalid IP address",
|
|
331
|
+
"error": "invalid-params",
|
|
332
|
+
"path": "/v1.0/weather/forecast"
|
|
333
|
+
}
|
|
334
|
+
},
|
|
335
|
+
"InvalidForecastDays": {
|
|
336
|
+
"summary": "forecastDays outside 1-16",
|
|
337
|
+
"value": {
|
|
338
|
+
"timestamp": "2026-07-24T11:34:21.785Z",
|
|
339
|
+
"status": 400,
|
|
340
|
+
"message": "forecastDays must be within 1 and 16 (dates: 2026-07-24 to 2026-08-08)",
|
|
341
|
+
"error": "params-exception-error",
|
|
342
|
+
"path": "/v1.0/weather/forecast"
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
"InvalidDateRange": {
|
|
346
|
+
"summary": "Date range exceeds 16 days or is in the past",
|
|
347
|
+
"value": {
|
|
348
|
+
"timestamp": "2026-07-24T11:34:23.468Z",
|
|
349
|
+
"status": 400,
|
|
350
|
+
"message": "Forecast date range must be within 2026-07-24 to 2026-08-08",
|
|
351
|
+
"error": "params-exception-error",
|
|
352
|
+
"path": "/v1.0/weather/forecast"
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
"IncompleteDateRange": {
|
|
356
|
+
"summary": "startDate given without endDate",
|
|
357
|
+
"value": {
|
|
358
|
+
"timestamp": "2026-07-24T11:35:04.757Z",
|
|
359
|
+
"status": 400,
|
|
360
|
+
"message": "startDate and endDate must both be present",
|
|
361
|
+
"error": "params-exception-error",
|
|
362
|
+
"path": "/v1.0/weather/forecast"
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
"InvalidPrecision": {
|
|
366
|
+
"summary": "Unsupported precision value",
|
|
367
|
+
"value": {
|
|
368
|
+
"timestamp": "2026-07-24T11:34:22.909Z",
|
|
369
|
+
"status": 400,
|
|
370
|
+
"message": "Invalid precision",
|
|
371
|
+
"error": "invalid-params",
|
|
372
|
+
"path": "/v1.0/weather/forecast"
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
"InvalidTimezone": {
|
|
376
|
+
"summary": "Unrecognized timezone identifier",
|
|
377
|
+
"value": {
|
|
378
|
+
"timestamp": "2026-07-24T11:34:24.537Z",
|
|
379
|
+
"status": 400,
|
|
380
|
+
"message": "Check whether your input value is correct; timezone = NotATimezone",
|
|
381
|
+
"error": "error",
|
|
382
|
+
"path": "/v1.0/weather/forecast"
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
"components": {
|
|
394
|
+
"securitySchemes": {
|
|
395
|
+
"ApiKeyAuthHeader": {
|
|
396
|
+
"type": "apiKey",
|
|
397
|
+
"in": "header",
|
|
398
|
+
"name": "X-apiKey",
|
|
399
|
+
"description": "Pass your API key via the X-apiKey request header."
|
|
400
|
+
},
|
|
401
|
+
"ApiKeyAuthQuery": {
|
|
402
|
+
"type": "apiKey",
|
|
403
|
+
"in": "query",
|
|
404
|
+
"name": "apiKey",
|
|
405
|
+
"description": "Pass your API key via the apiKey query parameter."
|
|
406
|
+
}
|
|
407
|
+
},
|
|
408
|
+
"schemas": {
|
|
409
|
+
"ForecastResponse": {
|
|
410
|
+
"type": "object",
|
|
411
|
+
"description": "Weather forecast response containing location and forecast data for the requested date range.",
|
|
412
|
+
"required": ["location", "forecast"],
|
|
413
|
+
"properties": {
|
|
414
|
+
"location": {
|
|
415
|
+
"$ref": "#/components/schemas/WeatherLocation"
|
|
416
|
+
},
|
|
417
|
+
"forecast": {
|
|
418
|
+
"$ref": "#/components/schemas/ForecastData"
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
"LocationByCoordinates": {
|
|
423
|
+
"type": "object",
|
|
424
|
+
"description": "Location data when the target is specified by GPS coordinates (lat/long).",
|
|
425
|
+
"required": [
|
|
426
|
+
"latitude",
|
|
427
|
+
"longitude",
|
|
428
|
+
"country_name",
|
|
429
|
+
"state_prov",
|
|
430
|
+
"city",
|
|
431
|
+
"timezone",
|
|
432
|
+
"timezone_abbreviation"
|
|
433
|
+
],
|
|
434
|
+
"properties": {
|
|
435
|
+
"latitude": {
|
|
436
|
+
"type": "string",
|
|
437
|
+
"description": "Geographic latitude coordinate in decimal degrees, ranging from -90 (South Pole) to +90 (North Pole). Returned as a string, not a number."
|
|
438
|
+
},
|
|
439
|
+
"longitude": {
|
|
440
|
+
"type": "string",
|
|
441
|
+
"description": "Geographic longitude coordinate in decimal degrees, ranging from -180 (West) to +180 (East). Returned as a string, not a number."
|
|
442
|
+
},
|
|
443
|
+
"country_name": {
|
|
444
|
+
"type": "string",
|
|
445
|
+
"description": "Full name of the country corresponding to the provided coordinates."
|
|
446
|
+
},
|
|
447
|
+
"state_prov": {
|
|
448
|
+
"type": "string",
|
|
449
|
+
"description": "State, province, or primary administrative division name for the location."
|
|
450
|
+
},
|
|
451
|
+
"city": {
|
|
452
|
+
"type": "string",
|
|
453
|
+
"description": "City or municipal area name associated with the coordinate location."
|
|
454
|
+
},
|
|
455
|
+
"locality": {
|
|
456
|
+
"type": "string",
|
|
457
|
+
"description": "Specific locality, neighborhood, district, or village name within the broader area."
|
|
458
|
+
},
|
|
459
|
+
"elevation": {
|
|
460
|
+
"type": "string",
|
|
461
|
+
"description": "Height above mean sea level in meters, returned as a string. May be an empty string when elevation data is unavailable."
|
|
462
|
+
},
|
|
463
|
+
"timezone": {
|
|
464
|
+
"type": "string",
|
|
465
|
+
"description": "IANA timezone database identifier for the location (e.g., America/New_York, Europe/London)."
|
|
466
|
+
},
|
|
467
|
+
"timezone_abbreviation": {
|
|
468
|
+
"type": "string",
|
|
469
|
+
"description": "Abbreviated timezone representation based on current offset (e.g., EST, GMT, PST)."
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
},
|
|
473
|
+
"LocationByIP": {
|
|
474
|
+
"type": "object",
|
|
475
|
+
"description": "Location data when the target is inferred from an IP address. Private/reserved IPs resolve to placeholder \"ZZ\"/empty values instead of an error.",
|
|
476
|
+
"required": [
|
|
477
|
+
"continent_code",
|
|
478
|
+
"continent_name",
|
|
479
|
+
"country_code2",
|
|
480
|
+
"country_code3",
|
|
481
|
+
"country_name",
|
|
482
|
+
"country_name_official",
|
|
483
|
+
"state_prov",
|
|
484
|
+
"city",
|
|
485
|
+
"latitude",
|
|
486
|
+
"longitude",
|
|
487
|
+
"timezone",
|
|
488
|
+
"timezone_abbreviation"
|
|
489
|
+
],
|
|
490
|
+
"properties": {
|
|
491
|
+
"continent_code": {
|
|
492
|
+
"type": "string",
|
|
493
|
+
"description": "Two-letter continent code (e.g., NA for North America, EU for Europe, AS for Asia)."
|
|
494
|
+
},
|
|
495
|
+
"continent_name": {
|
|
496
|
+
"type": "string",
|
|
497
|
+
"description": "Full name of the continent where the IP address is registered."
|
|
498
|
+
},
|
|
499
|
+
"country_code2": {
|
|
500
|
+
"type": "string",
|
|
501
|
+
"description": "ISO 3166-1 alpha-2 two-letter country code (e.g., US, GB, FR)."
|
|
502
|
+
},
|
|
503
|
+
"country_code3": {
|
|
504
|
+
"type": "string",
|
|
505
|
+
"description": "ISO 3166-1 alpha-3 three-letter country code (e.g., USA, GBR, FRA)."
|
|
506
|
+
},
|
|
507
|
+
"country_name": {
|
|
508
|
+
"type": "string",
|
|
509
|
+
"description": "Common name of the country associated with the IP address."
|
|
510
|
+
},
|
|
511
|
+
"country_name_official": {
|
|
512
|
+
"type": "string",
|
|
513
|
+
"description": "Official long-form country name as recognized internationally (e.g., United States of America)."
|
|
514
|
+
},
|
|
515
|
+
"is_eu": {
|
|
516
|
+
"type": "boolean",
|
|
517
|
+
"description": "Boolean flag indicating whether the country is a member state of the European Union."
|
|
518
|
+
},
|
|
519
|
+
"state_prov": {
|
|
520
|
+
"type": "string",
|
|
521
|
+
"description": "State, province, or primary administrative division associated with the IP location."
|
|
522
|
+
},
|
|
523
|
+
"state_code": {
|
|
524
|
+
"type": "string",
|
|
525
|
+
"description": "ISO 3166-2 subdivision code for the state or province (e.g., CA for California)."
|
|
526
|
+
},
|
|
527
|
+
"district": {
|
|
528
|
+
"type": "string",
|
|
529
|
+
"description": "District, county, or secondary administrative division within the region."
|
|
530
|
+
},
|
|
531
|
+
"city": {
|
|
532
|
+
"type": "string",
|
|
533
|
+
"description": "City or urban area name where the IP address is geographically registered."
|
|
534
|
+
},
|
|
535
|
+
"zipcode": {
|
|
536
|
+
"type": "string",
|
|
537
|
+
"description": "Postal code or ZIP code for the approximate location of the IP address."
|
|
538
|
+
},
|
|
539
|
+
"latitude": {
|
|
540
|
+
"type": "string",
|
|
541
|
+
"description": "Geographic latitude in decimal degrees for the IP geolocation, ranging from -90 to +90. Returned as a string, not a number."
|
|
542
|
+
},
|
|
543
|
+
"longitude": {
|
|
544
|
+
"type": "string",
|
|
545
|
+
"description": "Geographic longitude in decimal degrees for the IP geolocation, ranging from -180 to +180. Returned as a string, not a number."
|
|
546
|
+
},
|
|
547
|
+
"locality": {
|
|
548
|
+
"type": "string",
|
|
549
|
+
"description": "Specific locality, neighborhood, or small area designation within the city."
|
|
550
|
+
},
|
|
551
|
+
"elevation": {
|
|
552
|
+
"type": "string",
|
|
553
|
+
"description": "Elevation above mean sea level in meters, returned as a string. May be an empty string when elevation data is unavailable."
|
|
554
|
+
},
|
|
555
|
+
"timezone": {
|
|
556
|
+
"type": "string",
|
|
557
|
+
"description": "IANA timezone database identifier for the IP location (e.g., America/Chicago, Asia/Tokyo)."
|
|
558
|
+
},
|
|
559
|
+
"timezone_abbreviation": {
|
|
560
|
+
"type": "string",
|
|
561
|
+
"description": "Current timezone abbreviation based on local offset (e.g., CST, JST, UTC)."
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
},
|
|
565
|
+
"LocationByAddress": {
|
|
566
|
+
"type": "object",
|
|
567
|
+
"description": "Location data when the target is specified by a city name or address string.",
|
|
568
|
+
"required": [
|
|
569
|
+
"location_string",
|
|
570
|
+
"country_name",
|
|
571
|
+
"state_prov",
|
|
572
|
+
"city",
|
|
573
|
+
"latitude",
|
|
574
|
+
"longitude",
|
|
575
|
+
"timezone",
|
|
576
|
+
"timezone_abbreviation"
|
|
577
|
+
],
|
|
578
|
+
"properties": {
|
|
579
|
+
"location_string": {
|
|
580
|
+
"type": "string",
|
|
581
|
+
"description": "Original location query string as submitted, including full address or place name."
|
|
582
|
+
},
|
|
583
|
+
"country_name": {
|
|
584
|
+
"type": "string",
|
|
585
|
+
"description": "Resolved country name derived from the geocoded location query."
|
|
586
|
+
},
|
|
587
|
+
"state_prov": {
|
|
588
|
+
"type": "string",
|
|
589
|
+
"description": "State, province, or primary administrative division identified from the location."
|
|
590
|
+
},
|
|
591
|
+
"city": {
|
|
592
|
+
"type": "string",
|
|
593
|
+
"description": "City or municipal area name extracted from the geocoded location."
|
|
594
|
+
},
|
|
595
|
+
"locality": {
|
|
596
|
+
"type": "string",
|
|
597
|
+
"description": "Specific locality, neighborhood, suburb, or village within the geocoded area."
|
|
598
|
+
},
|
|
599
|
+
"latitude": {
|
|
600
|
+
"type": "string",
|
|
601
|
+
"description": "Geocoded latitude coordinate in decimal degrees, ranging from -90 to 90. Returned as a string, not a number."
|
|
602
|
+
},
|
|
603
|
+
"longitude": {
|
|
604
|
+
"type": "string",
|
|
605
|
+
"description": "Geocoded longitude coordinate in decimal degrees, ranging from -180 to 180. Returned as a string, not a number."
|
|
606
|
+
},
|
|
607
|
+
"elevation": {
|
|
608
|
+
"type": "string",
|
|
609
|
+
"description": "Elevation above mean sea level in meters, returned as a string. May be an empty string when elevation data is unavailable."
|
|
610
|
+
},
|
|
611
|
+
"timezone": {
|
|
612
|
+
"type": "string",
|
|
613
|
+
"description": "IANA timezone database identifier for the geocoded location (e.g., America/Los_Angeles)."
|
|
614
|
+
},
|
|
615
|
+
"timezone_abbreviation": {
|
|
616
|
+
"type": "string",
|
|
617
|
+
"description": "Current timezone abbreviation for the location based on local offset (e.g., PDT, CET)."
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
},
|
|
621
|
+
"ForecastDaily": {
|
|
622
|
+
"type": "object",
|
|
623
|
+
"description": "Daily forecast summary with temperature, precipitation, wind, UV, and radiation statistics. Present only when precision is daily (the default).",
|
|
624
|
+
"required": [
|
|
625
|
+
"timestamp",
|
|
626
|
+
"weather_code",
|
|
627
|
+
"temperature_2m_max",
|
|
628
|
+
"temperature_2m_min",
|
|
629
|
+
"temperature_2m_mean",
|
|
630
|
+
"apparent_temperature_max",
|
|
631
|
+
"apparent_temperature_min",
|
|
632
|
+
"apparent_temperature_mean",
|
|
633
|
+
"uv_index_max",
|
|
634
|
+
"uv_index_clear_sky_max",
|
|
635
|
+
"rain_sum",
|
|
636
|
+
"showers_sum",
|
|
637
|
+
"snowfall_sum",
|
|
638
|
+
"precipitation_sum",
|
|
639
|
+
"precipitation_probability_mean",
|
|
640
|
+
"wind_speed_10m_max",
|
|
641
|
+
"wind_speed_10m_min",
|
|
642
|
+
"wind_speed_10m_mean",
|
|
643
|
+
"wind_gusts_10m_max",
|
|
644
|
+
"wind_gusts_10m_min",
|
|
645
|
+
"wind_gusts_10m_mean",
|
|
646
|
+
"wind_direction_10m_dominant",
|
|
647
|
+
"shortwave_radiation_sum",
|
|
648
|
+
"surface_pressure_mean",
|
|
649
|
+
"pressure_msl_mean",
|
|
650
|
+
"visibility_mean",
|
|
651
|
+
"cloud_cover_mean",
|
|
652
|
+
"dew_point_2m_max",
|
|
653
|
+
"dew_point_2m_min",
|
|
654
|
+
"dew_point_2m_mean",
|
|
655
|
+
"relative_humidity_2m_max",
|
|
656
|
+
"relative_humidity_2m_min",
|
|
657
|
+
"relative_humidity_2m_mean",
|
|
658
|
+
"et0_fao_evapotranspiration_sum"
|
|
659
|
+
],
|
|
660
|
+
"properties": {
|
|
661
|
+
"timestamp": {
|
|
662
|
+
"type": "string",
|
|
663
|
+
"format": "date",
|
|
664
|
+
"description": "Calendar date (YYYY-MM-DD) this daily summary covers. Returned as a plain date, not a full date-time."
|
|
665
|
+
},
|
|
666
|
+
"weather_code": {
|
|
667
|
+
"type": "integer",
|
|
668
|
+
"description": "Weather condition code"
|
|
669
|
+
},
|
|
670
|
+
"temperature_2m_max": {
|
|
671
|
+
"type": "number",
|
|
672
|
+
"description": "Maximum air temperature at 2m (°C)"
|
|
673
|
+
},
|
|
674
|
+
"temperature_2m_min": {
|
|
675
|
+
"type": "number",
|
|
676
|
+
"description": "Minimum air temperature at 2m (°C)"
|
|
677
|
+
},
|
|
678
|
+
"temperature_2m_mean": {
|
|
679
|
+
"type": "number",
|
|
680
|
+
"description": "Mean air temperature at 2m (°C)"
|
|
681
|
+
},
|
|
682
|
+
"apparent_temperature_max": {
|
|
683
|
+
"type": "number",
|
|
684
|
+
"description": "Maximum feels-like temperature (°C)"
|
|
685
|
+
},
|
|
686
|
+
"apparent_temperature_min": {
|
|
687
|
+
"type": "number",
|
|
688
|
+
"description": "Minimum feels-like temperature (°C)"
|
|
689
|
+
},
|
|
690
|
+
"apparent_temperature_mean": {
|
|
691
|
+
"type": "number",
|
|
692
|
+
"description": "Mean feels-like temperature (°C)"
|
|
693
|
+
},
|
|
694
|
+
"uv_index_max": {
|
|
695
|
+
"type": "number",
|
|
696
|
+
"description": "Daily maximum UV index"
|
|
697
|
+
},
|
|
698
|
+
"uv_index_clear_sky_max": {
|
|
699
|
+
"type": "number",
|
|
700
|
+
"description": "UV index clear sky max"
|
|
701
|
+
},
|
|
702
|
+
"rain_sum": {
|
|
703
|
+
"type": "number",
|
|
704
|
+
"description": "Total rain (mm)"
|
|
705
|
+
},
|
|
706
|
+
"showers_sum": {
|
|
707
|
+
"type": "number",
|
|
708
|
+
"description": "Total showers (mm)"
|
|
709
|
+
},
|
|
710
|
+
"snowfall_sum": {
|
|
711
|
+
"type": "number",
|
|
712
|
+
"description": "Total snowfall (cm)"
|
|
713
|
+
},
|
|
714
|
+
"precipitation_sum": {
|
|
715
|
+
"type": "number",
|
|
716
|
+
"description": "Total precipitation (mm)"
|
|
717
|
+
},
|
|
718
|
+
"precipitation_probability_mean": {
|
|
719
|
+
"type": "integer",
|
|
720
|
+
"description": "Mean probability of precipitation (%)"
|
|
721
|
+
},
|
|
722
|
+
"wind_speed_10m_max": {
|
|
723
|
+
"type": "number",
|
|
724
|
+
"description": "Max wind speed at 10m (km/h)"
|
|
725
|
+
},
|
|
726
|
+
"wind_speed_10m_min": {
|
|
727
|
+
"type": "number",
|
|
728
|
+
"description": "Min wind speed at 10m (km/h)"
|
|
729
|
+
},
|
|
730
|
+
"wind_speed_10m_mean": {
|
|
731
|
+
"type": "number",
|
|
732
|
+
"description": "Mean wind speed at 10m (km/h)"
|
|
733
|
+
},
|
|
734
|
+
"wind_gusts_10m_max": {
|
|
735
|
+
"type": "number",
|
|
736
|
+
"description": "Max wind gusts at 10m (km/h)"
|
|
737
|
+
},
|
|
738
|
+
"wind_gusts_10m_min": {
|
|
739
|
+
"type": "number",
|
|
740
|
+
"description": "Min wind gusts at 10m (km/h)"
|
|
741
|
+
},
|
|
742
|
+
"wind_gusts_10m_mean": {
|
|
743
|
+
"type": "number",
|
|
744
|
+
"description": "Mean wind gusts at 10m (km/h)"
|
|
745
|
+
},
|
|
746
|
+
"wind_direction_10m_dominant": {
|
|
747
|
+
"type": "integer",
|
|
748
|
+
"description": "Dominant wind direction at 10m (°)"
|
|
749
|
+
},
|
|
750
|
+
"shortwave_radiation_sum": {
|
|
751
|
+
"type": "number",
|
|
752
|
+
"description": "Total shortwave radiation (MJ/m²)"
|
|
753
|
+
},
|
|
754
|
+
"surface_pressure_mean": {
|
|
755
|
+
"type": "number",
|
|
756
|
+
"description": "Mean surface pressure (hPa)"
|
|
757
|
+
},
|
|
758
|
+
"pressure_msl_mean": {
|
|
759
|
+
"type": "number",
|
|
760
|
+
"description": "Mean sea-level pressure (hPa)"
|
|
761
|
+
},
|
|
762
|
+
"visibility_mean": {
|
|
763
|
+
"type": "number",
|
|
764
|
+
"description": "Mean visibility distance (m)"
|
|
765
|
+
},
|
|
766
|
+
"cloud_cover_mean": {
|
|
767
|
+
"type": "integer",
|
|
768
|
+
"description": "Mean cloud cover (%)"
|
|
769
|
+
},
|
|
770
|
+
"dew_point_2m_max": {
|
|
771
|
+
"type": "number",
|
|
772
|
+
"description": "Max dew point at 2m (°C)"
|
|
773
|
+
},
|
|
774
|
+
"dew_point_2m_min": {
|
|
775
|
+
"type": "number",
|
|
776
|
+
"description": "Min dew point at 2m (°C)"
|
|
777
|
+
},
|
|
778
|
+
"dew_point_2m_mean": {
|
|
779
|
+
"type": "number",
|
|
780
|
+
"description": "Mean dew point at 2m (°C)"
|
|
781
|
+
},
|
|
782
|
+
"relative_humidity_2m_max": {
|
|
783
|
+
"type": "integer",
|
|
784
|
+
"description": "Max relative humidity (%)"
|
|
785
|
+
},
|
|
786
|
+
"relative_humidity_2m_min": {
|
|
787
|
+
"type": "integer",
|
|
788
|
+
"description": "Min relative humidity (%)"
|
|
789
|
+
},
|
|
790
|
+
"relative_humidity_2m_mean": {
|
|
791
|
+
"type": "integer",
|
|
792
|
+
"description": "Mean relative humidity (%)"
|
|
793
|
+
},
|
|
794
|
+
"et0_fao_evapotranspiration_sum": {
|
|
795
|
+
"type": "number",
|
|
796
|
+
"description": "ET₀ Reference Evapotranspiration (mm)"
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
},
|
|
800
|
+
"ForecastHourly": {
|
|
801
|
+
"type": "object",
|
|
802
|
+
"description": "Hourly forecast reading with temperature, precipitation, wind, and radiation data. Present only when precision is hourly.",
|
|
803
|
+
"required": [
|
|
804
|
+
"timestamp",
|
|
805
|
+
"temperature_2m",
|
|
806
|
+
"relative_humidity_2m",
|
|
807
|
+
"dew_point_2m",
|
|
808
|
+
"apparent_temperature",
|
|
809
|
+
"precipitation",
|
|
810
|
+
"precipitation_probability",
|
|
811
|
+
"rain",
|
|
812
|
+
"showers",
|
|
813
|
+
"snowfall",
|
|
814
|
+
"weather_code",
|
|
815
|
+
"pressure_msl",
|
|
816
|
+
"surface_pressure",
|
|
817
|
+
"cloud_cover",
|
|
818
|
+
"visibility",
|
|
819
|
+
"et0_fao_evapotranspiration",
|
|
820
|
+
"wind_speed_10m",
|
|
821
|
+
"wind_direction_10m",
|
|
822
|
+
"wind_gusts_10m",
|
|
823
|
+
"uv_index",
|
|
824
|
+
"uv_index_clear_sky",
|
|
825
|
+
"shortwave_radiation",
|
|
826
|
+
"direct_radiation",
|
|
827
|
+
"diffuse_radiation",
|
|
828
|
+
"direct_normal_irradiance",
|
|
829
|
+
"global_tilted_irradiance"
|
|
830
|
+
],
|
|
831
|
+
"properties": {
|
|
832
|
+
"timestamp": {
|
|
833
|
+
"type": "string",
|
|
834
|
+
"description": "Local date and hour this reading covers, e.g. 2026-07-24T00:00. Not a full RFC 3339 date-time — no seconds or UTC offset are included."
|
|
835
|
+
},
|
|
836
|
+
"temperature_2m": {
|
|
837
|
+
"type": "number",
|
|
838
|
+
"description": "Air temperature at 2m (°C)"
|
|
839
|
+
},
|
|
840
|
+
"relative_humidity_2m": {
|
|
841
|
+
"type": "integer",
|
|
842
|
+
"description": "Relative humidity at 2m (%)"
|
|
843
|
+
},
|
|
844
|
+
"dew_point_2m": {
|
|
845
|
+
"type": "number",
|
|
846
|
+
"description": "Dew point at 2m (°C)"
|
|
847
|
+
},
|
|
848
|
+
"apparent_temperature": {
|
|
849
|
+
"type": "number",
|
|
850
|
+
"description": "Feels-like temperature (°C)"
|
|
851
|
+
},
|
|
852
|
+
"precipitation": {
|
|
853
|
+
"type": "number",
|
|
854
|
+
"description": "Total precipitation at this time (mm)"
|
|
855
|
+
},
|
|
856
|
+
"precipitation_probability": {
|
|
857
|
+
"type": "integer",
|
|
858
|
+
"description": "Probability of precipitation (%)"
|
|
859
|
+
},
|
|
860
|
+
"rain": {
|
|
861
|
+
"type": "number",
|
|
862
|
+
"description": "Rainfall (mm)"
|
|
863
|
+
},
|
|
864
|
+
"showers": {
|
|
865
|
+
"type": "number",
|
|
866
|
+
"description": "Showers (mm)"
|
|
867
|
+
},
|
|
868
|
+
"snowfall": {
|
|
869
|
+
"type": "number",
|
|
870
|
+
"description": "Snowfall (cm)"
|
|
871
|
+
},
|
|
872
|
+
"weather_code": {
|
|
873
|
+
"type": "integer",
|
|
874
|
+
"description": "Weather condition code"
|
|
875
|
+
},
|
|
876
|
+
"pressure_msl": {
|
|
877
|
+
"type": "number",
|
|
878
|
+
"description": "Sea-level pressure (hPa)"
|
|
879
|
+
},
|
|
880
|
+
"surface_pressure": {
|
|
881
|
+
"type": "number",
|
|
882
|
+
"description": "Surface pressure (hPa)"
|
|
883
|
+
},
|
|
884
|
+
"cloud_cover": {
|
|
885
|
+
"type": "integer",
|
|
886
|
+
"description": "Cloud cover (%)"
|
|
887
|
+
},
|
|
888
|
+
"visibility": {
|
|
889
|
+
"type": "number",
|
|
890
|
+
"description": "Visibility distance (m)"
|
|
891
|
+
},
|
|
892
|
+
"et0_fao_evapotranspiration": {
|
|
893
|
+
"type": "number",
|
|
894
|
+
"description": "Evapotranspiration (mm)"
|
|
895
|
+
},
|
|
896
|
+
"wind_speed_10m": {
|
|
897
|
+
"type": "number",
|
|
898
|
+
"description": "Wind speed at 10m (km/h)"
|
|
899
|
+
},
|
|
900
|
+
"wind_direction_10m": {
|
|
901
|
+
"type": "integer",
|
|
902
|
+
"description": "Wind direction at 10m (°)"
|
|
903
|
+
},
|
|
904
|
+
"wind_gusts_10m": {
|
|
905
|
+
"type": "number",
|
|
906
|
+
"description": "Wind gusts at 10m (km/h)"
|
|
907
|
+
},
|
|
908
|
+
"uv_index": {
|
|
909
|
+
"type": "number",
|
|
910
|
+
"description": "UV index"
|
|
911
|
+
},
|
|
912
|
+
"uv_index_clear_sky": {
|
|
913
|
+
"type": "number",
|
|
914
|
+
"description": "UV index under clear-sky conditions"
|
|
915
|
+
},
|
|
916
|
+
"shortwave_radiation": {
|
|
917
|
+
"type": "number",
|
|
918
|
+
"description": "Shortwave radiation (W/m²)"
|
|
919
|
+
},
|
|
920
|
+
"direct_radiation": {
|
|
921
|
+
"type": "number",
|
|
922
|
+
"description": "Direct solar radiation (W/m²)"
|
|
923
|
+
},
|
|
924
|
+
"diffuse_radiation": {
|
|
925
|
+
"type": "number",
|
|
926
|
+
"description": "Diffuse solar radiation (W/m²)"
|
|
927
|
+
},
|
|
928
|
+
"direct_normal_irradiance": {
|
|
929
|
+
"type": "number",
|
|
930
|
+
"description": "Direct normal irradiance (W/m²)"
|
|
931
|
+
},
|
|
932
|
+
"global_tilted_irradiance": {
|
|
933
|
+
"type": "number",
|
|
934
|
+
"description": "Global tilted irradiance (W/m²)"
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
},
|
|
938
|
+
"ForecastMinutely": {
|
|
939
|
+
"type": "object",
|
|
940
|
+
"description": "Minute-by-minute forecast reading with temperature, precipitation, wind, and radiation data. Present only when precision is minutely.",
|
|
941
|
+
"required": [
|
|
942
|
+
"timestamp",
|
|
943
|
+
"temperature_2m",
|
|
944
|
+
"relative_humidity_2m",
|
|
945
|
+
"dew_point_2m",
|
|
946
|
+
"apparent_temperature",
|
|
947
|
+
"precipitation",
|
|
948
|
+
"rain",
|
|
949
|
+
"snowfall",
|
|
950
|
+
"weather_code",
|
|
951
|
+
"wind_speed_10m",
|
|
952
|
+
"wind_direction_10m",
|
|
953
|
+
"wind_gusts_10m",
|
|
954
|
+
"visibility",
|
|
955
|
+
"shortwave_radiation",
|
|
956
|
+
"direct_radiation",
|
|
957
|
+
"diffuse_radiation",
|
|
958
|
+
"direct_normal_irradiance",
|
|
959
|
+
"global_tilted_irradiance"
|
|
960
|
+
],
|
|
961
|
+
"properties": {
|
|
962
|
+
"timestamp": {
|
|
963
|
+
"type": "string",
|
|
964
|
+
"description": "Local date and minute this reading covers, e.g. 2026-07-24T00:00. Not a full RFC 3339 date-time — no seconds or UTC offset are included."
|
|
965
|
+
},
|
|
966
|
+
"temperature_2m": {
|
|
967
|
+
"type": "number",
|
|
968
|
+
"description": "Air temperature at 2m (°C)"
|
|
969
|
+
},
|
|
970
|
+
"relative_humidity_2m": {
|
|
971
|
+
"type": "integer",
|
|
972
|
+
"description": "Relative humidity at 2m (%)"
|
|
973
|
+
},
|
|
974
|
+
"dew_point_2m": {
|
|
975
|
+
"type": "number",
|
|
976
|
+
"description": "Dew point at 2m (°C)"
|
|
977
|
+
},
|
|
978
|
+
"apparent_temperature": {
|
|
979
|
+
"type": "number",
|
|
980
|
+
"description": "Feels-like temperature (°C)"
|
|
981
|
+
},
|
|
982
|
+
"precipitation": {
|
|
983
|
+
"type": "number",
|
|
984
|
+
"description": "Precipitation at this minute (mm)"
|
|
985
|
+
},
|
|
986
|
+
"rain": {
|
|
987
|
+
"type": "number",
|
|
988
|
+
"description": "Rainfall (mm)"
|
|
989
|
+
},
|
|
990
|
+
"snowfall": {
|
|
991
|
+
"type": "number",
|
|
992
|
+
"description": "Snowfall (cm)"
|
|
993
|
+
},
|
|
994
|
+
"weather_code": {
|
|
995
|
+
"type": "integer",
|
|
996
|
+
"description": "Weather condition code"
|
|
997
|
+
},
|
|
998
|
+
"wind_speed_10m": {
|
|
999
|
+
"type": "number",
|
|
1000
|
+
"description": "Wind speed at 10m (km/h)"
|
|
1001
|
+
},
|
|
1002
|
+
"wind_direction_10m": {
|
|
1003
|
+
"type": "integer",
|
|
1004
|
+
"description": "Wind direction at 10m (°)"
|
|
1005
|
+
},
|
|
1006
|
+
"wind_gusts_10m": {
|
|
1007
|
+
"type": "number",
|
|
1008
|
+
"description": "Wind gusts at 10m (km/h)"
|
|
1009
|
+
},
|
|
1010
|
+
"visibility": {
|
|
1011
|
+
"type": "number",
|
|
1012
|
+
"description": "Visibility distance (m)"
|
|
1013
|
+
},
|
|
1014
|
+
"shortwave_radiation": {
|
|
1015
|
+
"type": "number",
|
|
1016
|
+
"description": "Shortwave radiation (W/m²)"
|
|
1017
|
+
},
|
|
1018
|
+
"direct_radiation": {
|
|
1019
|
+
"type": "number",
|
|
1020
|
+
"description": "Direct solar radiation (W/m²)"
|
|
1021
|
+
},
|
|
1022
|
+
"diffuse_radiation": {
|
|
1023
|
+
"type": "number",
|
|
1024
|
+
"description": "Diffuse solar radiation (W/m²)"
|
|
1025
|
+
},
|
|
1026
|
+
"direct_normal_irradiance": {
|
|
1027
|
+
"type": "number",
|
|
1028
|
+
"description": "Direct normal irradiance (W/m²)"
|
|
1029
|
+
},
|
|
1030
|
+
"global_tilted_irradiance": {
|
|
1031
|
+
"type": "number",
|
|
1032
|
+
"description": "Global tilted irradiance (W/m²)"
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
},
|
|
1036
|
+
"Astronomy": {
|
|
1037
|
+
"type": "object",
|
|
1038
|
+
"description": "Astronomical data including sunrise, sunset, solar noon, day length, moon phase, and moon times. Always present for every requested day, regardless of precision. Time fields switch from HH:MM to \"YYYY-MM-DD HH:MM\" when the timezone parameter shifts the date relative to the location's local day.",
|
|
1039
|
+
"required": [
|
|
1040
|
+
"date",
|
|
1041
|
+
"mid_night",
|
|
1042
|
+
"night_end",
|
|
1043
|
+
"sunrise",
|
|
1044
|
+
"solar_noon",
|
|
1045
|
+
"sunset",
|
|
1046
|
+
"night_begin",
|
|
1047
|
+
"day_length",
|
|
1048
|
+
"sun_status",
|
|
1049
|
+
"moon_phase",
|
|
1050
|
+
"moonrise",
|
|
1051
|
+
"moonset",
|
|
1052
|
+
"moon_status"
|
|
1053
|
+
],
|
|
1054
|
+
"properties": {
|
|
1055
|
+
"date": {
|
|
1056
|
+
"type": "string",
|
|
1057
|
+
"format": "date",
|
|
1058
|
+
"description": "Calendar date in YYYY-MM-DD format for the astronomical data."
|
|
1059
|
+
},
|
|
1060
|
+
"mid_night": {
|
|
1061
|
+
"type": "string",
|
|
1062
|
+
"description": "Time of true solar midnight in HH:MM format."
|
|
1063
|
+
},
|
|
1064
|
+
"night_end": {
|
|
1065
|
+
"type": "string",
|
|
1066
|
+
"description": "Time when astronomical twilight ends and dawn begins in HH:MM format."
|
|
1067
|
+
},
|
|
1068
|
+
"sunrise": {
|
|
1069
|
+
"type": "string",
|
|
1070
|
+
"description": "Time when the Sun becomes visible above the horizon in HH:MM format."
|
|
1071
|
+
},
|
|
1072
|
+
"solar_noon": {
|
|
1073
|
+
"type": "string",
|
|
1074
|
+
"description": "Time when the Sun reaches its highest point in the sky in HH:MM format."
|
|
1075
|
+
},
|
|
1076
|
+
"sunset": {
|
|
1077
|
+
"type": "string",
|
|
1078
|
+
"description": "Time when the Sun disappears below the horizon in HH:MM format."
|
|
1079
|
+
},
|
|
1080
|
+
"night_begin": {
|
|
1081
|
+
"type": "string",
|
|
1082
|
+
"description": "Time when astronomical twilight begins and night starts in HH:MM format."
|
|
1083
|
+
},
|
|
1084
|
+
"day_length": {
|
|
1085
|
+
"type": "string",
|
|
1086
|
+
"description": "Total duration of daylight in HH:MM format."
|
|
1087
|
+
},
|
|
1088
|
+
"sun_status": {
|
|
1089
|
+
"type": "string",
|
|
1090
|
+
"description": "Current position of the Sun relative to the horizon (above_horizon, below_horizon, or -)."
|
|
1091
|
+
},
|
|
1092
|
+
"moon_phase": {
|
|
1093
|
+
"type": "string",
|
|
1094
|
+
"description": "Current lunar phase (NEW_MOON, WAXING_CRESCENT, FULL_MOON, WANING_GIBBOUS, etc.)."
|
|
1095
|
+
},
|
|
1096
|
+
"moonrise": {
|
|
1097
|
+
"type": "string",
|
|
1098
|
+
"description": "Time when the Moon becomes visible above the horizon in HH:MM format."
|
|
1099
|
+
},
|
|
1100
|
+
"moonset": {
|
|
1101
|
+
"type": "string",
|
|
1102
|
+
"description": "Time when the Moon disappears below the horizon in HH:MM format."
|
|
1103
|
+
},
|
|
1104
|
+
"moon_status": {
|
|
1105
|
+
"type": "string",
|
|
1106
|
+
"description": "Current visibility status of the Moon (visible, not_visible, or -)."
|
|
1107
|
+
}
|
|
1108
|
+
}
|
|
1109
|
+
},
|
|
1110
|
+
"ForecastDay": {
|
|
1111
|
+
"type": "object",
|
|
1112
|
+
"description": "Forecast data for a single day. Contains an astronomy block plus exactly one of daily/hourly/minutely, chosen by the precision parameter.",
|
|
1113
|
+
"required": ["astronomy"],
|
|
1114
|
+
"properties": {
|
|
1115
|
+
"daily": {
|
|
1116
|
+
"$ref": "#/components/schemas/ForecastDaily",
|
|
1117
|
+
"description": "Daily forecast summary. Present when precision is daily (the default)."
|
|
1118
|
+
},
|
|
1119
|
+
"hourly": {
|
|
1120
|
+
"type": "array",
|
|
1121
|
+
"description": "Hourly forecast readings for the day. Present when precision is hourly.",
|
|
1122
|
+
"items": {
|
|
1123
|
+
"$ref": "#/components/schemas/ForecastHourly"
|
|
1124
|
+
}
|
|
1125
|
+
},
|
|
1126
|
+
"minutely": {
|
|
1127
|
+
"type": "array",
|
|
1128
|
+
"description": "Minute-by-minute forecast readings for the day. Present when precision is minutely.",
|
|
1129
|
+
"items": {
|
|
1130
|
+
"$ref": "#/components/schemas/ForecastMinutely"
|
|
1131
|
+
}
|
|
1132
|
+
},
|
|
1133
|
+
"astronomy": {
|
|
1134
|
+
"$ref": "#/components/schemas/Astronomy",
|
|
1135
|
+
"description": "Astronomy data for the day. Always present regardless of precision."
|
|
1136
|
+
}
|
|
1137
|
+
}
|
|
1138
|
+
},
|
|
1139
|
+
"ForecastData": {
|
|
1140
|
+
"type": "object",
|
|
1141
|
+
"description": "Forecast data keyed by calendar date (YYYY-MM-DD). Each key is a date string and the value is a ForecastDay object.",
|
|
1142
|
+
"additionalProperties": {
|
|
1143
|
+
"$ref": "#/components/schemas/ForecastDay"
|
|
1144
|
+
}
|
|
1145
|
+
},
|
|
1146
|
+
"WeatherLocation": {
|
|
1147
|
+
"type": "object",
|
|
1148
|
+
"description": "Location information. The shape of this object varies by lookup method.",
|
|
1149
|
+
"oneOf": [
|
|
1150
|
+
{
|
|
1151
|
+
"description": "Location data when the target is specified by GPS coordinates (lat/long).",
|
|
1152
|
+
"$ref": "#/components/schemas/LocationByCoordinates"
|
|
1153
|
+
},
|
|
1154
|
+
{
|
|
1155
|
+
"description": "Location data when the target is inferred from an IP address.",
|
|
1156
|
+
"$ref": "#/components/schemas/LocationByIP"
|
|
1157
|
+
},
|
|
1158
|
+
{
|
|
1159
|
+
"description": "Location data when the target is specified by a city name or address string.",
|
|
1160
|
+
"$ref": "#/components/schemas/LocationByAddress"
|
|
1161
|
+
}
|
|
1162
|
+
]
|
|
1163
|
+
},
|
|
1164
|
+
"ErrorResponse": {
|
|
1165
|
+
"type": "object",
|
|
1166
|
+
"description": "Standard error envelope returned by the API on failed requests.",
|
|
1167
|
+
"required": ["message"],
|
|
1168
|
+
"properties": {
|
|
1169
|
+
"error": {
|
|
1170
|
+
"type": "string",
|
|
1171
|
+
"description": "Short error category or exception type."
|
|
1172
|
+
},
|
|
1173
|
+
"message": {
|
|
1174
|
+
"type": "string",
|
|
1175
|
+
"description": "Human-readable error message describing the failure."
|
|
1176
|
+
},
|
|
1177
|
+
"path": {
|
|
1178
|
+
"type": "string",
|
|
1179
|
+
"description": "API endpoint path that produced the error."
|
|
1180
|
+
},
|
|
1181
|
+
"status": {
|
|
1182
|
+
"type": "integer",
|
|
1183
|
+
"description": "HTTP status code returned with the error."
|
|
1184
|
+
},
|
|
1185
|
+
"timestamp": {
|
|
1186
|
+
"type": "string",
|
|
1187
|
+
"format": "date-time",
|
|
1188
|
+
"description": "Timestamp when the error occurred (ISO 8601)."
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
},
|
|
1194
|
+
"security": [
|
|
1195
|
+
{
|
|
1196
|
+
"ApiKeyAuthHeader": []
|
|
1197
|
+
},
|
|
1198
|
+
{
|
|
1199
|
+
"ApiKeyAuthQuery": []
|
|
1200
|
+
}
|
|
1201
|
+
]
|
|
1202
|
+
}
|