{"components":{"schemas":{"BatchData":{"additionalProperties":false,"properties":{"job":{"$ref":"#/components/schemas/BatchJobData"}},"required":["job"],"title":"BatchData","type":"object"},"BatchJobData":{"additionalProperties":false,"properties":{"charged_cents":{"title":"Charged Cents","type":"integer"},"completed_rows":{"title":"Completed Rows","type":"integer"},"created_at":{"description":"ISO 8601 UTC timestamp without a timezone suffix.","title":"Created At","type":"string"},"error":{"title":"Error","type":"string"},"filename":{"title":"Filename","type":"string"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"UTC timestamp without a timezone suffix, or null.","title":"Finished At"},"id":{"title":"Id","type":"integer"},"invalid_count":{"title":"Invalid Count","type":"integer"},"matched_count":{"title":"Matched Count","type":"integer"},"row_count":{"title":"Row Count","type":"integer"},"status":{"enum":["processing","done","failed","expired"],"title":"Status","type":"string"},"unmatched_count":{"title":"Unmatched Count","type":"integer"}},"required":["id","status","filename","row_count","completed_rows","matched_count","unmatched_count","invalid_count","charged_cents","error","created_at","finished_at"],"title":"BatchJobData","type":"object"},"DecryptData":{"additionalProperties":false,"properties":{"carrier":{"title":"Carrier","type":"string"},"country":{"title":"Country","type":"string"},"msisdn":{"title":"Msisdn","type":"string"}},"required":["msisdn","country","carrier"],"title":"DecryptData","type":"object"},"DecryptRequest":{"additionalProperties":false,"properties":{"msisdn_hash":{"description":"64-character hexadecimal hash from an M-Pesa transaction callback.","examples":["7132104d6aae9c3fac82095a42c2817952bca48e09d98d5bf4ac08218982fb90"],"title":"Msisdn Hash","type":"string"}},"required":["msisdn_hash"],"title":"DecryptRequest","type":"object"},"ErrorResponse":{"properties":{"data":{"additionalProperties":true,"title":"Data","type":"object"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error Code"},"errors":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Errors"},"message":{"title":"Message","type":"string"},"status":{"const":false,"title":"Status","type":"boolean"},"status_code":{"title":"Status Code","type":"integer"}},"required":["status","status_code","message","data"],"title":"ErrorResponse","type":"object"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"title":"Detail","type":"array"}},"title":"HTTPValidationError","type":"object"},"SuccessResponse_BatchData_":{"additionalProperties":false,"properties":{"data":{"$ref":"#/components/schemas/BatchData"},"message":{"title":"Message","type":"string"},"status":{"const":true,"title":"Status","type":"boolean"},"status_code":{"const":0,"title":"Status Code","type":"integer"}},"required":["status","status_code","message","data"],"title":"SuccessResponse[BatchData]","type":"object"},"SuccessResponse_DecryptData_":{"additionalProperties":false,"properties":{"data":{"$ref":"#/components/schemas/DecryptData"},"message":{"title":"Message","type":"string"},"status":{"const":true,"title":"Status","type":"boolean"},"status_code":{"const":0,"title":"Status Code","type":"integer"}},"required":["status","status_code","message","data"],"title":"SuccessResponse[DecryptData]","type":"object"},"SuccessResponse_ValidationData_":{"additionalProperties":false,"properties":{"data":{"$ref":"#/components/schemas/ValidationData"},"message":{"title":"Message","type":"string"},"status":{"const":true,"title":"Status","type":"boolean"},"status_code":{"const":0,"title":"Status Code","type":"integer"}},"required":["status","status_code","message","data"],"title":"SuccessResponse[ValidationData]","type":"object"},"SuccessResponse_list_BatchJobData__":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/BatchJobData"},"title":"Data","type":"array"},"message":{"title":"Message","type":"string"},"status":{"const":true,"title":"Status","type":"boolean"},"status_code":{"const":0,"title":"Status Code","type":"integer"}},"required":["status","status_code","message","data"],"title":"SuccessResponse[list[BatchJobData]]","type":"object"},"ValidateRequest":{"additionalProperties":false,"properties":{"country_code":{"description":"International dialing code. Use \"254\".","examples":["254"],"title":"Country Code","type":"string"},"phone_number":{"description":"Kenyan phone number in 07…, 01…, 254…, +254…, or 00254… format.","examples":["712345678"],"title":"Phone Number","type":"string"}},"required":["phone_number","country_code"],"title":"ValidateRequest","type":"object"},"ValidationData":{"additionalProperties":false,"properties":{"carrier":{"title":"Carrier","type":"string"},"country":{"title":"Country","type":"string"},"phone_number":{"title":"Phone Number","type":"string"},"type":{"const":"mobile","title":"Type","type":"string"},"valid":{"const":true,"title":"Valid","type":"boolean"}},"required":["phone_number","country","carrier","valid","type"],"title":"ValidationData","type":"object"},"ValidationError":{"properties":{"ctx":{"title":"Context","type":"object"},"input":{"title":"Input"},"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"title":"Location","type":"array"},"msg":{"title":"Message","type":"string"},"type":{"title":"Error Type","type":"string"}},"required":["loc","msg","type"],"title":"ValidationError","type":"object"}},"securitySchemes":{"ApiKeyAuth":{"description":"API key. Batch operations require a tenant-owned key; service keys cannot access batches.","in":"header","name":"X-Api-Key","type":"apiKey"}}},"info":{"description":"Validate Kenyan phone numbers and resolve supported M-Pesa phone-number hashes. Authenticate with your API key in the `X-Api-Key` header. Only successful lookups are billed.","title":"Dehash It API","version":"bb227185897d999348e87230a68497d551c2cae6"},"openapi":"3.1.0","paths":{"/api/v1/batch/":{"get":{"operationId":"list_batches_api_v1_batch__get","parameters":[{"description":"Optional 1–64 letters, digits, '_' or '-'; invalid values are replaced.","in":"header","name":"X-Request-ID","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_list_BatchJobData__"}}},"description":"Successful response.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":400}},"required":["error_code"]}}},"description":"invalid_request: request validation failed; inspect errors for details.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":401}},"required":["error_code"]}}},"description":"unauthorized: authentication credentials are missing, invalid or revoked.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":403}},"required":["error_code"]}}},"description":"forbidden or verification_required: origin, CSRF, permissions, key type or email proof denied access.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"not":{"required":["error_code"]},"properties":{"status_code":{"const":405}}}}},"description":"Method not allowed. This envelope has no error_code.","headers":{"Allow":{"description":"Comma-separated methods supported by this resource.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":429}},"required":["error_code"]}}},"description":"rate_limited: wait for Retry-After seconds before retrying.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":503}},"required":["error_code"]}}},"description":"unavailable: database or lookup infrastructure is unavailable.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}}},"security":[{"ApiKeyAuth":[]}],"summary":"List my batch jobs"},"post":{"operationId":"create_batch_api_v1_batch__post","parameters":[{"description":"Optional 1–64 letters, digits, '_' or '-'; invalid values are replaced.","in":"header","name":"X-Request-ID","required":false,"schema":{"type":"string"}},{"description":"Reuse only for identical raw bytes. Changed bytes return 422; processing retries return 409.","in":"header","name":"X-Batch-Key","required":false,"schema":{"maxLength":128,"type":"string"}},{"description":"Optional metadata filename; only the first 256 characters are stored.","in":"header","name":"X-Batch-Filename","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"text/csv":{"example":"msisdn_hash\n7132104d6aae9c3fac82095a42c2817952bca48e09d98d5bf4ac08218982fb90\n","schema":{"type":"string"}}},"description":"Raw UTF-8 CSV, at most 2097152 bytes and 5000 data rows; msisdn_hash column required.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_BatchData_"}}},"description":"Successful response.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":400}},"required":["error_code"]}}},"description":"invalid_request: request validation failed; inspect errors for details.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":401}},"required":["error_code"]}}},"description":"unauthorized: authentication credentials are missing, invalid or revoked.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":403}},"required":["error_code"]}}},"description":"forbidden or verification_required: origin, CSRF, permissions, key type or email proof denied access.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"not":{"required":["error_code"]},"properties":{"status_code":{"const":405}}}}},"description":"Method not allowed. This envelope has no error_code.","headers":{"Allow":{"description":"Comma-separated methods supported by this resource.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":409}},"required":["error_code"]}}},"description":"idempotency_key_in_progress: batch processing or results are not ready.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":413}},"required":["error_code"]}}},"description":"payload_too_large: request body exceeds the endpoint's size limit.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"422":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":422}},"required":["error_code"]}}},"description":"idempotency_key_reused: retry key is bound to another hash or different batch bytes.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":429}},"required":["error_code"]}}},"description":"rate_limited: wait for Retry-After seconds before retrying.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":503}},"required":["error_code"]}}},"description":"dataset_unavailable, dataset_format_legacy or unavailable. Interrupted jobs retain committed checkpoints; retry with the same key and CSV.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}}},"security":[{"ApiKeyAuth":[]}],"summary":"Decode a CSV batch of phone-number hashes"}},"/api/v1/batch/template.csv":{"get":{"operationId":"batch_template_api_v1_batch_template_csv_get","parameters":[{"description":"Optional 1–64 letters, digits, '_' or '-'; invalid values are replaced.","in":"header","name":"X-Request-ID","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"text/csv":{"schema":{"type":"string"}}},"description":"Successful response.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"not":{"required":["error_code"]},"properties":{"status_code":{"const":405}}}}},"description":"Method not allowed. This envelope has no error_code.","headers":{"Allow":{"description":"Comma-separated methods supported by this resource.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}}},"security":[],"summary":"Download the batch CSV template"}},"/api/v1/batch/{job_id}/":{"get":{"operationId":"read_batch_api_v1_batch__job_id___get","parameters":[{"in":"path","name":"job_id","required":true,"schema":{"title":"Job Id","type":"integer"}},{"description":"Optional 1–64 letters, digits, '_' or '-'; invalid values are replaced.","in":"header","name":"X-Request-ID","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_BatchData_"}}},"description":"Successful response.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":400}},"required":["error_code"]}}},"description":"invalid_request: request validation failed; inspect errors for details.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":401}},"required":["error_code"]}}},"description":"unauthorized: authentication credentials are missing, invalid or revoked.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":403}},"required":["error_code"]}}},"description":"forbidden or verification_required: origin, CSRF, permissions, key type or email proof denied access.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":404}},"required":["error_code"]}}},"description":"not_found: no match, unsupported country, or resource outside the caller's scope/retention.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"not":{"required":["error_code"]},"properties":{"status_code":{"const":405}}}}},"description":"Method not allowed. This envelope has no error_code.","headers":{"Allow":{"description":"Comma-separated methods supported by this resource.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":429}},"required":["error_code"]}}},"description":"rate_limited: wait for Retry-After seconds before retrying.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":503}},"required":["error_code"]}}},"description":"unavailable: database or lookup infrastructure is unavailable.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}}},"security":[{"ApiKeyAuth":[]}],"summary":"Read a batch job"}},"/api/v1/batch/{job_id}/results/":{"get":{"operationId":"batch_results_api_v1_batch__job_id__results__get","parameters":[{"in":"path","name":"job_id","required":true,"schema":{"title":"Job Id","type":"integer"}},{"description":"Optional 1–64 letters, digits, '_' or '-'; invalid values are replaced.","in":"header","name":"X-Request-ID","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"text/csv":{"schema":{"type":"string"}}},"description":"Successful response.","headers":{"Content-Disposition":{"description":"Attachment filename: batch-{job_id}-results.csv.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":400}},"required":["error_code"]}}},"description":"invalid_request: request validation failed; inspect errors for details.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":401}},"required":["error_code"]}}},"description":"unauthorized: authentication credentials are missing, invalid or revoked.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":403}},"required":["error_code"]}}},"description":"forbidden or verification_required: origin, CSRF, permissions, key type or email proof denied access.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":404}},"required":["error_code"]}}},"description":"not_found: no match, unsupported country, or resource outside the caller's scope/retention.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"not":{"required":["error_code"]},"properties":{"status_code":{"const":405}}}}},"description":"Method not allowed. This envelope has no error_code.","headers":{"Allow":{"description":"Comma-separated methods supported by this resource.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":409}},"required":["error_code"]}}},"description":"idempotency_key_in_progress: batch processing or results are not ready.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":429}},"required":["error_code"]}}},"description":"rate_limited: wait for Retry-After seconds before retrying.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":503}},"required":["error_code"]}}},"description":"unavailable: database or lookup infrastructure is unavailable.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}}},"security":[{"ApiKeyAuth":[]}],"summary":"Download batch results CSV"}},"/api/v1/msisdn/decrypt/":{"post":{"operationId":"decrypt_api_v1_msisdn_decrypt__post","parameters":[{"description":"Optional 1–64 letters, digits, '_' or '-'; invalid values are replaced.","in":"header","name":"X-Request-ID","required":false,"schema":{"type":"string"}},{"description":"Reuse only for the same hash; missing/empty keys bill per successful submission.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":128,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecryptRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_DecryptData_"}}},"description":"Successful response.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":400}},"required":["error_code"]}}},"description":"invalid_request: request validation failed; inspect errors for details.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":401}},"required":["error_code"]}}},"description":"unauthorized: authentication credentials are missing, invalid or revoked.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"402":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":402}},"required":["error_code"]}}},"description":"insufficient_balance: match found but balance is too low; the number is withheld.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":403}},"required":["error_code"]}}},"description":"forbidden or verification_required: origin, CSRF, permissions, key type or email proof denied access.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":404}},"required":["error_code"]}}},"description":"not_found: no match, unsupported country, or resource outside the caller's scope/retention.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"not":{"required":["error_code"]},"properties":{"status_code":{"const":405}}}}},"description":"Method not allowed. This envelope has no error_code.","headers":{"Allow":{"description":"Comma-separated methods supported by this resource.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":413}},"required":["error_code"]}}},"description":"payload_too_large: request body exceeds the endpoint's size limit.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"422":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":422}},"required":["error_code"]}}},"description":"idempotency_key_reused: retry key is bound to another hash or different batch bytes.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":429}},"required":["error_code"]}}},"description":"rate_limited: wait for Retry-After seconds before retrying.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":503}},"required":["error_code"]}}},"description":"dataset_unavailable, dataset_format_legacy, lookup_timeout or unavailable. Never billed.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}}},"security":[{"ApiKeyAuth":[]}],"summary":"Look up a hashed phone number"}},"/api/v1/validations/phone-validation/":{"post":{"operationId":"validate_api_v1_validations_phone_validation__post","parameters":[{"description":"Optional 1–64 letters, digits, '_' or '-'; invalid values are replaced.","in":"header","name":"X-Request-ID","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_ValidationData_"}}},"description":"Successful response.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":400}},"required":["error_code"]}}},"description":"invalid_request: request validation failed; inspect errors for details.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":401}},"required":["error_code"]}}},"description":"unauthorized: authentication credentials are missing, invalid or revoked.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":403}},"required":["error_code"]}}},"description":"forbidden or verification_required: origin, CSRF, permissions, key type or email proof denied access.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":404}},"required":["error_code"]}}},"description":"not_found: no match, unsupported country, or resource outside the caller's scope/retention.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"not":{"required":["error_code"]},"properties":{"status_code":{"const":405}}}}},"description":"Method not allowed. This envelope has no error_code.","headers":{"Allow":{"description":"Comma-separated methods supported by this resource.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":413}},"required":["error_code"]}}},"description":"payload_too_large: request body exceeds the endpoint's size limit.","headers":{"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}},"429":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"}],"properties":{"status_code":{"const":429}},"required":["error_code"]}}},"description":"rate_limited: wait for Retry-After seconds before retrying.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"string"}},"X-Request-ID":{"description":"Request correlation ID.","schema":{"type":"string"}}}}},"security":[{"ApiKeyAuth":[]}],"summary":"Validate a phone number"}}}}