@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,834 @@
|
|
|
1
|
+
{
|
|
2
|
+
"openapi": "3.1.1",
|
|
3
|
+
"info": {
|
|
4
|
+
"title": "Bulk Live Weather API Reference",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"description": "Retrieve real-time weather conditions for multiple locations in a single POST request, up to 50 locations per batch. Each location can be specified as a city name or address, GPS coordinates, or IP address. The response contains a bulk array with one entry per requested location in the same order; each entry includes the same location and current weather objects as the single Live Weather endpoint, including full air quality (AQI indices and pollutants) and astronomical data (sunrise/sunset, moon phase, day length). A location that can't be resolved (missing fields, unrecognized address) doesn't fail the whole request — that slot gets a small `{\"error\": \"...\"}` object instead of a full result, even when every item in the batch fails. The optional timezone query parameter sets a default timezone for all results. A malformed request body, or a non-object item in the locations array, fails the whole request with a 400.",
|
|
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": "Bulk Live Weather API Server"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"paths": {
|
|
20
|
+
"/current": {
|
|
21
|
+
"post": {
|
|
22
|
+
"tags": ["Weather APIs"],
|
|
23
|
+
"summary": "Get real-time weather data for multiple locations, coordinates, or IP addresses",
|
|
24
|
+
"description": "Retrieve current weather conditions for up to `50 locations` in a single request. A maximum of 50 locations (city names, IP addresses, or geographic coordinates) can be included in the request body.",
|
|
25
|
+
"parameters": [
|
|
26
|
+
{
|
|
27
|
+
"name": "format",
|
|
28
|
+
"in": "query",
|
|
29
|
+
"required": false,
|
|
30
|
+
"description": "Format of the response. Possible values: json.",
|
|
31
|
+
"schema": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"enum": ["json"],
|
|
34
|
+
"default": "json"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "timezone",
|
|
39
|
+
"in": "query",
|
|
40
|
+
"required": false,
|
|
41
|
+
"description": "Override timezone for all returned data. Defaults to each location's local timezone.",
|
|
42
|
+
"schema": {
|
|
43
|
+
"type": "string"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"requestBody": {
|
|
48
|
+
"required": true,
|
|
49
|
+
"content": {
|
|
50
|
+
"application/json": {
|
|
51
|
+
"schema": {
|
|
52
|
+
"$ref": "#/components/schemas/BulkCurrentRequest"
|
|
53
|
+
},
|
|
54
|
+
"examples": {
|
|
55
|
+
"typicalRequest": {
|
|
56
|
+
"summary": "Typical bulk lookup request",
|
|
57
|
+
"value": {
|
|
58
|
+
"locations": [
|
|
59
|
+
{
|
|
60
|
+
"location": "lahore"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"lat": 32.5,
|
|
64
|
+
"long": 74.5
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"ip": "8.8.8.8"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"location": "seoul"
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"responses": {
|
|
80
|
+
"200": {
|
|
81
|
+
"description": "Successful response",
|
|
82
|
+
"content": {
|
|
83
|
+
"application/json": {
|
|
84
|
+
"schema": {
|
|
85
|
+
"$ref": "#/components/schemas/BulkCurrentResponse"
|
|
86
|
+
},
|
|
87
|
+
"examples": {
|
|
88
|
+
"typicalSuccess": {
|
|
89
|
+
"summary": "Typical successful response",
|
|
90
|
+
"value": {
|
|
91
|
+
"bulk": [
|
|
92
|
+
{
|
|
93
|
+
"location": {
|
|
94
|
+
"location_string": "lahore",
|
|
95
|
+
"country_name": "Pakistan",
|
|
96
|
+
"state_prov": "Punjab",
|
|
97
|
+
"city": "Lahore",
|
|
98
|
+
"locality": "",
|
|
99
|
+
"latitude": "31.56568",
|
|
100
|
+
"longitude": "74.31418",
|
|
101
|
+
"elevation": "",
|
|
102
|
+
"timezone": "Asia/Karachi",
|
|
103
|
+
"timezone_abbreviation": "GMT+5"
|
|
104
|
+
},
|
|
105
|
+
"current": {
|
|
106
|
+
"timestamp": "2026-07-24T16:00",
|
|
107
|
+
"temperature_2m": 32.7,
|
|
108
|
+
"relative_humidity_2m": 63,
|
|
109
|
+
"apparent_temperature": 38.3,
|
|
110
|
+
"snowfall": 0,
|
|
111
|
+
"rain": 0,
|
|
112
|
+
"showers": 0,
|
|
113
|
+
"precipitation": 0,
|
|
114
|
+
"weather_code": 2,
|
|
115
|
+
"cloud_cover": 53,
|
|
116
|
+
"pressure_msl": 996.7,
|
|
117
|
+
"surface_pressure": 973.2,
|
|
118
|
+
"wind_speed_10m": 5.4,
|
|
119
|
+
"wind_direction_10m": 92,
|
|
120
|
+
"wind_gusts_10m": 16.9,
|
|
121
|
+
"air_quality": {
|
|
122
|
+
"timestamp": "2026-07-24T16:00",
|
|
123
|
+
"european_aqi": 67,
|
|
124
|
+
"us_aqi": 99,
|
|
125
|
+
"pm10": 27.4,
|
|
126
|
+
"pm2_5": 27.2,
|
|
127
|
+
"carbon_monoxide": 345,
|
|
128
|
+
"nitrogen_dioxide": 6.2,
|
|
129
|
+
"sulphur_dioxide": 8.6,
|
|
130
|
+
"ozone": 169,
|
|
131
|
+
"dust": 0,
|
|
132
|
+
"uv_index": 1.95,
|
|
133
|
+
"aerosol_optical_depth": 0.71,
|
|
134
|
+
"uv_index_clear_sky": 2.25
|
|
135
|
+
},
|
|
136
|
+
"astronomy": {
|
|
137
|
+
"date": "2026-07-24",
|
|
138
|
+
"mid_night": "00:09",
|
|
139
|
+
"night_end": "03:39",
|
|
140
|
+
"sunrise": "05:12",
|
|
141
|
+
"sunset": "19:06",
|
|
142
|
+
"night_begin": "20:38",
|
|
143
|
+
"sun_status": "-",
|
|
144
|
+
"solar_noon": "12:09",
|
|
145
|
+
"day_length": "13:54",
|
|
146
|
+
"moon_phase": "WAXING_GIBBOUS",
|
|
147
|
+
"moonrise": "15:08",
|
|
148
|
+
"moonset": "00:26",
|
|
149
|
+
"moon_status": "-"
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
"partialFailure": {
|
|
157
|
+
"summary": "Batch with an unresolvable location — that slot gets an error object, request still succeeds",
|
|
158
|
+
"value": {
|
|
159
|
+
"bulk": [
|
|
160
|
+
{
|
|
161
|
+
"error": "Missing required location parameters"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"error": "Location not found"
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"400": {
|
|
174
|
+
"description": "Bad Request — Missing/malformed request body, or a non-object item in the locations array",
|
|
175
|
+
"content": {
|
|
176
|
+
"application/json": {
|
|
177
|
+
"schema": {
|
|
178
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
179
|
+
},
|
|
180
|
+
"examples": {
|
|
181
|
+
"InvalidBody": {
|
|
182
|
+
"summary": "Invalid or missing request body",
|
|
183
|
+
"value": {
|
|
184
|
+
"error": "Invalid request body Exception",
|
|
185
|
+
"message": "Please provide data in required format in request body",
|
|
186
|
+
"path": "/v1.0/weather/current",
|
|
187
|
+
"status": 400,
|
|
188
|
+
"timestamp": "2026-07-24T11:12:06.906Z"
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"InvalidItem": {
|
|
192
|
+
"summary": "locations[0] is not an object",
|
|
193
|
+
"value": {
|
|
194
|
+
"timestamp": "2026-07-24T11:12:07.410Z",
|
|
195
|
+
"status": 400,
|
|
196
|
+
"message": "\"locations[0]\" must be of type object",
|
|
197
|
+
"error": "error",
|
|
198
|
+
"path": "/v1.0/weather/current/bulk"
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
"operationId": "bulkLiveWeather"
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
"components": {
|
|
211
|
+
"securitySchemes": {
|
|
212
|
+
"ApiKeyAuthHeader": {
|
|
213
|
+
"type": "apiKey",
|
|
214
|
+
"in": "header",
|
|
215
|
+
"name": "X-apiKey",
|
|
216
|
+
"description": "Pass your API key via the X-apiKey request header."
|
|
217
|
+
},
|
|
218
|
+
"ApiKeyAuthQuery": {
|
|
219
|
+
"type": "apiKey",
|
|
220
|
+
"in": "query",
|
|
221
|
+
"name": "apiKey",
|
|
222
|
+
"description": "Pass your API key via the apiKey query parameter."
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"schemas": {
|
|
226
|
+
"BulkCurrentRequest": {
|
|
227
|
+
"type": "object",
|
|
228
|
+
"properties": {
|
|
229
|
+
"locations": {
|
|
230
|
+
"type": "array",
|
|
231
|
+
"maxItems": 50,
|
|
232
|
+
"items": {
|
|
233
|
+
"$ref": "#/components/schemas/BulkLocationItem"
|
|
234
|
+
},
|
|
235
|
+
"description": "Array of location objects to query. Maximum 50 items per request."
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
"required": ["locations"],
|
|
239
|
+
"description": "Request body for bulk live weather lookup, containing an array of location specifications."
|
|
240
|
+
},
|
|
241
|
+
"BulkLocationItem": {
|
|
242
|
+
"type": "object",
|
|
243
|
+
"description": "Each object specifies one location using exactly one of the supported lookup methods: location alone, lat+long together, or ip alone. None of these fields is required at the schema level — an item missing all of them is still accepted by the request, but resolves to a per-item error object in the response (see BulkCurrentResponse) rather than failing the whole request.",
|
|
244
|
+
"properties": {
|
|
245
|
+
"location": {
|
|
246
|
+
"type": "string",
|
|
247
|
+
"description": "City name, place name, or full address"
|
|
248
|
+
},
|
|
249
|
+
"lat": {
|
|
250
|
+
"type": "number",
|
|
251
|
+
"description": "Latitude"
|
|
252
|
+
},
|
|
253
|
+
"long": {
|
|
254
|
+
"type": "number",
|
|
255
|
+
"description": "Longitude"
|
|
256
|
+
},
|
|
257
|
+
"ip": {
|
|
258
|
+
"type": "string",
|
|
259
|
+
"description": "IP address"
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
},
|
|
263
|
+
"BulkCurrentResponse": {
|
|
264
|
+
"type": "object",
|
|
265
|
+
"required": ["bulk"],
|
|
266
|
+
"properties": {
|
|
267
|
+
"bulk": {
|
|
268
|
+
"type": "array",
|
|
269
|
+
"items": {
|
|
270
|
+
"oneOf": [
|
|
271
|
+
{
|
|
272
|
+
"description": "A successfully resolved location's weather result.",
|
|
273
|
+
"$ref": "#/components/schemas/CurrentWeatherResponse"
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"description": "Returned in place of a weather result when that location could not be resolved (missing fields, unrecognized address, etc). Does not fail the request, even when every item in the batch errors.",
|
|
277
|
+
"$ref": "#/components/schemas/BulkWeatherItemError"
|
|
278
|
+
}
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
"description": "Array of per-location results, one entry per requested location, in the same order as the request. Each entry is either a full weather result or a per-item error object."
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
"description": "Bulk weather response containing an array of per-location current weather results."
|
|
285
|
+
},
|
|
286
|
+
"CurrentWeatherResponse": {
|
|
287
|
+
"type": "object",
|
|
288
|
+
"required": ["location", "current"],
|
|
289
|
+
"properties": {
|
|
290
|
+
"location": {
|
|
291
|
+
"$ref": "#/components/schemas/WeatherLocation"
|
|
292
|
+
},
|
|
293
|
+
"current": {
|
|
294
|
+
"$ref": "#/components/schemas/CurrentWeather",
|
|
295
|
+
"description": "Current weather data"
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
"description": "Current weather response containing location data and current weather conditions."
|
|
299
|
+
},
|
|
300
|
+
"BulkWeatherItemError": {
|
|
301
|
+
"type": "object",
|
|
302
|
+
"description": "Per-item error, returned in place of a weather result when an individual location could not be resolved.",
|
|
303
|
+
"required": ["error"],
|
|
304
|
+
"properties": {
|
|
305
|
+
"error": {
|
|
306
|
+
"type": "string",
|
|
307
|
+
"description": "Human-readable reason this location could not be resolved (e.g. \"Location not found\", \"Missing required location parameters\")."
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
"WeatherLocation": {
|
|
312
|
+
"type": "object",
|
|
313
|
+
"description": "Location information. The shape of this object varies by lookup method.",
|
|
314
|
+
"oneOf": [
|
|
315
|
+
{
|
|
316
|
+
"description": "Location data when the target is specified by GPS coordinates (lat/long).",
|
|
317
|
+
"$ref": "#/components/schemas/LocationByCoordinates"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"description": "Location data when the target is inferred from an IP address.",
|
|
321
|
+
"$ref": "#/components/schemas/LocationByIP"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"description": "Location data when the target is specified by a city name or address string.",
|
|
325
|
+
"$ref": "#/components/schemas/LocationByAddress"
|
|
326
|
+
}
|
|
327
|
+
]
|
|
328
|
+
},
|
|
329
|
+
"LocationByCoordinates": {
|
|
330
|
+
"type": "object",
|
|
331
|
+
"required": [
|
|
332
|
+
"latitude",
|
|
333
|
+
"longitude",
|
|
334
|
+
"country_name",
|
|
335
|
+
"state_prov",
|
|
336
|
+
"city",
|
|
337
|
+
"timezone",
|
|
338
|
+
"timezone_abbreviation"
|
|
339
|
+
],
|
|
340
|
+
"properties": {
|
|
341
|
+
"latitude": {
|
|
342
|
+
"type": "string",
|
|
343
|
+
"description": "Geographic latitude coordinate in decimal degrees, ranging from -90 (South Pole) to +90 (North Pole). Returned as a string, not a number."
|
|
344
|
+
},
|
|
345
|
+
"longitude": {
|
|
346
|
+
"type": "string",
|
|
347
|
+
"description": "Geographic longitude coordinate in decimal degrees, ranging from -180 (West) to +180 (East). Returned as a string, not a number."
|
|
348
|
+
},
|
|
349
|
+
"country_name": {
|
|
350
|
+
"type": "string",
|
|
351
|
+
"description": "Full name of the country corresponding to the provided coordinates."
|
|
352
|
+
},
|
|
353
|
+
"state_prov": {
|
|
354
|
+
"type": "string",
|
|
355
|
+
"description": "State, province, or primary administrative division name for the location."
|
|
356
|
+
},
|
|
357
|
+
"city": {
|
|
358
|
+
"type": "string",
|
|
359
|
+
"description": "City or municipal area name associated with the coordinate location."
|
|
360
|
+
},
|
|
361
|
+
"locality": {
|
|
362
|
+
"type": "string",
|
|
363
|
+
"description": "Specific locality, neighborhood, district, or village name within the broader area."
|
|
364
|
+
},
|
|
365
|
+
"elevation": {
|
|
366
|
+
"type": "string",
|
|
367
|
+
"description": "Height above mean sea level in meters for the specified coordinates. Returned as a string, not a number; can be an empty string when unavailable."
|
|
368
|
+
},
|
|
369
|
+
"timezone": {
|
|
370
|
+
"type": "string",
|
|
371
|
+
"description": "IANA timezone database identifier for the location (e.g., America/New_York, Europe/London)."
|
|
372
|
+
},
|
|
373
|
+
"timezone_abbreviation": {
|
|
374
|
+
"type": "string",
|
|
375
|
+
"description": "Abbreviated timezone representation based on current offset (e.g., EST, GMT, PST)."
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
"description": "Location data when the target is specified by GPS coordinates (lat/long)."
|
|
379
|
+
},
|
|
380
|
+
"LocationByIP": {
|
|
381
|
+
"type": "object",
|
|
382
|
+
"required": [
|
|
383
|
+
"continent_code",
|
|
384
|
+
"continent_name",
|
|
385
|
+
"country_code2",
|
|
386
|
+
"country_code3",
|
|
387
|
+
"country_name",
|
|
388
|
+
"country_name_official",
|
|
389
|
+
"state_prov",
|
|
390
|
+
"city",
|
|
391
|
+
"latitude",
|
|
392
|
+
"longitude",
|
|
393
|
+
"timezone",
|
|
394
|
+
"timezone_abbreviation"
|
|
395
|
+
],
|
|
396
|
+
"properties": {
|
|
397
|
+
"continent_code": {
|
|
398
|
+
"type": "string",
|
|
399
|
+
"description": "Two-letter continent code (e.g., NA for North America, EU for Europe, AS for Asia)."
|
|
400
|
+
},
|
|
401
|
+
"continent_name": {
|
|
402
|
+
"type": "string",
|
|
403
|
+
"description": "Full name of the continent where the IP address is registered."
|
|
404
|
+
},
|
|
405
|
+
"country_code2": {
|
|
406
|
+
"type": "string",
|
|
407
|
+
"description": "ISO 3166-1 alpha-2 two-letter country code (e.g., US, GB, FR)."
|
|
408
|
+
},
|
|
409
|
+
"country_code3": {
|
|
410
|
+
"type": "string",
|
|
411
|
+
"description": "ISO 3166-1 alpha-3 three-letter country code (e.g., USA, GBR, FRA)."
|
|
412
|
+
},
|
|
413
|
+
"country_name": {
|
|
414
|
+
"type": "string",
|
|
415
|
+
"description": "Common name of the country associated with the IP address."
|
|
416
|
+
},
|
|
417
|
+
"country_name_official": {
|
|
418
|
+
"type": "string",
|
|
419
|
+
"description": "Official long-form country name as recognized internationally (e.g., United States of America)."
|
|
420
|
+
},
|
|
421
|
+
"is_eu": {
|
|
422
|
+
"type": "boolean",
|
|
423
|
+
"description": "Boolean flag indicating whether the country is a member state of the European Union."
|
|
424
|
+
},
|
|
425
|
+
"state_prov": {
|
|
426
|
+
"type": "string",
|
|
427
|
+
"description": "State, province, or primary administrative division associated with the IP location."
|
|
428
|
+
},
|
|
429
|
+
"state_code": {
|
|
430
|
+
"type": "string",
|
|
431
|
+
"description": "ISO 3166-2 subdivision code for the state or province (e.g., CA for California)."
|
|
432
|
+
},
|
|
433
|
+
"district": {
|
|
434
|
+
"type": "string",
|
|
435
|
+
"description": "District, county, or secondary administrative division within the region."
|
|
436
|
+
},
|
|
437
|
+
"city": {
|
|
438
|
+
"type": "string",
|
|
439
|
+
"description": "City or urban area name where the IP address is geographically registered."
|
|
440
|
+
},
|
|
441
|
+
"zipcode": {
|
|
442
|
+
"type": "string",
|
|
443
|
+
"description": "Postal code or ZIP code for the approximate location of the IP address."
|
|
444
|
+
},
|
|
445
|
+
"latitude": {
|
|
446
|
+
"type": "string",
|
|
447
|
+
"description": "Geographic latitude in decimal degrees for the IP geolocation, ranging from -90 to +90. Returned as a string, not a number."
|
|
448
|
+
},
|
|
449
|
+
"longitude": {
|
|
450
|
+
"type": "string",
|
|
451
|
+
"description": "Geographic longitude in decimal degrees for the IP geolocation, ranging from -180 to +180. Returned as a string, not a number."
|
|
452
|
+
},
|
|
453
|
+
"locality": {
|
|
454
|
+
"type": "string",
|
|
455
|
+
"description": "Specific locality, neighborhood, or small area designation within the city."
|
|
456
|
+
},
|
|
457
|
+
"elevation": {
|
|
458
|
+
"type": "string",
|
|
459
|
+
"description": "Elevation above mean sea level in meters for the IP geolocation. Returned as a string, not a number; can be an empty string when unavailable."
|
|
460
|
+
},
|
|
461
|
+
"timezone": {
|
|
462
|
+
"type": "string",
|
|
463
|
+
"description": "IANA timezone database identifier for the IP location (e.g., America/Chicago, Asia/Tokyo)."
|
|
464
|
+
},
|
|
465
|
+
"timezone_abbreviation": {
|
|
466
|
+
"type": "string",
|
|
467
|
+
"description": "Current timezone abbreviation based on local offset (e.g., CST, JST, UTC)."
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
"description": "Location data when the target is inferred from an IP address."
|
|
471
|
+
},
|
|
472
|
+
"LocationByAddress": {
|
|
473
|
+
"type": "object",
|
|
474
|
+
"required": [
|
|
475
|
+
"location_string",
|
|
476
|
+
"country_name",
|
|
477
|
+
"state_prov",
|
|
478
|
+
"city",
|
|
479
|
+
"latitude",
|
|
480
|
+
"longitude",
|
|
481
|
+
"timezone",
|
|
482
|
+
"timezone_abbreviation"
|
|
483
|
+
],
|
|
484
|
+
"properties": {
|
|
485
|
+
"location_string": {
|
|
486
|
+
"type": "string",
|
|
487
|
+
"description": "Original location query string as submitted, including full address or place name."
|
|
488
|
+
},
|
|
489
|
+
"country_name": {
|
|
490
|
+
"type": "string",
|
|
491
|
+
"description": "Resolved country name derived from the geocoded location query."
|
|
492
|
+
},
|
|
493
|
+
"state_prov": {
|
|
494
|
+
"type": "string",
|
|
495
|
+
"description": "State, province, or primary administrative division identified from the location."
|
|
496
|
+
},
|
|
497
|
+
"city": {
|
|
498
|
+
"type": "string",
|
|
499
|
+
"description": "City or municipal area name extracted from the geocoded location."
|
|
500
|
+
},
|
|
501
|
+
"locality": {
|
|
502
|
+
"type": "string",
|
|
503
|
+
"description": "Specific locality, neighborhood, suburb, or village within the geocoded area."
|
|
504
|
+
},
|
|
505
|
+
"latitude": {
|
|
506
|
+
"type": "string",
|
|
507
|
+
"description": "Geocoded latitude coordinate in decimal degrees, ranging from -90 to +90. Returned as a string, not a number."
|
|
508
|
+
},
|
|
509
|
+
"longitude": {
|
|
510
|
+
"type": "string",
|
|
511
|
+
"description": "Geocoded longitude coordinate in decimal degrees, ranging from -180 to +180. Returned as a string, not a number."
|
|
512
|
+
},
|
|
513
|
+
"elevation": {
|
|
514
|
+
"type": "string",
|
|
515
|
+
"description": "Elevation above mean sea level in meters at the geocoded coordinates. Returned as a string, not a number; can be an empty string when unavailable."
|
|
516
|
+
},
|
|
517
|
+
"timezone": {
|
|
518
|
+
"type": "string",
|
|
519
|
+
"description": "IANA timezone database identifier for the geocoded location (e.g., America/Los_Angeles)."
|
|
520
|
+
},
|
|
521
|
+
"timezone_abbreviation": {
|
|
522
|
+
"type": "string",
|
|
523
|
+
"description": "Current timezone abbreviation for the location based on local offset (e.g., PDT, CET)."
|
|
524
|
+
}
|
|
525
|
+
},
|
|
526
|
+
"description": "Location data when the target is specified by a city name or address string."
|
|
527
|
+
},
|
|
528
|
+
"CurrentWeather": {
|
|
529
|
+
"type": "object",
|
|
530
|
+
"required": [
|
|
531
|
+
"timestamp",
|
|
532
|
+
"temperature_2m",
|
|
533
|
+
"relative_humidity_2m",
|
|
534
|
+
"apparent_temperature",
|
|
535
|
+
"snowfall",
|
|
536
|
+
"rain",
|
|
537
|
+
"showers",
|
|
538
|
+
"precipitation",
|
|
539
|
+
"weather_code",
|
|
540
|
+
"cloud_cover",
|
|
541
|
+
"pressure_msl",
|
|
542
|
+
"surface_pressure",
|
|
543
|
+
"wind_speed_10m",
|
|
544
|
+
"wind_direction_10m",
|
|
545
|
+
"wind_gusts_10m",
|
|
546
|
+
"astronomy",
|
|
547
|
+
"air_quality"
|
|
548
|
+
],
|
|
549
|
+
"properties": {
|
|
550
|
+
"timestamp": {
|
|
551
|
+
"type": "string",
|
|
552
|
+
"format": "date-time",
|
|
553
|
+
"description": "ISO 8601 formatted timestamp of the current weather observation."
|
|
554
|
+
},
|
|
555
|
+
"temperature_2m": {
|
|
556
|
+
"type": "number",
|
|
557
|
+
"format": "float",
|
|
558
|
+
"description": "Current air temperature (°C) measured at 2 meters above ground."
|
|
559
|
+
},
|
|
560
|
+
"relative_humidity_2m": {
|
|
561
|
+
"type": "number",
|
|
562
|
+
"format": "float",
|
|
563
|
+
"description": "Current relative humidity percentage at 2 meters above ground."
|
|
564
|
+
},
|
|
565
|
+
"apparent_temperature": {
|
|
566
|
+
"type": "number",
|
|
567
|
+
"format": "float",
|
|
568
|
+
"description": "Current apparent temperature (°C) accounting for wind chill and humidity."
|
|
569
|
+
},
|
|
570
|
+
"snowfall": {
|
|
571
|
+
"type": "number",
|
|
572
|
+
"format": "float",
|
|
573
|
+
"description": "Current snowfall accumulation in centimeters."
|
|
574
|
+
},
|
|
575
|
+
"rain": {
|
|
576
|
+
"type": "number",
|
|
577
|
+
"format": "float",
|
|
578
|
+
"description": "Current rainfall accumulation in millimeters."
|
|
579
|
+
},
|
|
580
|
+
"showers": {
|
|
581
|
+
"type": "number",
|
|
582
|
+
"format": "float",
|
|
583
|
+
"description": "Current shower precipitation in millimeters."
|
|
584
|
+
},
|
|
585
|
+
"precipitation": {
|
|
586
|
+
"type": "number",
|
|
587
|
+
"format": "float",
|
|
588
|
+
"description": "Total precipitation (mm) including rain, showers, and snowfall."
|
|
589
|
+
},
|
|
590
|
+
"weather_code": {
|
|
591
|
+
"type": "integer",
|
|
592
|
+
"enum": [
|
|
593
|
+
0, 1, 2, 3, 45, 48, 51, 53, 55, 56, 57, 61, 63, 65, 66, 67, 71,
|
|
594
|
+
73, 75, 77, 80, 81, 82, 85, 86, 95, 96, 99
|
|
595
|
+
],
|
|
596
|
+
"description": "WMO weather condition code representing current conditions. Supported codes: 0 clear sky; 1, 2, 3 varying cloud cover; 45, 48 fog; 51, 53, 55 drizzle; 56, 57 freezing drizzle; 61, 63, 65 rain; 66, 67 freezing rain; 71, 73, 75 snowfall; 77 snow grains; 80, 81, 82 rain showers; 85, 86 snow showers; 95 thunderstorm; 96, 99 thunderstorm with hail."
|
|
597
|
+
},
|
|
598
|
+
"cloud_cover": {
|
|
599
|
+
"type": "number",
|
|
600
|
+
"format": "float",
|
|
601
|
+
"description": "Current percentage of sky covered by clouds."
|
|
602
|
+
},
|
|
603
|
+
"pressure_msl": {
|
|
604
|
+
"type": "number",
|
|
605
|
+
"format": "float",
|
|
606
|
+
"description": "Current atmospheric pressure (hPa) adjusted to mean sea level."
|
|
607
|
+
},
|
|
608
|
+
"surface_pressure": {
|
|
609
|
+
"type": "number",
|
|
610
|
+
"format": "float",
|
|
611
|
+
"description": "Current atmospheric pressure (hPa) at surface level."
|
|
612
|
+
},
|
|
613
|
+
"wind_speed_10m": {
|
|
614
|
+
"type": "number",
|
|
615
|
+
"format": "float",
|
|
616
|
+
"description": "Current wind speed (km/h) at 10 meters above ground."
|
|
617
|
+
},
|
|
618
|
+
"wind_direction_10m": {
|
|
619
|
+
"type": "integer",
|
|
620
|
+
"description": "Current wind direction in degrees at 10 meters above ground."
|
|
621
|
+
},
|
|
622
|
+
"wind_gusts_10m": {
|
|
623
|
+
"type": "number",
|
|
624
|
+
"format": "float",
|
|
625
|
+
"description": "Current wind gust speed (km/h) at 10 meters above ground."
|
|
626
|
+
},
|
|
627
|
+
"astronomy": {
|
|
628
|
+
"$ref": "#/components/schemas/Astronomy",
|
|
629
|
+
"description": "Astronomical information including sunrise, sunset, and moon phases for the current date."
|
|
630
|
+
},
|
|
631
|
+
"air_quality": {
|
|
632
|
+
"$ref": "#/components/schemas/AirQuality",
|
|
633
|
+
"description": "Air quality metrics including pollutant concentrations and AQI values."
|
|
634
|
+
}
|
|
635
|
+
},
|
|
636
|
+
"description": "Current weather conditions including temperature, humidity, precipitation, wind, pressure, astronomy, and air quality."
|
|
637
|
+
},
|
|
638
|
+
"Astronomy": {
|
|
639
|
+
"type": "object",
|
|
640
|
+
"required": [
|
|
641
|
+
"date",
|
|
642
|
+
"mid_night",
|
|
643
|
+
"night_end",
|
|
644
|
+
"sunrise",
|
|
645
|
+
"solar_noon",
|
|
646
|
+
"sunset",
|
|
647
|
+
"night_begin",
|
|
648
|
+
"day_length",
|
|
649
|
+
"sun_status",
|
|
650
|
+
"moon_phase",
|
|
651
|
+
"moonrise",
|
|
652
|
+
"moonset",
|
|
653
|
+
"moon_status"
|
|
654
|
+
],
|
|
655
|
+
"properties": {
|
|
656
|
+
"date": {
|
|
657
|
+
"type": "string",
|
|
658
|
+
"format": "date",
|
|
659
|
+
"description": "Calendar date in YYYY-MM-DD format for the astronomical data."
|
|
660
|
+
},
|
|
661
|
+
"mid_night": {
|
|
662
|
+
"type": "string",
|
|
663
|
+
"description": "Time of true solar midnight in HH:MM format."
|
|
664
|
+
},
|
|
665
|
+
"night_end": {
|
|
666
|
+
"type": "string",
|
|
667
|
+
"description": "Time when astronomical twilight ends and dawn begins in HH:MM format."
|
|
668
|
+
},
|
|
669
|
+
"sunrise": {
|
|
670
|
+
"type": "string",
|
|
671
|
+
"description": "Time when the Sun becomes visible above the horizon in HH:MM format."
|
|
672
|
+
},
|
|
673
|
+
"solar_noon": {
|
|
674
|
+
"type": "string",
|
|
675
|
+
"description": "Time when the Sun reaches its highest point in the sky in HH:MM format."
|
|
676
|
+
},
|
|
677
|
+
"sunset": {
|
|
678
|
+
"type": "string",
|
|
679
|
+
"description": "Time when the Sun disappears below the horizon in HH:MM format."
|
|
680
|
+
},
|
|
681
|
+
"night_begin": {
|
|
682
|
+
"type": "string",
|
|
683
|
+
"description": "Time when astronomical twilight begins and night starts in HH:MM format."
|
|
684
|
+
},
|
|
685
|
+
"day_length": {
|
|
686
|
+
"type": "string",
|
|
687
|
+
"description": "Total duration of daylight in HH:MM format."
|
|
688
|
+
},
|
|
689
|
+
"sun_status": {
|
|
690
|
+
"type": "string",
|
|
691
|
+
"description": "Current position of the Sun relative to the horizon (above_horizon, below_horizon, or -)."
|
|
692
|
+
},
|
|
693
|
+
"moon_phase": {
|
|
694
|
+
"type": "string",
|
|
695
|
+
"description": "Current lunar phase (NEW_MOON, WAXING_CRESCENT, FULL_MOON, WANING_GIBBOUS, etc.)."
|
|
696
|
+
},
|
|
697
|
+
"moonrise": {
|
|
698
|
+
"type": "string",
|
|
699
|
+
"description": "Time when the Moon becomes visible above the horizon in HH:MM format."
|
|
700
|
+
},
|
|
701
|
+
"moonset": {
|
|
702
|
+
"type": "string",
|
|
703
|
+
"description": "Time when the Moon disappears below the horizon in HH:MM format."
|
|
704
|
+
},
|
|
705
|
+
"moon_status": {
|
|
706
|
+
"type": "string",
|
|
707
|
+
"description": "Current visibility status of the Moon (visible, not_visible, or -)."
|
|
708
|
+
}
|
|
709
|
+
},
|
|
710
|
+
"description": "Astronomical data including sunrise, sunset, solar noon, day length, moon phase, and moon times."
|
|
711
|
+
},
|
|
712
|
+
"AirQuality": {
|
|
713
|
+
"type": "object",
|
|
714
|
+
"required": [
|
|
715
|
+
"timestamp",
|
|
716
|
+
"european_aqi",
|
|
717
|
+
"us_aqi",
|
|
718
|
+
"pm10",
|
|
719
|
+
"pm2_5",
|
|
720
|
+
"carbon_monoxide",
|
|
721
|
+
"nitrogen_dioxide",
|
|
722
|
+
"sulphur_dioxide",
|
|
723
|
+
"ozone",
|
|
724
|
+
"dust",
|
|
725
|
+
"uv_index",
|
|
726
|
+
"aerosol_optical_depth",
|
|
727
|
+
"uv_index_clear_sky"
|
|
728
|
+
],
|
|
729
|
+
"properties": {
|
|
730
|
+
"timestamp": {
|
|
731
|
+
"type": "string",
|
|
732
|
+
"format": "date-time",
|
|
733
|
+
"description": "ISO 8601 formatted timestamp (iso8601)."
|
|
734
|
+
},
|
|
735
|
+
"european_aqi": {
|
|
736
|
+
"type": "integer",
|
|
737
|
+
"description": "Consolidated European Air Quality Index representing the highest value among individual pollutant indices. Ranges: 0-20 (good), 20-40 (fair), 40-60 (moderate), 60-80 (poor), 80-100 (very poor), >100 (extremely poor)."
|
|
738
|
+
},
|
|
739
|
+
"us_aqi": {
|
|
740
|
+
"type": "integer",
|
|
741
|
+
"description": "Consolidated U.S. Air Quality Index representing the highest value among individual pollutant indices. Ranges: 0-50 (good), 51-100 (moderate), 101-150 (unhealthy for sensitive groups), 151-200 (unhealthy), 201-300 (very unhealthy), 301-500 (hazardous)."
|
|
742
|
+
},
|
|
743
|
+
"pm10": {
|
|
744
|
+
"type": "number",
|
|
745
|
+
"format": "float",
|
|
746
|
+
"description": "Particulate matter with diameter less than 10 micrometers (μg/m³) measured at 10 meters above ground."
|
|
747
|
+
},
|
|
748
|
+
"pm2_5": {
|
|
749
|
+
"type": "number",
|
|
750
|
+
"format": "float",
|
|
751
|
+
"description": "Particulate matter with diameter less than 2.5 micrometers (μg/m³) measured at 10 meters above ground."
|
|
752
|
+
},
|
|
753
|
+
"carbon_monoxide": {
|
|
754
|
+
"type": "number",
|
|
755
|
+
"format": "float",
|
|
756
|
+
"description": "Atmospheric carbon monoxide gas concentration (μg/m³) at 10 meters above ground."
|
|
757
|
+
},
|
|
758
|
+
"nitrogen_dioxide": {
|
|
759
|
+
"type": "number",
|
|
760
|
+
"format": "float",
|
|
761
|
+
"description": "Atmospheric nitrogen dioxide gas concentration (μg/m³) at 10 meters above ground."
|
|
762
|
+
},
|
|
763
|
+
"sulphur_dioxide": {
|
|
764
|
+
"type": "number",
|
|
765
|
+
"format": "float",
|
|
766
|
+
"description": "Atmospheric sulphur dioxide gas concentration (μg/m³) at 10 meters above ground."
|
|
767
|
+
},
|
|
768
|
+
"ozone": {
|
|
769
|
+
"type": "number",
|
|
770
|
+
"format": "float",
|
|
771
|
+
"description": "Atmospheric ozone gas concentration (μg/m³) at 10 meters above ground."
|
|
772
|
+
},
|
|
773
|
+
"dust": {
|
|
774
|
+
"type": "number",
|
|
775
|
+
"format": "float",
|
|
776
|
+
"description": "Saharan dust particle concentration (μg/m³) at 10 meters above ground."
|
|
777
|
+
},
|
|
778
|
+
"uv_index": {
|
|
779
|
+
"type": "number",
|
|
780
|
+
"format": "float",
|
|
781
|
+
"description": "Ultraviolet radiation intensity index accounting for cloud coverage."
|
|
782
|
+
},
|
|
783
|
+
"aerosol_optical_depth": {
|
|
784
|
+
"type": "number",
|
|
785
|
+
"format": "float",
|
|
786
|
+
"description": "Aerosol optical depth at 550 nm wavelength indicating atmospheric haze levels."
|
|
787
|
+
},
|
|
788
|
+
"uv_index_clear_sky": {
|
|
789
|
+
"type": "number",
|
|
790
|
+
"format": "float",
|
|
791
|
+
"description": "Ultraviolet radiation intensity index assuming cloud-free conditions."
|
|
792
|
+
}
|
|
793
|
+
},
|
|
794
|
+
"description": "Air quality metrics including European and US AQI indices plus individual pollutant concentrations."
|
|
795
|
+
},
|
|
796
|
+
"ErrorResponse": {
|
|
797
|
+
"type": "object",
|
|
798
|
+
"required": ["message"],
|
|
799
|
+
"properties": {
|
|
800
|
+
"error": {
|
|
801
|
+
"type": "string",
|
|
802
|
+
"description": "Short error category or exception type."
|
|
803
|
+
},
|
|
804
|
+
"message": {
|
|
805
|
+
"type": "string",
|
|
806
|
+
"description": "Human-readable error message describing the failure."
|
|
807
|
+
},
|
|
808
|
+
"path": {
|
|
809
|
+
"type": "string",
|
|
810
|
+
"description": "API endpoint path that produced the error."
|
|
811
|
+
},
|
|
812
|
+
"status": {
|
|
813
|
+
"type": "integer",
|
|
814
|
+
"description": "HTTP status code returned with the error."
|
|
815
|
+
},
|
|
816
|
+
"timestamp": {
|
|
817
|
+
"type": "string",
|
|
818
|
+
"format": "date-time",
|
|
819
|
+
"description": "Timestamp when the error occurred (ISO 8601)."
|
|
820
|
+
}
|
|
821
|
+
},
|
|
822
|
+
"description": "Standard error envelope returned by the API on failed requests."
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
},
|
|
826
|
+
"security": [
|
|
827
|
+
{
|
|
828
|
+
"ApiKeyAuthHeader": []
|
|
829
|
+
},
|
|
830
|
+
{
|
|
831
|
+
"ApiKeyAuthQuery": []
|
|
832
|
+
}
|
|
833
|
+
]
|
|
834
|
+
}
|