@apifreaks/openapi-specs 0.1.0 → 0.1.2

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.
Files changed (108) hide show
  1. package/dist/index.cjs +133 -2
  2. package/dist/index.d.cts +140 -3
  3. package/dist/index.d.ts +140 -3
  4. package/dist/index.js +131 -2
  5. package/dist/specs/commodity/commodity-fluctuation.yaml +225 -0
  6. package/dist/specs/commodity/commodity-prices.yaml +236 -0
  7. package/dist/specs/commodity/commodity-symbols.yaml +159 -0
  8. package/dist/specs/commodity/commodity-time-series.yaml +238 -0
  9. package/dist/specs/commodity/historical-commodity-prices.yaml +208 -0
  10. package/dist/specs/currency/currency-converter.yaml +193 -0
  11. package/dist/specs/currency/currency-fluctuation.yaml +211 -0
  12. package/dist/specs/currency/currency-historical-data-limit.yaml +112 -0
  13. package/dist/specs/currency/currency-rate.yaml +173 -0
  14. package/dist/specs/currency/currency-supported.yaml +176 -0
  15. package/dist/specs/currency/currency-symbols.yaml +115 -0
  16. package/dist/specs/currency/currency-time-series.yaml +232 -0
  17. package/dist/specs/currency/geolocalized-currency-conversion.yaml +214 -0
  18. package/dist/specs/currency/historical-currency-converter.yaml +195 -0
  19. package/dist/specs/currency/historical-currency-rate.yaml +180 -0
  20. package/dist/specs/dns/bulk-dns-lookup.yaml +484 -0
  21. package/dist/specs/dns/dns-history-lookup.yaml +451 -0
  22. package/dist/specs/dns/dns-lookup.yaml +360 -0
  23. package/dist/specs/dns/reverse-dns-lookup.yaml +338 -0
  24. package/dist/specs/domain/bulk-domain-checker.yaml +198 -0
  25. package/dist/specs/domain/domain-search-with-suggestions.yaml +196 -0
  26. package/dist/specs/domain/domain-search.yaml +149 -0
  27. package/dist/specs/domain/subdomain-lookup.yaml +251 -0
  28. package/dist/specs/email-validation/bulk-email-validation.yaml +403 -0
  29. package/dist/specs/email-validation/email-checker.yaml +451 -0
  30. package/dist/specs/financial/bulk-vat-rates-country.yaml +250 -0
  31. package/dist/specs/financial/financial-apis-supported-countries.yaml +152 -0
  32. package/dist/specs/financial/iban-validation.yaml +270 -0
  33. package/dist/specs/financial/swift-code-finder.yaml +146 -0
  34. package/dist/specs/financial/swift-code-lookup.yaml +156 -0
  35. package/dist/specs/financial/vat-number-validation.yaml +205 -0
  36. package/dist/specs/financial/vat-rates-by-ip.yaml +200 -0
  37. package/dist/specs/financial/vat-rates-country.yaml +212 -0
  38. package/dist/specs/general/usage-credits.yaml +188 -0
  39. package/dist/specs/geocoding/forward-geocoding.yaml +292 -0
  40. package/dist/specs/geocoding/reverse-geocoding.yaml +237 -0
  41. package/dist/specs/geodb/administrative-units-details.yaml +180 -0
  42. package/dist/specs/geodb/administrative-units-levels.yaml +140 -0
  43. package/dist/specs/geodb/administrative-units.yaml +168 -0
  44. package/dist/specs/geodb/cities.yaml +209 -0
  45. package/dist/specs/geodb/countries-details.yaml +207 -0
  46. package/dist/specs/geodb/countries.yaml +199 -0
  47. package/dist/specs/geodb/flags-supported.yaml +119 -0
  48. package/dist/specs/geodb/flags.yaml +170 -0
  49. package/dist/specs/geodb/regions.yaml +76 -0
  50. package/dist/specs/geodb/subregions.yaml +158 -0
  51. package/dist/specs/ip-intelligence/bulk-ip-lookup.yaml +895 -0
  52. package/dist/specs/ip-intelligence/bulk-ip-threat-intelligence.yaml +310 -0
  53. package/dist/specs/ip-intelligence/ip-locator.yaml +708 -0
  54. package/dist/specs/ip-intelligence/ip-threat-intelligence.yaml +230 -0
  55. package/dist/specs/other/astronomy-data.yaml +632 -0
  56. package/dist/specs/pdf/delete-pdf-page.yaml +193 -0
  57. package/dist/specs/pdf/linearize-pdf.yaml +187 -0
  58. package/dist/specs/pdf/merge-pdf.yaml +193 -0
  59. package/dist/specs/pdf/pdf-compress.yaml +208 -0
  60. package/dist/specs/pdf/pdf-decrypt.yaml +202 -0
  61. package/dist/specs/pdf/pdf-encrypt.yaml +213 -0
  62. package/dist/specs/pdf/pdf-extract-pages.yaml +199 -0
  63. package/dist/specs/pdf/pdf-file-status.yaml +148 -0
  64. package/dist/specs/pdf/pdf-file.yaml +136 -0
  65. package/dist/specs/pdf/pdf-files.yaml +85 -0
  66. package/dist/specs/pdf/pdf-resource-download.yaml +117 -0
  67. package/dist/specs/pdf/pdf-resource-upload-binary.yaml +152 -0
  68. package/dist/specs/pdf/pdf-resource-upload.yaml +163 -0
  69. package/dist/specs/pdf/pdf-restrict.yaml +246 -0
  70. package/dist/specs/pdf/pdf-split-pages.yaml +208 -0
  71. package/dist/specs/pdf/pdf-task-status.yaml +187 -0
  72. package/dist/specs/pdf/pdf-to-image.yaml +844 -0
  73. package/dist/specs/pdf/pdf-unrestrict.yaml +221 -0
  74. package/dist/specs/pdf/rotate-pdf-pages.yaml +207 -0
  75. package/dist/specs/phone-validation/bulk-phone-number-validation.yaml +374 -0
  76. package/dist/specs/phone-validation/phone-number-validation.yaml +344 -0
  77. package/dist/specs/scraper/web-scraper.yaml +479 -0
  78. package/dist/specs/screenshot/bulk-screenshot.yaml +728 -0
  79. package/dist/specs/screenshot/website-screenshot.yaml +822 -0
  80. package/dist/specs/ssl/ssl-certificate-chain-lookup.yaml +593 -0
  81. package/dist/specs/ssl/ssl-certificate-lookup.yaml +478 -0
  82. package/dist/specs/timezone/timezone-converter.yaml +249 -0
  83. package/dist/specs/timezone/timezone-lookup.yaml +712 -0
  84. package/dist/specs/user-agent/bulk-user-agent-parser.yaml +340 -0
  85. package/dist/specs/user-agent/user-agent-parser.yaml +271 -0
  86. package/dist/specs/weather/air-quality.yaml +590 -0
  87. package/dist/specs/weather/bulk-live-weather.yaml +654 -0
  88. package/dist/specs/weather/flood-forecast.yaml +519 -0
  89. package/dist/specs/weather/historical-weather.yaml +842 -0
  90. package/dist/specs/weather/live-weather.yaml +633 -0
  91. package/dist/specs/weather/marine-weather.yaml +806 -0
  92. package/dist/specs/weather/time-series-weather.yaml +821 -0
  93. package/dist/specs/weather/weather-forecast.yaml +935 -0
  94. package/dist/specs/whois/asn-lookup.yaml +618 -0
  95. package/dist/specs/whois/bulk-whois-lookup.yaml +827 -0
  96. package/dist/specs/whois/domain-whois-history-lookup.yaml +445 -0
  97. package/dist/specs/whois/reverse-whois.yaml +566 -0
  98. package/dist/specs/whois/whois-domain-lookup.yaml +537 -0
  99. package/dist/specs/whois/whois-ip-lookup.yaml +1123 -0
  100. package/dist/specs/zip-code/bulk-zip-code-lookup.yaml +232 -0
  101. package/dist/specs/zip-code/zip-code-api.yaml +216 -0
  102. package/dist/specs/zip-code/zip-code-distance-match.yaml +239 -0
  103. package/dist/specs/zip-code/zip-code-distance.yaml +233 -0
  104. package/dist/specs/zip-code/zip-codes-by-city.yaml +201 -0
  105. package/dist/specs/zip-code/zip-codes-by-region.yaml +200 -0
  106. package/dist/specs/zip-code/zip-codes-radius-search.yaml +262 -0
  107. package/package.json +6 -2
  108. package/specs/pdf/merge-pdf.json +2 -2
@@ -0,0 +1,590 @@
1
+ openapi: 3.1.1
2
+ info:
3
+ title: Air Quality API - Real-Time AQI & Pollution Monitoring
4
+ version: 1.0.0
5
+ description: Monitor and predict air quality conditions using European (0-100+) and US (0-500) AQI standards. Returns current air quality readings and hourly forecast data up to 5 days ahead depending on the date range provided. Tracks pollutant concentrations including PM10, PM2.5, carbon monoxide, nitrogen dioxide, sulphur dioxide, ozone, and dust particles, plus UV index and aerosol optical depth measurements. Accepts location by city name, GPS coordinates, or IP address. Start/end dates are optional; without them only current conditions are returned.
6
+ contact:
7
+ name: APIFreaks Support
8
+ url: https://apifreaks.com/contact
9
+ email: support@apifreaks.com
10
+ servers:
11
+ - url: https://api.apifreaks.com/v1.0/weather
12
+ description: Air Quality API Server
13
+ paths:
14
+ /air-quality:
15
+ get:
16
+ tags:
17
+ - Weather APIs
18
+ summary: Air pollution monitoring and quality forecasts
19
+ description: Monitor and predict air quality conditions using European and US AQI standards. Track pollutant concentrations including PM10, PM2.5, carbon monoxide, nitrogen dioxide, sulfur dioxide, ozone, and dust particles. Get current readings plus hourly forecasts up to 5 days ahead, complete with UV index and aerosol measurements for comprehensive air quality assessment.
20
+ operationId: getAirQuality
21
+ parameters:
22
+ - name: format
23
+ in: query
24
+ required: false
25
+ description: 'Format of the response. Possible values: json.'
26
+ schema:
27
+ type: string
28
+ enum:
29
+ - json
30
+ default: json
31
+ - name: startDate
32
+ in: query
33
+ schema:
34
+ type: string
35
+ format: date
36
+ description: Starting date for AQI forecast data in YYYY-MM-DD format. Must be supplied together with endDate — passing only one of the two returns a 400 error. Both dates must fall within a rolling window from today through 5 days ahead.
37
+ required: false
38
+ - name: endDate
39
+ in: query
40
+ schema:
41
+ type: string
42
+ format: date
43
+ description: End date for AQI forecast data in YYYY-MM-DD format. Must be supplied together with startDate — passing only one of the two returns a 400 error, and endDate cannot be earlier than startDate. Both dates must fall within a rolling window from today through 5 days ahead.
44
+ required: false
45
+ - name: location
46
+ in: query
47
+ schema:
48
+ type: string
49
+ description: City name, place name, or full address.
50
+ required: false
51
+ - name: lat
52
+ in: query
53
+ schema:
54
+ type: number
55
+ description: Latitude of the location. Must be supplied together with long — passing only one of the two returns a 400 error.
56
+ required: false
57
+ - name: long
58
+ in: query
59
+ schema:
60
+ type: number
61
+ description: Longitude of the location. Must be supplied together with lat — passing only one of the two returns a 400 error.
62
+ required: false
63
+ - name: ip
64
+ in: query
65
+ schema:
66
+ type: string
67
+ description: IP(v4 or v6) address for location inference.
68
+ required: false
69
+ - name: timezone
70
+ in: query
71
+ schema:
72
+ type: string
73
+ description: Timezone for the results.
74
+ required: false
75
+ responses:
76
+ '200':
77
+ description: Successful response
78
+ content:
79
+ application/json:
80
+ schema:
81
+ $ref: '#/components/schemas/AirQualityResponse'
82
+ examples:
83
+ typicalSuccess:
84
+ summary: Current AQI by IP (auto-detected)
85
+ value:
86
+ location:
87
+ continent_code: AS
88
+ continent_name: Asia
89
+ country_code2: PK
90
+ country_code3: PAK
91
+ country_name: Pakistan
92
+ country_name_official: Islamic Republic of Pakistan
93
+ is_eu: false
94
+ state_prov: Punjab
95
+ state_code: PK-PB
96
+ district: Lahore
97
+ city: Lahore
98
+ zipcode: '54000'
99
+ latitude: '31.52037'
100
+ longitude: '74.35875'
101
+ locality: Gulberg
102
+ elevation: ''
103
+ timezone: Asia/Karachi
104
+ timezone_abbreviation: GMT+5
105
+ current:
106
+ timestamp: 2026-07-24T16:00
107
+ european_aqi: 67
108
+ us_aqi: 99
109
+ pm10: 27.4
110
+ pm2_5: 27.2
111
+ carbon_monoxide: 493
112
+ nitrogen_dioxide: 6.2
113
+ sulphur_dioxide: 8.6
114
+ ozone: 169
115
+ dust: 0
116
+ uv_index: 1.95
117
+ aerosol_optical_depth: 0.71
118
+ uv_index_clear_sky: 2.25
119
+ forecastSuccess:
120
+ summary: Forecast AQI by location and date range
121
+ value:
122
+ location:
123
+ location_string: Paris,France
124
+ country_name: France
125
+ state_prov: Ile-de-France
126
+ city: Paris
127
+ locality: ''
128
+ latitude: '48.85889'
129
+ longitude: '2.32004'
130
+ elevation: '0'
131
+ timezone: Europe/Paris
132
+ timezone_abbreviation: GMT+2
133
+ forecast:
134
+ '2026-07-25':
135
+ hourly:
136
+ - timestamp: 2026-07-25T00:00
137
+ pm10: 14.8
138
+ carbon_monoxide: 200
139
+ pm2_5: 8.5
140
+ carbon_dioxide: 446
141
+ nitrogen_dioxide: 17.1
142
+ sulphur_dioxide: 1
143
+ ozone: 63
144
+ dust: 0
145
+ uv_index: 0
146
+ aerosol_optical_depth: 0.2
147
+ uv_index_clear_sky: 0
148
+ - timestamp: 2026-07-25T01:00
149
+ pm10: 16.1
150
+ carbon_monoxide: 202
151
+ pm2_5: 8.4
152
+ carbon_dioxide: 449
153
+ nitrogen_dioxide: 15.9
154
+ sulphur_dioxide: 0.9
155
+ ozone: 60
156
+ dust: 0
157
+ uv_index: 0
158
+ aerosol_optical_depth: 0.2
159
+ uv_index_clear_sky: 0
160
+ '400':
161
+ description: Bad Request — Invalid or incomplete parameters
162
+ content:
163
+ application/json:
164
+ schema:
165
+ $ref: '#/components/schemas/ErrorResponse'
166
+ examples:
167
+ InvalidCoordinates:
168
+ summary: Coordinates out of range
169
+ value:
170
+ timestamp: '2026-07-24T11:34:36.550Z'
171
+ status: 400
172
+ message: Invalid latitude or longitude values. Latitude must be between -90 and 90, and longitude must be between -180 and 180
173
+ error: invalid-params
174
+ path: /v1.0/weather/air-quality
175
+ InvalidIP:
176
+ summary: Malformed IP address
177
+ value:
178
+ timestamp: '2026-07-24T11:34:37.632Z'
179
+ status: 400
180
+ message: Invalid IP address
181
+ error: invalid-params
182
+ path: /v1.0/weather/air-quality
183
+ InvalidTimezone:
184
+ summary: Invalid timezone
185
+ value:
186
+ timestamp: '2026-07-24T11:34:38.657Z'
187
+ status: 400
188
+ message: Check whether your input value is correct; timezone = NotATimezone
189
+ error: error
190
+ path: /v1.0/weather/air-quality
191
+ MissingPairedParam:
192
+ summary: Only one of a required pair supplied
193
+ value:
194
+ error: Invalid Param Exception
195
+ message: please pass correct parameters
196
+ path: /v1.0/weather/air-quality
197
+ status: 400
198
+ timestamp: '2026-07-24T11:34:56.768Z'
199
+ InvalidDateFormat:
200
+ summary: Date not in YYYY-MM-DD format
201
+ value:
202
+ timestamp: '2026-07-24T11:35:41.151Z'
203
+ status: 400
204
+ message: startDate must be in yyyy-mm-dd format
205
+ error: invalid-params
206
+ path: /v1.0/weather/air-quality
207
+ InvalidDateOrder:
208
+ summary: endDate before startDate
209
+ value:
210
+ timestamp: '2026-07-24T11:36:03.105Z'
211
+ status: 400
212
+ message: startDate must be before or equal to endDate
213
+ error: params-exception-error
214
+ path: /v1.0/weather/air-quality
215
+ DateRangeOutOfBounds:
216
+ summary: Date range outside allowed window
217
+ value:
218
+ timestamp: '2026-07-24T11:34:45.616Z'
219
+ status: 400
220
+ message: Forecast date range must be within 2026-07-24 to 2026-07-29
221
+ error: params-exception-error
222
+ path: /v1.0/weather/air-quality
223
+ '404':
224
+ description: Not Found — Location could not be resolved
225
+ content:
226
+ application/json:
227
+ schema:
228
+ $ref: '#/components/schemas/ErrorResponse'
229
+ examples:
230
+ LocationNotFound:
231
+ summary: Location not found
232
+ value:
233
+ timestamp: '2026-07-24T11:34:37.139Z'
234
+ status: 404
235
+ message: Location not found
236
+ error: error
237
+ path: /v1.0/weather/air-quality
238
+ components:
239
+ securitySchemes:
240
+ ApiKeyAuthHeader:
241
+ type: apiKey
242
+ in: header
243
+ name: X-apiKey
244
+ description: Pass your API key via the X-apiKey request header.
245
+ ApiKeyAuthQuery:
246
+ type: apiKey
247
+ in: query
248
+ name: apiKey
249
+ description: Pass your API key via the apiKey query parameter.
250
+ schemas:
251
+ AirQualityResponse:
252
+ type: object
253
+ properties:
254
+ location:
255
+ $ref: '#/components/schemas/WeatherLocation'
256
+ current:
257
+ $ref: '#/components/schemas/AirQuality'
258
+ description: Current air quality data, present when the request omits startDate/endDate.
259
+ forecast:
260
+ $ref: '#/components/schemas/AirQualityForecast'
261
+ description: Date-keyed forecast data, present when the request includes startDate/endDate.
262
+ required:
263
+ - location
264
+ description: Air quality response containing location data plus either current observations or date-keyed forecast data. current and forecast are mutually exclusive — a single request never returns both.
265
+ LocationByCoordinates:
266
+ type: object
267
+ required:
268
+ - latitude
269
+ - longitude
270
+ - country_name
271
+ - state_prov
272
+ - city
273
+ - timezone
274
+ - timezone_abbreviation
275
+ properties:
276
+ latitude:
277
+ type: string
278
+ description: Geographic latitude coordinate in decimal degrees, ranging from -90 (South Pole) to +90 (North Pole). Returned as a string, not a number.
279
+ longitude:
280
+ type: string
281
+ description: Geographic longitude coordinate in decimal degrees, ranging from -180 (West) to +180 (East). Returned as a string, not a number.
282
+ country_name:
283
+ type: string
284
+ description: Full name of the country corresponding to the provided coordinates.
285
+ state_prov:
286
+ type: string
287
+ description: State, province, or primary administrative division name for the location.
288
+ city:
289
+ type: string
290
+ description: City or municipal area name associated with the coordinate location.
291
+ locality:
292
+ type: string
293
+ description: Specific locality, neighborhood, district, or village name within the broader area.
294
+ elevation:
295
+ type: string
296
+ description: Height above mean sea level in meters for the specified coordinates. Returned as a string, not a number, and can be an empty string when unavailable.
297
+ timezone:
298
+ type: string
299
+ description: IANA timezone database identifier for the location (e.g., America/New_York, Europe/London).
300
+ timezone_abbreviation:
301
+ type: string
302
+ description: Abbreviated timezone representation based on current offset (e.g., EST, GMT, PST).
303
+ description: Location data when the target is specified by GPS coordinates (lat/long).
304
+ LocationByIP:
305
+ type: object
306
+ required:
307
+ - continent_code
308
+ - continent_name
309
+ - country_code2
310
+ - country_code3
311
+ - country_name
312
+ - country_name_official
313
+ - state_prov
314
+ - city
315
+ - latitude
316
+ - longitude
317
+ - timezone
318
+ - timezone_abbreviation
319
+ properties:
320
+ continent_code:
321
+ type: string
322
+ description: Two-letter continent code (e.g., NA for North America, EU for Europe, AS for Asia).
323
+ continent_name:
324
+ type: string
325
+ description: Full name of the continent where the IP address is registered.
326
+ country_code2:
327
+ type: string
328
+ description: ISO 3166-1 alpha-2 two-letter country code (e.g., US, GB, FR).
329
+ country_code3:
330
+ type: string
331
+ description: ISO 3166-1 alpha-3 three-letter country code (e.g., USA, GBR, FRA).
332
+ country_name:
333
+ type: string
334
+ description: Common name of the country associated with the IP address.
335
+ country_name_official:
336
+ type: string
337
+ description: Official long-form country name as recognized internationally (e.g., United States of America).
338
+ is_eu:
339
+ type: boolean
340
+ description: Boolean flag indicating whether the country is a member state of the European Union.
341
+ state_prov:
342
+ type: string
343
+ description: State, province, or primary administrative division associated with the IP location.
344
+ state_code:
345
+ type: string
346
+ description: ISO 3166-2 subdivision code for the state or province (e.g., CA for California).
347
+ district:
348
+ type: string
349
+ description: District, county, or secondary administrative division within the region.
350
+ city:
351
+ type: string
352
+ description: City or urban area name where the IP address is geographically registered.
353
+ zipcode:
354
+ type: string
355
+ description: Postal code or ZIP code for the approximate location of the IP address.
356
+ latitude:
357
+ type: string
358
+ description: Geographic latitude in decimal degrees for the IP geolocation, ranging from -90 to +90. Returned as a string, not a number.
359
+ longitude:
360
+ type: string
361
+ description: Geographic longitude in decimal degrees for the IP geolocation, ranging from -180 to +180. Returned as a string, not a number.
362
+ locality:
363
+ type: string
364
+ description: Specific locality, neighborhood, or small area designation within the city.
365
+ elevation:
366
+ type: string
367
+ description: Elevation above mean sea level in meters for the IP geolocation. Returned as a string, not a number, and can be an empty string when unavailable.
368
+ timezone:
369
+ type: string
370
+ description: IANA timezone database identifier for the IP location (e.g., America/Chicago, Asia/Tokyo).
371
+ timezone_abbreviation:
372
+ type: string
373
+ description: Current timezone abbreviation based on local offset (e.g., CST, JST, UTC).
374
+ description: Location data when the target is inferred from an IP address.
375
+ LocationByAddress:
376
+ type: object
377
+ required:
378
+ - location_string
379
+ - country_name
380
+ - state_prov
381
+ - city
382
+ - latitude
383
+ - longitude
384
+ - timezone
385
+ - timezone_abbreviation
386
+ properties:
387
+ location_string:
388
+ type: string
389
+ description: Original location query string as submitted, including full address or place name.
390
+ country_name:
391
+ type: string
392
+ description: Resolved country name derived from the geocoded location query.
393
+ state_prov:
394
+ type: string
395
+ description: State, province, or primary administrative division identified from the location.
396
+ city:
397
+ type: string
398
+ description: City or municipal area name extracted from the geocoded location.
399
+ locality:
400
+ type: string
401
+ description: Specific locality, neighborhood, suburb, or village within the geocoded area.
402
+ latitude:
403
+ type: string
404
+ description: Geocoded latitude coordinate in decimal degrees, ranging from -90 to +90. Returned as a string, not a number.
405
+ longitude:
406
+ type: string
407
+ description: Geocoded longitude coordinate in decimal degrees, ranging from -180 to +180. Returned as a string, not a number.
408
+ elevation:
409
+ type: string
410
+ description: Elevation above mean sea level in meters at the geocoded coordinates. Returned as a string, not a number, and can be an empty string when unavailable.
411
+ timezone:
412
+ type: string
413
+ description: IANA timezone database identifier for the geocoded location (e.g., America/Los_Angeles).
414
+ timezone_abbreviation:
415
+ type: string
416
+ description: Current timezone abbreviation for the location based on local offset (e.g., PDT, CET).
417
+ description: Location data when the target is specified by a city name or address string.
418
+ AirQuality:
419
+ type: object
420
+ required:
421
+ - timestamp
422
+ - european_aqi
423
+ - us_aqi
424
+ - pm10
425
+ - pm2_5
426
+ - carbon_monoxide
427
+ - nitrogen_dioxide
428
+ - sulphur_dioxide
429
+ - ozone
430
+ - dust
431
+ - uv_index
432
+ - aerosol_optical_depth
433
+ - uv_index_clear_sky
434
+ properties:
435
+ timestamp:
436
+ type: string
437
+ format: date-time
438
+ description: ISO 8601 formatted timestamp (iso8601).
439
+ european_aqi:
440
+ type: integer
441
+ 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).'
442
+ us_aqi:
443
+ type: integer
444
+ 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).'
445
+ pm10:
446
+ type: number
447
+ format: float
448
+ description: Particulate matter with diameter less than 10 micrometers (μg/m³) measured at 10 meters above ground.
449
+ pm2_5:
450
+ type: number
451
+ format: float
452
+ description: Particulate matter with diameter less than 2.5 micrometers (μg/m³) measured at 10 meters above ground.
453
+ carbon_monoxide:
454
+ type: number
455
+ format: float
456
+ description: Atmospheric carbon monoxide gas concentration (μg/m³) at 10 meters above ground.
457
+ nitrogen_dioxide:
458
+ type: number
459
+ format: float
460
+ description: Atmospheric nitrogen dioxide gas concentration (μg/m³) at 10 meters above ground.
461
+ sulphur_dioxide:
462
+ type: number
463
+ format: float
464
+ description: Atmospheric sulphur dioxide gas concentration (μg/m³) at 10 meters above ground.
465
+ ozone:
466
+ type: number
467
+ format: float
468
+ description: Atmospheric ozone gas concentration (μg/m³) at 10 meters above ground.
469
+ dust:
470
+ type: number
471
+ format: float
472
+ description: Saharan dust particle concentration (μg/m³) at 10 meters above ground.
473
+ uv_index:
474
+ type: number
475
+ format: float
476
+ description: Ultraviolet radiation intensity index accounting for cloud coverage.
477
+ aerosol_optical_depth:
478
+ type: number
479
+ format: float
480
+ description: Aerosol optical depth at 550 nm wavelength indicating atmospheric haze levels.
481
+ uv_index_clear_sky:
482
+ type: number
483
+ format: float
484
+ description: Ultraviolet radiation intensity index assuming cloud-free conditions.
485
+ description: Air quality metrics including European and US AQI indices plus individual pollutant concentrations.
486
+ AirQualityHourly:
487
+ type: object
488
+ properties:
489
+ timestamp:
490
+ type: string
491
+ format: date-time
492
+ description: ISO 8601 formatted timestamp
493
+ pm10:
494
+ type: number
495
+ description: Concentration of particulate matter ≤10 micrometers (μg/m³)
496
+ carbon_monoxide:
497
+ type: number
498
+ description: Concentration of carbon monoxide (μg/m³)
499
+ pm2_5:
500
+ type: number
501
+ description: Concentration of particulate matter ≤2.5 micrometers (μg/m³)
502
+ carbon_dioxide:
503
+ type: number
504
+ description: Concentration of carbon dioxide (ppm)
505
+ nitrogen_dioxide:
506
+ type: number
507
+ description: Concentration of nitrogen dioxide (μg/m³)
508
+ sulphur_dioxide:
509
+ type: number
510
+ description: Concentration of sulphur dioxide (μg/m³)
511
+ ozone:
512
+ type: number
513
+ description: Concentration of ozone (μg/m³)
514
+ dust:
515
+ type: number
516
+ description: Concentration of dust particles (μg/m³)
517
+ uv_index:
518
+ type: number
519
+ description: Ultraviolet radiation index
520
+ aerosol_optical_depth:
521
+ type: number
522
+ description: Aerosol optical depth
523
+ uv_index_clear_sky:
524
+ type: number
525
+ description: Ultraviolet radiation index under clear sky conditions
526
+ required:
527
+ - timestamp
528
+ - pm10
529
+ - carbon_monoxide
530
+ - pm2_5
531
+ - carbon_dioxide
532
+ - nitrogen_dioxide
533
+ - sulphur_dioxide
534
+ - ozone
535
+ - dust
536
+ - uv_index
537
+ - aerosol_optical_depth
538
+ - uv_index_clear_sky
539
+ description: Hourly air quality forecast reading with pollutant concentrations and UV index.
540
+ ErrorResponse:
541
+ type: object
542
+ description: Standard error envelope returned by the API on failed requests.
543
+ required:
544
+ - message
545
+ properties:
546
+ error:
547
+ type: string
548
+ description: Short error category or exception type.
549
+ message:
550
+ type: string
551
+ description: Human-readable error message describing the failure.
552
+ path:
553
+ type: string
554
+ description: API endpoint path that produced the error.
555
+ status:
556
+ type: integer
557
+ description: HTTP status code returned with the error.
558
+ timestamp:
559
+ type: string
560
+ format: date-time
561
+ description: Timestamp when the error occurred (ISO 8601).
562
+ WeatherLocation:
563
+ type: object
564
+ description: Location information
565
+ oneOf:
566
+ - description: Location data when the target is specified by GPS coordinates (lat/long).
567
+ $ref: '#/components/schemas/LocationByCoordinates'
568
+ - description: Location data when the target is inferred from an IP address.
569
+ $ref: '#/components/schemas/LocationByIP'
570
+ - description: Location data when the target is specified by a city name or address string.
571
+ $ref: '#/components/schemas/LocationByAddress'
572
+ AirQualityForecast:
573
+ type: object
574
+ description: Forecast data object keyed by date (YYYY-MM-DD), one key per day in the requested startDate/endDate range. The key names are dynamic dates, not a fixed schema property.
575
+ additionalProperties:
576
+ $ref: '#/components/schemas/AirQualityForecastDay'
577
+ AirQualityForecastDay:
578
+ type: object
579
+ description: Air quality forecast data for a single day, containing hourly readings.
580
+ required:
581
+ - hourly
582
+ properties:
583
+ hourly:
584
+ type: array
585
+ description: Array of hourly air quality readings for this day.
586
+ items:
587
+ $ref: '#/components/schemas/AirQualityHourly'
588
+ security:
589
+ - ApiKeyAuthHeader: []
590
+ - ApiKeyAuthQuery: []