diff --git a/README.md b/README.md index ad50db0..2d1218e 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,41 @@ # IP-to-ASN Lookup API (fast hehe) +This API allows you to lookup the **ASN**, **country**, **country name**, and **provider name** for a given IPv4 or IPv6 address. This API uses an very Optimized Cache to have very fast response times. The API does Support Quic (http3) and http2 to deliver fast responses! ⚡ -This API allows you to lookup the **ASN**, **country**, **country name**, and **provider name** for a given IPv4 or IPv6 address. This API uses an very Optimzed Cache to have very fast response times. The API does Support Quic (http3) and http2 to deliver fast responses! ⚡ +**Auto-detection feature:** If no IP parameter is provided, the API automatically uses the client's IP address from the request. ## Base URL - ``` https://cdn.t-w.dev/whois?ip={IP}&locale={locale} ``` - +* `ip` (optional) – IPv4 or IPv6 address to query. If omitted, uses client IP * `locale` (optional) – `de`, `en`, or `both` (default: `both`) ---- +*** ## Request - ### Method - * **GET** or **POST** ### Parameters - | Name | Type | Required | Description | | ------ | ------ | -------- | ----------------------------------------------- | -| ip | string | Yes | IPv4 or IPv6 address to query | +| ip | string | No | IPv4 or IPv6 address to query. If omitted, automatically uses the client's IP address | | locale | string | No | Language for `country_name`: `de`, `en`, `both` | ---- +*** ## Response - ### Success (200) - | Field | Type | Description | | ------------- | ------ | ----------------------------------------- | -| ip | string | The queried IP address | +| ip | string | The queried IP address (provided or auto-detected) | | asn | string | Autonomous System Number | | country | string | 2-letter country code of the ASN | -| country\_name | string | Localized country name (`locale` applied) | +| country_name | string | Localized country name (`locale` applied) | | description | string | Cleaned provider name (normalized) | | logo | string | Provider logo (not all) | -**Example:** - +**Example with specified IP:** ```json { "ip": "8.8.8.8", @@ -53,37 +47,45 @@ https://cdn.t-w.dev/whois?ip={IP}&locale={locale} } ``` -### Error (400+) +**Example using client IP (no ip parameter):** +```bash +curl https://cdn.t-w.dev/whois +``` +```json +{ + "ip": "203.0.113.45", + "asn": "64512", + "country": "DE", + "country_name": "Germany / Deutschland", + "description": "Example ISP", + "logo": null +} +``` +### Error (400+) | Field | Type | Description | | ----- | ------ | -------------------------- | | error | string | Description of the problem | **Possible errors:** - -```json -{ "error": "Missing 'ip' parameter" } -``` - ```json { "error": "Invalid IP address" } ``` - ```json { "error": "ASN not found for given IP" } ``` ---- +*** ## API Flow - ```mermaid flowchart TD A[Client Request] --> B{IP parameter provided?} - B -- No --> C[Return Error: Missing 'ip' parameter] + B -- No --> F2[Use Client IP from Request] B -- Yes --> D{IP valid?} D -- No --> E[Return Error: Invalid IP address] D -- Yes --> F[Lookup IP in ASN database] + F2 --> F F --> G{ASN found?} G -- Yes --> H[Return JSON with ip, asn, country, country_name, description, logo] G -- No --> I[Return Error: ASN not found]