@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,518 @@
|
|
|
1
|
+
{
|
|
2
|
+
"openapi": "3.1.1",
|
|
3
|
+
"info": {
|
|
4
|
+
"title": "Bulk Phone Validation API - Validate and Verify Numbers and Carrier in Batches",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"description": "Validate up to 100 phone numbers in a single POST request. Each number is processed independently — invalid entries return per-number results without affecting the rest of the batch. Returns an array of validation results with the same structure as the single Phone Validation API.",
|
|
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 Phone Validation API Server"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"paths": {
|
|
20
|
+
"/phone/validation/bulk": {
|
|
21
|
+
"post": {
|
|
22
|
+
"tags": ["Phone Validation APIs"],
|
|
23
|
+
"summary": "Bulk validate phone numbers",
|
|
24
|
+
"description": "Validates up to 100 phone numbers in a single request. Each number is processed independently — invalid entries return per-number errors without affecting the rest of the batch.",
|
|
25
|
+
"parameters": [
|
|
26
|
+
{
|
|
27
|
+
"name": "format",
|
|
28
|
+
"in": "query",
|
|
29
|
+
"required": false,
|
|
30
|
+
"schema": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"enum": ["json", "xml"],
|
|
33
|
+
"default": "json"
|
|
34
|
+
},
|
|
35
|
+
"description": "Specifies the desired format for the API response. Choose 'json' for a JSON object. If not provided, the API defaults to JSON format."
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"requestBody": {
|
|
39
|
+
"required": true,
|
|
40
|
+
"description": "Send a JSON object with a `numbers` array. Each item must have `number` and optionally `region` **or** `dialer_region` — never both at the same time.\n\n- **International format** (`+` prefix): provide `number` only.\n- **Local format** (no `+`): provide `number` + `region`.\n- **IDD format** (exit code): provide `number` + `dialer_region`.",
|
|
41
|
+
"content": {
|
|
42
|
+
"application/json": {
|
|
43
|
+
"schema": {
|
|
44
|
+
"$ref": "#/components/schemas/BulkPhoneValidationRequest"
|
|
45
|
+
},
|
|
46
|
+
"examples": {
|
|
47
|
+
"international_format": {
|
|
48
|
+
"summary": "International format numbers (+ prefix) — no region needed",
|
|
49
|
+
"value": {
|
|
50
|
+
"numbers": [
|
|
51
|
+
{
|
|
52
|
+
"number": "+14155552671"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"number": "+447911123456"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"number": "+919876543210"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"local_format_with_region": {
|
|
64
|
+
"summary": "Local format numbers — use region (not dialer_region)",
|
|
65
|
+
"value": {
|
|
66
|
+
"numbers": [
|
|
67
|
+
{
|
|
68
|
+
"number": "03301112233",
|
|
69
|
+
"region": "PK"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"number": "07911123456",
|
|
73
|
+
"region": "GB"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"number": "09876543210",
|
|
77
|
+
"region": "IN"
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"mixed": {
|
|
83
|
+
"summary": "Mixed formats in one batch",
|
|
84
|
+
"value": {
|
|
85
|
+
"numbers": [
|
|
86
|
+
{
|
|
87
|
+
"number": "+14155552671"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"number": "03301112233",
|
|
91
|
+
"region": "PK"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"number": "0014155552671",
|
|
95
|
+
"dialer_region": "AU"
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"responses": {
|
|
105
|
+
"200": {
|
|
106
|
+
"description": "Array of phone validation results, one entry per requested number, in the same order. A number that fails validation is not a separate error object — it's the same result shape with error/message added and possible/valid set to false. An item missing the required number field is silently omitted from the array rather than causing an error.",
|
|
107
|
+
"content": {
|
|
108
|
+
"application/json": {
|
|
109
|
+
"schema": {
|
|
110
|
+
"$ref": "#/components/schemas/BulkPhoneValidationResponse"
|
|
111
|
+
},
|
|
112
|
+
"examples": {
|
|
113
|
+
"typicalSuccess": {
|
|
114
|
+
"summary": "All numbers resolved",
|
|
115
|
+
"value": [
|
|
116
|
+
{
|
|
117
|
+
"raw_input": {
|
|
118
|
+
"number": "+14155552671"
|
|
119
|
+
},
|
|
120
|
+
"possible": true,
|
|
121
|
+
"valid": true,
|
|
122
|
+
"country_prefix": 1,
|
|
123
|
+
"national_number": 4155552671,
|
|
124
|
+
"country_code": "US",
|
|
125
|
+
"location": "San Francisco, CA",
|
|
126
|
+
"time_zones": ["America/Los_Angeles"],
|
|
127
|
+
"line_type": "FIXED_LINE_OR_MOBILE",
|
|
128
|
+
"formats": {
|
|
129
|
+
"E164": "+14155552671",
|
|
130
|
+
"International": "+1 415-555-2671",
|
|
131
|
+
"National": "(415) 555-2671",
|
|
132
|
+
"RFC3966": "tel:+1-415-555-2671"
|
|
133
|
+
},
|
|
134
|
+
"area_code_length": 3,
|
|
135
|
+
"ndc_length": 3,
|
|
136
|
+
"can_be_internationally_dialled": true
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
"partialFailure": {
|
|
141
|
+
"summary": "Mix of a valid and an invalid-format number — the failure is embedded in the item, not a separate error object",
|
|
142
|
+
"value": [
|
|
143
|
+
{
|
|
144
|
+
"raw_input": {
|
|
145
|
+
"number": "+14155552671"
|
|
146
|
+
},
|
|
147
|
+
"possible": true,
|
|
148
|
+
"valid": true,
|
|
149
|
+
"country_prefix": 1,
|
|
150
|
+
"national_number": 4155552671,
|
|
151
|
+
"country_code": "US",
|
|
152
|
+
"location": "San Francisco, CA",
|
|
153
|
+
"time_zones": ["America/Los_Angeles"],
|
|
154
|
+
"line_type": "FIXED_LINE_OR_MOBILE",
|
|
155
|
+
"formats": {
|
|
156
|
+
"E164": "+14155552671",
|
|
157
|
+
"International": "+1 415-555-2671",
|
|
158
|
+
"National": "(415) 555-2671",
|
|
159
|
+
"RFC3966": "tel:+1-415-555-2671"
|
|
160
|
+
},
|
|
161
|
+
"area_code_length": 3,
|
|
162
|
+
"ndc_length": 3,
|
|
163
|
+
"can_be_internationally_dialled": true
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"raw_input": {
|
|
167
|
+
"number": "abcdefg"
|
|
168
|
+
},
|
|
169
|
+
"possible": false,
|
|
170
|
+
"valid": false,
|
|
171
|
+
"error": "Invalid Number Format",
|
|
172
|
+
"message": "The input does not match the expected structure of a phone number."
|
|
173
|
+
}
|
|
174
|
+
]
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"400": {
|
|
181
|
+
"description": "Bad Request – Missing or malformed request body",
|
|
182
|
+
"content": {
|
|
183
|
+
"application/json": {
|
|
184
|
+
"schema": {
|
|
185
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
186
|
+
},
|
|
187
|
+
"examples": {
|
|
188
|
+
"missingNumbers": {
|
|
189
|
+
"summary": "numbers field missing or malformed",
|
|
190
|
+
"value": {
|
|
191
|
+
"error": "Invalid request body Exception",
|
|
192
|
+
"message": "Please provide data in required format in request body",
|
|
193
|
+
"path": "/v1.0/phone/validation/bulk",
|
|
194
|
+
"status": 400,
|
|
195
|
+
"timestamp": "2026-07-27T12:56:50.387Z"
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
"413": {
|
|
203
|
+
"description": "Payload Too Large – Request body exceeds the size limit",
|
|
204
|
+
"content": {
|
|
205
|
+
"application/json": {
|
|
206
|
+
"schema": {
|
|
207
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
208
|
+
},
|
|
209
|
+
"examples": {
|
|
210
|
+
"payloadTooLarge": {
|
|
211
|
+
"summary": "Too many numbers / body too large",
|
|
212
|
+
"value": {
|
|
213
|
+
"error": "Payload too large Exception",
|
|
214
|
+
"message": "Maximum request body size limit exceeded",
|
|
215
|
+
"path": "/v1.0/phone/validation/bulk",
|
|
216
|
+
"status": 413,
|
|
217
|
+
"timestamp": "2026-07-27T12:57:03.711Z"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
"408": {
|
|
225
|
+
"description": "Request Timeout – Timed out while connecting to the remote server",
|
|
226
|
+
"content": {
|
|
227
|
+
"application/json": {
|
|
228
|
+
"schema": {
|
|
229
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
230
|
+
},
|
|
231
|
+
"examples": {
|
|
232
|
+
"error": {
|
|
233
|
+
"summary": "Error response",
|
|
234
|
+
"value": {
|
|
235
|
+
"timestamp": "2026-06-06T14:00:00.000Z",
|
|
236
|
+
"path": "/v1.0/phone/validation/bulk",
|
|
237
|
+
"status": 408,
|
|
238
|
+
"error": "Request Timeout",
|
|
239
|
+
"message": "Timed out while connecting to the remote URL."
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
"404": {
|
|
247
|
+
"description": "Not Found – Wrong HTTP method used on the endpoint (e.g. GET instead of POST)",
|
|
248
|
+
"content": {
|
|
249
|
+
"application/json": {
|
|
250
|
+
"schema": {
|
|
251
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
252
|
+
},
|
|
253
|
+
"examples": {
|
|
254
|
+
"wrongMethod": {
|
|
255
|
+
"summary": "GET used instead of POST",
|
|
256
|
+
"value": {
|
|
257
|
+
"error": "Resource Not Found",
|
|
258
|
+
"message": "The requested resource could not be found. Please verify the URL and try again.",
|
|
259
|
+
"path": "/v1.0/phone/validation/bulk",
|
|
260
|
+
"status": 404,
|
|
261
|
+
"timestamp": "2026-07-27T12:58:41.535Z"
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"429": {
|
|
269
|
+
"description": "Rate Limit Exceeded – API rate limit exceeded",
|
|
270
|
+
"content": {
|
|
271
|
+
"application/json": {
|
|
272
|
+
"schema": {
|
|
273
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
274
|
+
},
|
|
275
|
+
"examples": {
|
|
276
|
+
"error": {
|
|
277
|
+
"summary": "Error response",
|
|
278
|
+
"value": {
|
|
279
|
+
"timestamp": "2026-06-06T14:00:00.000Z",
|
|
280
|
+
"path": "/v1.0/phone/validation/bulk",
|
|
281
|
+
"status": 429,
|
|
282
|
+
"error": "Too Many Requests",
|
|
283
|
+
"message": "API rate limit exceeded."
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
"operationId": "bulkValidatePhoneNumbers"
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
"components": {
|
|
296
|
+
"securitySchemes": {
|
|
297
|
+
"ApiKeyAuthHeader": {
|
|
298
|
+
"type": "apiKey",
|
|
299
|
+
"in": "header",
|
|
300
|
+
"name": "X-apiKey",
|
|
301
|
+
"description": "Pass your API key via the X-apiKey request header."
|
|
302
|
+
},
|
|
303
|
+
"ApiKeyAuthQuery": {
|
|
304
|
+
"type": "apiKey",
|
|
305
|
+
"in": "query",
|
|
306
|
+
"name": "apiKey",
|
|
307
|
+
"description": "Pass your API key via the apiKey query parameter."
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
"schemas": {
|
|
311
|
+
"BulkPhoneValidationResponse": {
|
|
312
|
+
"type": "array",
|
|
313
|
+
"description": "Array of per-number results, one entry per requested phone number that had a number field, in the same order as the request. Items missing number are silently omitted rather than erroring.",
|
|
314
|
+
"items": {
|
|
315
|
+
"$ref": "#/components/schemas/PhoneValidationResponse"
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
"PhoneValidationResponse": {
|
|
319
|
+
"type": "object",
|
|
320
|
+
"properties": {
|
|
321
|
+
"raw_input": {
|
|
322
|
+
"$ref": "#/components/schemas/PhoneRawInput"
|
|
323
|
+
},
|
|
324
|
+
"possible": {
|
|
325
|
+
"type": "boolean",
|
|
326
|
+
"description": "Whether the number is possible (length and format checks only). A number can be possible but not valid."
|
|
327
|
+
},
|
|
328
|
+
"valid": {
|
|
329
|
+
"type": "boolean",
|
|
330
|
+
"description": "Whether the number is valid according to the numbering plan."
|
|
331
|
+
},
|
|
332
|
+
"country_prefix": {
|
|
333
|
+
"type": "integer",
|
|
334
|
+
"description": "The international dialing prefix for the number's country (e.g., 1 for US/Canada, 44 for United Kingdom)."
|
|
335
|
+
},
|
|
336
|
+
"national_number": {
|
|
337
|
+
"type": "integer",
|
|
338
|
+
"description": "The national significant number (the phone number without the country code)."
|
|
339
|
+
},
|
|
340
|
+
"country_code": {
|
|
341
|
+
"type": "string",
|
|
342
|
+
"description": "ISO-2 country code inferred from the number (e.g., US, GB)."
|
|
343
|
+
},
|
|
344
|
+
"carrier": {
|
|
345
|
+
"type": "string",
|
|
346
|
+
"description": "Carrier name associated with the number (if available). May not reflect ported carriers."
|
|
347
|
+
},
|
|
348
|
+
"location": {
|
|
349
|
+
"type": "string",
|
|
350
|
+
"description": "Geographic description (city/region) for the number (if applicable)."
|
|
351
|
+
},
|
|
352
|
+
"time_zones": {
|
|
353
|
+
"type": "array",
|
|
354
|
+
"items": {
|
|
355
|
+
"type": "string"
|
|
356
|
+
},
|
|
357
|
+
"description": "Array of possible time zones associated with the number."
|
|
358
|
+
},
|
|
359
|
+
"line_type": {
|
|
360
|
+
"type": "string",
|
|
361
|
+
"description": "Classification of the phone line (MOBILE, FIXED_LINE, VOIP, etc.).",
|
|
362
|
+
"enum": [
|
|
363
|
+
"MOBILE",
|
|
364
|
+
"FIXED_LINE",
|
|
365
|
+
"FIXED_LINE_OR_MOBILE",
|
|
366
|
+
"VOIP",
|
|
367
|
+
"TOLL_FREE",
|
|
368
|
+
"PREMIUM_RATE",
|
|
369
|
+
"SHARED_COST",
|
|
370
|
+
"PERSONAL_NUMBER",
|
|
371
|
+
"PAGER",
|
|
372
|
+
"UAN",
|
|
373
|
+
"VOICEMAIL",
|
|
374
|
+
"UNKNOWN"
|
|
375
|
+
]
|
|
376
|
+
},
|
|
377
|
+
"formats": {
|
|
378
|
+
"$ref": "#/components/schemas/PhoneFormats"
|
|
379
|
+
},
|
|
380
|
+
"area_code_length": {
|
|
381
|
+
"type": "integer",
|
|
382
|
+
"description": "Length of the geographic area code. Only applies to geographically-assigned numbers."
|
|
383
|
+
},
|
|
384
|
+
"ndc_length": {
|
|
385
|
+
"type": "integer",
|
|
386
|
+
"description": "Length of the National Destination Code (NDC), the routing prefix within a country."
|
|
387
|
+
},
|
|
388
|
+
"can_be_internationally_dialled": {
|
|
389
|
+
"type": "boolean",
|
|
390
|
+
"description": "Whether the number can be dialled internationally. false for short codes, emergency numbers, and domestic-only services."
|
|
391
|
+
},
|
|
392
|
+
"error": {
|
|
393
|
+
"type": "string",
|
|
394
|
+
"description": "Short error category. Present only when this item failed validation (e.g. malformed number, conflicting region parameters)."
|
|
395
|
+
},
|
|
396
|
+
"message": {
|
|
397
|
+
"type": "string",
|
|
398
|
+
"description": "Human-readable reason for failure. Present only when this item failed validation."
|
|
399
|
+
}
|
|
400
|
+
},
|
|
401
|
+
"description": "Phone validation result for a single number in the batch. When the number fails validation, error/message are populated instead of the full metadata fields, and possible/valid are false.",
|
|
402
|
+
"required": ["raw_input", "possible", "valid"]
|
|
403
|
+
},
|
|
404
|
+
"PhoneRawInput": {
|
|
405
|
+
"type": "object",
|
|
406
|
+
"description": "Original request payload sent by the caller.",
|
|
407
|
+
"properties": {
|
|
408
|
+
"number": {
|
|
409
|
+
"type": "string",
|
|
410
|
+
"description": "The phone number as entered by the user."
|
|
411
|
+
},
|
|
412
|
+
"region": {
|
|
413
|
+
"type": "string",
|
|
414
|
+
"description": "ISO-2 country code."
|
|
415
|
+
},
|
|
416
|
+
"dialer_region": {
|
|
417
|
+
"type": "string",
|
|
418
|
+
"description": "ISO-2 country code of the dialing origin."
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
"required": ["number"]
|
|
422
|
+
},
|
|
423
|
+
"PhoneFormats": {
|
|
424
|
+
"type": "object",
|
|
425
|
+
"description": "Four standardized representations of the phone number.",
|
|
426
|
+
"properties": {
|
|
427
|
+
"E164": {
|
|
428
|
+
"type": "string",
|
|
429
|
+
"description": "Number in E.164 format."
|
|
430
|
+
},
|
|
431
|
+
"International": {
|
|
432
|
+
"type": "string",
|
|
433
|
+
"description": "Human-readable international format."
|
|
434
|
+
},
|
|
435
|
+
"National": {
|
|
436
|
+
"type": "string",
|
|
437
|
+
"description": "Local format as dialed within the country."
|
|
438
|
+
},
|
|
439
|
+
"RFC3966": {
|
|
440
|
+
"type": "string",
|
|
441
|
+
"description": "URI format following RFC 3966."
|
|
442
|
+
}
|
|
443
|
+
},
|
|
444
|
+
"required": []
|
|
445
|
+
},
|
|
446
|
+
"BulkPhoneValidationRequest": {
|
|
447
|
+
"type": "object",
|
|
448
|
+
"description": "Request body for bulk phone validation.",
|
|
449
|
+
"required": ["numbers"],
|
|
450
|
+
"properties": {
|
|
451
|
+
"numbers": {
|
|
452
|
+
"type": "array",
|
|
453
|
+
"description": "Array of phone number objects. Maximum 100 per request.",
|
|
454
|
+
"maxItems": 100,
|
|
455
|
+
"items": {
|
|
456
|
+
"$ref": "#/components/schemas/BulkPhoneNumberItem"
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
},
|
|
461
|
+
"BulkPhoneNumberItem": {
|
|
462
|
+
"type": "object",
|
|
463
|
+
"description": "A single phone number entry in a bulk validation request.",
|
|
464
|
+
"required": ["number"],
|
|
465
|
+
"properties": {
|
|
466
|
+
"number": {
|
|
467
|
+
"type": "string",
|
|
468
|
+
"description": "Phone number to validate."
|
|
469
|
+
},
|
|
470
|
+
"region": {
|
|
471
|
+
"type": "string",
|
|
472
|
+
"description": "Two-letter ISO country code. Required for local format numbers."
|
|
473
|
+
},
|
|
474
|
+
"dialer_region": {
|
|
475
|
+
"type": "string",
|
|
476
|
+
"description": "Two-letter ISO country code of the dialing origin. Required for IDD format numbers."
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
"ErrorResponse": {
|
|
481
|
+
"type": "object",
|
|
482
|
+
"properties": {
|
|
483
|
+
"error": {
|
|
484
|
+
"type": "string",
|
|
485
|
+
"description": "Short error category or exception type."
|
|
486
|
+
},
|
|
487
|
+
"message": {
|
|
488
|
+
"type": "string",
|
|
489
|
+
"description": "Human-readable error message describing the failure."
|
|
490
|
+
},
|
|
491
|
+
"path": {
|
|
492
|
+
"type": "string",
|
|
493
|
+
"description": "API endpoint path that produced the error."
|
|
494
|
+
},
|
|
495
|
+
"status": {
|
|
496
|
+
"type": "integer",
|
|
497
|
+
"description": "HTTP status code returned with the error."
|
|
498
|
+
},
|
|
499
|
+
"timestamp": {
|
|
500
|
+
"type": "string",
|
|
501
|
+
"format": "date-time",
|
|
502
|
+
"description": "Timestamp when the error occurred (ISO 8601)."
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
"description": "Standard error envelope returned by the API on failed requests.",
|
|
506
|
+
"required": ["message"]
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
},
|
|
510
|
+
"security": [
|
|
511
|
+
{
|
|
512
|
+
"ApiKeyAuthHeader": []
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
"ApiKeyAuthQuery": []
|
|
516
|
+
}
|
|
517
|
+
]
|
|
518
|
+
}
|