@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,441 @@
|
|
|
1
|
+
{
|
|
2
|
+
"openapi": "3.1.1",
|
|
3
|
+
"info": {
|
|
4
|
+
"title": "Bulk User Agent Parser - Multi User Agent Parsing",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"description": "Parse multiple User-Agent strings in a single POST request to obtain detailed browser, device, operating system, and rendering engine information for each string. Supports up to 50,000 User-Agent strings per request. Each entry in the response array mirrors the shape of a single User Agent Parser result --- including browser/app name and version, device hardware (name, type, brand, CPU), layout engine data, and operating system metadata --- in the same order as the request. A malformed/unparsable (but non-empty) string does not fail the batch; it simply comes back with every classification field set to `Hacker`, just like the single-lookup endpoint. An empty string or `null` anywhere in the array does fail the whole request with a `400`, not a per-item error --- there is no partial-failure array shape for this endpoint.",
|
|
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",
|
|
16
|
+
"description": "Bulk User Agent Parser API Server"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"paths": {
|
|
20
|
+
"/user-agent/lookup": {
|
|
21
|
+
"post": {
|
|
22
|
+
"tags": ["User Agent APIs"],
|
|
23
|
+
"summary": "Parse multiple User-Agent strings in a single request to obtain browser, device, and operating system details",
|
|
24
|
+
"description": "Parse up to 50,000 User-Agent strings simultaneously in a single request. Returns structured details about the browser, device, layout engine, and operating system for each string.",
|
|
25
|
+
"operationId": "bulkParseUserAgent",
|
|
26
|
+
"parameters": [
|
|
27
|
+
{
|
|
28
|
+
"name": "format",
|
|
29
|
+
"in": "query",
|
|
30
|
+
"required": false,
|
|
31
|
+
"description": "Format of the response. Possible values: json, xml.",
|
|
32
|
+
"schema": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"enum": ["json", "xml"],
|
|
35
|
+
"default": "json"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"requestBody": {
|
|
40
|
+
"required": true,
|
|
41
|
+
"content": {
|
|
42
|
+
"application/json": {
|
|
43
|
+
"schema": {
|
|
44
|
+
"$ref": "#/components/schemas/BulkUserAgentRequest"
|
|
45
|
+
},
|
|
46
|
+
"examples": {
|
|
47
|
+
"typicalRequest": {
|
|
48
|
+
"summary": "Example request body",
|
|
49
|
+
"value": {
|
|
50
|
+
"uaStrings": [
|
|
51
|
+
"Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
|
|
52
|
+
"Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+",
|
|
53
|
+
"Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)"
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"responses": {
|
|
62
|
+
"200": {
|
|
63
|
+
"description": "Successful response with parsed user agent data for each input string",
|
|
64
|
+
"content": {
|
|
65
|
+
"application/json": {
|
|
66
|
+
"schema": {
|
|
67
|
+
"$ref": "#/components/schemas/BulkUserAgentParserResponse"
|
|
68
|
+
},
|
|
69
|
+
"examples": {
|
|
70
|
+
"typicalSuccess": {
|
|
71
|
+
"summary": "Typical successful response",
|
|
72
|
+
"value": [
|
|
73
|
+
{
|
|
74
|
+
"user_agent_string": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
|
|
75
|
+
"name": "Chrome",
|
|
76
|
+
"type": "Browser",
|
|
77
|
+
"version": "62.0.3202.84",
|
|
78
|
+
"version_major": "62",
|
|
79
|
+
"device": {
|
|
80
|
+
"name": "Samsung SM-G960F",
|
|
81
|
+
"type": "Phone",
|
|
82
|
+
"brand": "Samsung",
|
|
83
|
+
"cpu": "Unknown"
|
|
84
|
+
},
|
|
85
|
+
"engine": {
|
|
86
|
+
"name": "Blink",
|
|
87
|
+
"type": "Browser",
|
|
88
|
+
"version": "62.0",
|
|
89
|
+
"version_major": "62"
|
|
90
|
+
},
|
|
91
|
+
"operating_system": {
|
|
92
|
+
"name": "Android",
|
|
93
|
+
"type": "Mobile",
|
|
94
|
+
"version": "8.0.0",
|
|
95
|
+
"version_major": "8",
|
|
96
|
+
"build": "R16NW"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"user_agent_string": "Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+",
|
|
101
|
+
"name": "Kindle",
|
|
102
|
+
"type": "Browser",
|
|
103
|
+
"version": "3.0",
|
|
104
|
+
"version_major": "3",
|
|
105
|
+
"device": {
|
|
106
|
+
"name": "Amazon Kindle",
|
|
107
|
+
"type": "eReader",
|
|
108
|
+
"brand": "Amazon",
|
|
109
|
+
"cpu": "ARMv7l"
|
|
110
|
+
},
|
|
111
|
+
"engine": {
|
|
112
|
+
"name": "AppleWebKit",
|
|
113
|
+
"type": "Browser",
|
|
114
|
+
"version": "531.2",
|
|
115
|
+
"version_major": "531"
|
|
116
|
+
},
|
|
117
|
+
"operating_system": {
|
|
118
|
+
"name": "FireOS",
|
|
119
|
+
"type": "Mobile",
|
|
120
|
+
"version": "??",
|
|
121
|
+
"version_major": "??",
|
|
122
|
+
"build": "??"
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"user_agent_string": "Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)",
|
|
127
|
+
"name": "Kindle",
|
|
128
|
+
"type": "Browser",
|
|
129
|
+
"version": "3.0",
|
|
130
|
+
"version_major": "3",
|
|
131
|
+
"device": {
|
|
132
|
+
"name": "Amazon Kindle",
|
|
133
|
+
"type": "eReader",
|
|
134
|
+
"brand": "Amazon",
|
|
135
|
+
"cpu": "Unknown"
|
|
136
|
+
},
|
|
137
|
+
"engine": {
|
|
138
|
+
"name": "AppleWebKit",
|
|
139
|
+
"type": "Browser",
|
|
140
|
+
"version": "528.5",
|
|
141
|
+
"version_major": "528"
|
|
142
|
+
},
|
|
143
|
+
"operating_system": {
|
|
144
|
+
"name": "FireOS",
|
|
145
|
+
"type": "Mobile",
|
|
146
|
+
"version": "??",
|
|
147
|
+
"version_major": "??",
|
|
148
|
+
"build": "??"
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
},
|
|
153
|
+
"mixedWithUnparsable": {
|
|
154
|
+
"summary": "Batch with a malformed (non-empty) string \u2014 still 200, that entry comes back as Hacker",
|
|
155
|
+
"value": [
|
|
156
|
+
{
|
|
157
|
+
"user_agent_string": "asdkjaslkdjaslkdj12312",
|
|
158
|
+
"name": "Hacker",
|
|
159
|
+
"type": "Hacker",
|
|
160
|
+
"version": "Hacker",
|
|
161
|
+
"version_major": "Hacker",
|
|
162
|
+
"device": {
|
|
163
|
+
"name": "Hacker",
|
|
164
|
+
"type": "Hacker",
|
|
165
|
+
"brand": "Hacker",
|
|
166
|
+
"cpu": "Unknown"
|
|
167
|
+
},
|
|
168
|
+
"engine": {
|
|
169
|
+
"name": "Hacker",
|
|
170
|
+
"type": "Hacker",
|
|
171
|
+
"version": "Hacker",
|
|
172
|
+
"version_major": "Hacker"
|
|
173
|
+
},
|
|
174
|
+
"operating_system": {
|
|
175
|
+
"name": "Hacker",
|
|
176
|
+
"type": "Hacker",
|
|
177
|
+
"version": "Hacker",
|
|
178
|
+
"version_major": "Hacker",
|
|
179
|
+
"build": "??"
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"user_agent_string": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
|
|
184
|
+
"name": "Googlebot",
|
|
185
|
+
"type": "Robot",
|
|
186
|
+
"version": "2.1",
|
|
187
|
+
"version_major": "2",
|
|
188
|
+
"device": {
|
|
189
|
+
"name": "Google",
|
|
190
|
+
"type": "Robot",
|
|
191
|
+
"brand": "Google",
|
|
192
|
+
"cpu": "Unknown"
|
|
193
|
+
},
|
|
194
|
+
"engine": {
|
|
195
|
+
"name": "Googlebot",
|
|
196
|
+
"type": "Robot",
|
|
197
|
+
"version": "??",
|
|
198
|
+
"version_major": "??"
|
|
199
|
+
},
|
|
200
|
+
"operating_system": {
|
|
201
|
+
"name": "Google Cloud",
|
|
202
|
+
"type": "Cloud",
|
|
203
|
+
"version": "??",
|
|
204
|
+
"version_major": "??",
|
|
205
|
+
"build": "??"
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
]
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
"400": {
|
|
215
|
+
"description": "Bad Request \u2014 Invalid/missing request body, or an empty/null string anywhere in uaStrings (fails the whole batch, not a per-item error)",
|
|
216
|
+
"content": {
|
|
217
|
+
"application/json": {
|
|
218
|
+
"schema": {
|
|
219
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
220
|
+
},
|
|
221
|
+
"examples": {
|
|
222
|
+
"missingRequestBody": {
|
|
223
|
+
"summary": "Missing, empty, or wrong-type request body",
|
|
224
|
+
"value": {
|
|
225
|
+
"error": "Invalid request body Exception",
|
|
226
|
+
"message": "Please provide data in required format in request body",
|
|
227
|
+
"path": "/v1.0/user-agent/lookup",
|
|
228
|
+
"status": 400,
|
|
229
|
+
"timestamp": "2026-07-24T10:16:11.030Z"
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
"emptyUserAgentString": {
|
|
233
|
+
"summary": "Empty string or null inside uaStrings array",
|
|
234
|
+
"value": {
|
|
235
|
+
"message": "'userAgentString' must not be empty or null"
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
"components": {
|
|
247
|
+
"securitySchemes": {
|
|
248
|
+
"ApiKeyAuthHeader": {
|
|
249
|
+
"type": "apiKey",
|
|
250
|
+
"in": "header",
|
|
251
|
+
"name": "X-apiKey",
|
|
252
|
+
"description": "Pass your API key via the X-apiKey request header."
|
|
253
|
+
},
|
|
254
|
+
"ApiKeyAuthQuery": {
|
|
255
|
+
"type": "apiKey",
|
|
256
|
+
"in": "query",
|
|
257
|
+
"name": "apiKey",
|
|
258
|
+
"description": "Pass your API key via the apiKey query parameter."
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
"schemas": {
|
|
262
|
+
"BulkUserAgentRequest": {
|
|
263
|
+
"type": "object",
|
|
264
|
+
"description": "Request body containing an array of User-Agent strings to parse.",
|
|
265
|
+
"required": ["uaStrings"],
|
|
266
|
+
"properties": {
|
|
267
|
+
"uaStrings": {
|
|
268
|
+
"type": "array",
|
|
269
|
+
"description": "Array of User-Agent strings to parse. Maximum 50,000 strings per request.",
|
|
270
|
+
"maxItems": 50000,
|
|
271
|
+
"items": {
|
|
272
|
+
"type": "string"
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
"BulkUserAgentParserResponse": {
|
|
278
|
+
"title": "UserAgentParserResponse",
|
|
279
|
+
"type": "array",
|
|
280
|
+
"description": "Array of per-string parsed User-Agent results, one entry per input string, in the same order as the request. Unlike the bulk IP lookup endpoint, there is no per-item error variant here: a malformed (non-empty) string still parses to a full result with every field set to \"Hacker\" (see UserAgentParserResponse). An empty string or null anywhere in the request array fails the entire request with a 400 instead of producing a per-item error entry --- see the 400 response.",
|
|
281
|
+
"items": {
|
|
282
|
+
"$ref": "#/components/schemas/UserAgentParserResponse"
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
"UserAgentParserResponse": {
|
|
286
|
+
"type": "object",
|
|
287
|
+
"description": "Parsed User-Agent result containing browser, device, engine, and operating system information. When the User-Agent string is malformed or cannot be parsed, every field across this object and its nested device/engine/operating_system objects is set to the literal string \"Hacker\" instead of the request failing.",
|
|
288
|
+
"required": [
|
|
289
|
+
"user_agent_string",
|
|
290
|
+
"name",
|
|
291
|
+
"type",
|
|
292
|
+
"version",
|
|
293
|
+
"version_major",
|
|
294
|
+
"device",
|
|
295
|
+
"engine",
|
|
296
|
+
"operating_system"
|
|
297
|
+
],
|
|
298
|
+
"properties": {
|
|
299
|
+
"user_agent_string": {
|
|
300
|
+
"type": "string",
|
|
301
|
+
"description": "The raw User-Agent string that was parsed for browser, device, and operating system details."
|
|
302
|
+
},
|
|
303
|
+
"name": {
|
|
304
|
+
"type": "string",
|
|
305
|
+
"description": "Name of the browser, crawler, or application identified from the User-Agent string."
|
|
306
|
+
},
|
|
307
|
+
"type": {
|
|
308
|
+
"type": "string",
|
|
309
|
+
"description": "Category of the agent. Possible values: Browser, Browser Webview, Mobile App, Robot Mobile, Cloud Application, Email Client, Voice, Special, Testclient, Hacker, Unknown."
|
|
310
|
+
},
|
|
311
|
+
"version": {
|
|
312
|
+
"type": "string",
|
|
313
|
+
"description": "Full version string of the browser or application. \"??\" when the version could not be determined; \"Hacker\" when the User-Agent string itself is malformed/unparsable."
|
|
314
|
+
},
|
|
315
|
+
"version_major": {
|
|
316
|
+
"type": "string",
|
|
317
|
+
"description": "Major version number extracted from the version string. \"??\" when the version could not be determined; \"Hacker\" when the User-Agent string itself is malformed/unparsable."
|
|
318
|
+
},
|
|
319
|
+
"device": {
|
|
320
|
+
"$ref": "#/components/schemas/Device"
|
|
321
|
+
},
|
|
322
|
+
"engine": {
|
|
323
|
+
"$ref": "#/components/schemas/Engine"
|
|
324
|
+
},
|
|
325
|
+
"operating_system": {
|
|
326
|
+
"$ref": "#/components/schemas/OperatingSystem"
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
"Device": {
|
|
331
|
+
"type": "object",
|
|
332
|
+
"description": "Hardware device information extracted from the User-Agent string.",
|
|
333
|
+
"required": ["name", "type", "brand", "cpu"],
|
|
334
|
+
"properties": {
|
|
335
|
+
"name": {
|
|
336
|
+
"type": "string",
|
|
337
|
+
"description": "Device name or model identifier of the hardware used."
|
|
338
|
+
},
|
|
339
|
+
"type": {
|
|
340
|
+
"type": "string",
|
|
341
|
+
"description": "Device category. Possible values: Desktop, Mobile, Tablet, Phone, Watch, Virtual Reality, eReader, Set-top box, TV, Game Console, Handheld Game Console, Voice, Robot, Robot Mobile, Robot Imitator, Hacker, Anonymized, Unknown."
|
|
342
|
+
},
|
|
343
|
+
"brand": {
|
|
344
|
+
"type": "string",
|
|
345
|
+
"description": "Device manufacturer or brand name."
|
|
346
|
+
},
|
|
347
|
+
"cpu": {
|
|
348
|
+
"type": "string",
|
|
349
|
+
"description": "CPU architecture or model identifier of the device."
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
"Engine": {
|
|
354
|
+
"type": "object",
|
|
355
|
+
"description": "Layout or rendering engine information extracted from the User-Agent string.",
|
|
356
|
+
"required": ["name", "type", "version", "version_major"],
|
|
357
|
+
"properties": {
|
|
358
|
+
"name": {
|
|
359
|
+
"type": "string",
|
|
360
|
+
"description": "Name of the layout or rendering engine (e.g., Blink, Gecko, WebKit)."
|
|
361
|
+
},
|
|
362
|
+
"type": {
|
|
363
|
+
"type": "string",
|
|
364
|
+
"description": "Engine category. Possible values: Browser, Mobile App, Hacker, Robot, Unknown."
|
|
365
|
+
},
|
|
366
|
+
"version": {
|
|
367
|
+
"type": "string",
|
|
368
|
+
"description": "Full version string of the layout engine. \"??\" when unknown; \"Hacker\" when the User-Agent string itself is malformed/unparsable."
|
|
369
|
+
},
|
|
370
|
+
"version_major": {
|
|
371
|
+
"type": "string",
|
|
372
|
+
"description": "Major version number of the layout engine. \"??\" when unknown; \"Hacker\" when the User-Agent string itself is malformed/unparsable."
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
"OperatingSystem": {
|
|
377
|
+
"type": "object",
|
|
378
|
+
"description": "Operating system information extracted from the User-Agent string.",
|
|
379
|
+
"required": ["name", "type", "version", "version_major", "build"],
|
|
380
|
+
"properties": {
|
|
381
|
+
"name": {
|
|
382
|
+
"type": "string",
|
|
383
|
+
"description": "Name of the operating system (e.g., Windows, Android, Ubuntu)."
|
|
384
|
+
},
|
|
385
|
+
"type": {
|
|
386
|
+
"type": "string",
|
|
387
|
+
"description": "Operating system category. Possible values: Desktop, Mobile, Game Console, Embedded, Cloud, Hacker, Anonymized, Unknown."
|
|
388
|
+
},
|
|
389
|
+
"version": {
|
|
390
|
+
"type": "string",
|
|
391
|
+
"description": "Full version string of the operating system. \"??\" when unknown; \"Hacker\" when the User-Agent string itself is malformed/unparsable."
|
|
392
|
+
},
|
|
393
|
+
"version_major": {
|
|
394
|
+
"type": "string",
|
|
395
|
+
"description": "Major version number of the operating system. \"??\" when unknown; \"Hacker\" when the User-Agent string itself is malformed/unparsable."
|
|
396
|
+
},
|
|
397
|
+
"build": {
|
|
398
|
+
"type": "string",
|
|
399
|
+
"description": "Build number or identifier of the operating system. \"??\" when unknown."
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
"ErrorResponse": {
|
|
404
|
+
"type": "object",
|
|
405
|
+
"description": "Standard error envelope returned by the API on failed requests. Request-body-level errors (missing/empty/wrong-type body) include all five fields; per-item validation errors (empty/null string in uaStrings) include only message.",
|
|
406
|
+
"required": ["message"],
|
|
407
|
+
"properties": {
|
|
408
|
+
"error": {
|
|
409
|
+
"type": "string",
|
|
410
|
+
"description": "Short error category or exception type."
|
|
411
|
+
},
|
|
412
|
+
"message": {
|
|
413
|
+
"type": "string",
|
|
414
|
+
"description": "Human-readable error message describing the failure."
|
|
415
|
+
},
|
|
416
|
+
"path": {
|
|
417
|
+
"type": "string",
|
|
418
|
+
"description": "API endpoint path that produced the error."
|
|
419
|
+
},
|
|
420
|
+
"status": {
|
|
421
|
+
"type": "integer",
|
|
422
|
+
"description": "HTTP status code returned with the error."
|
|
423
|
+
},
|
|
424
|
+
"timestamp": {
|
|
425
|
+
"type": "string",
|
|
426
|
+
"format": "date-time",
|
|
427
|
+
"description": "Timestamp when the error occurred (ISO 8601)."
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
"security": [
|
|
434
|
+
{
|
|
435
|
+
"ApiKeyAuthHeader": []
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"ApiKeyAuthQuery": []
|
|
439
|
+
}
|
|
440
|
+
]
|
|
441
|
+
}
|