{
  "service": "ip2location",
  "displayName": "IP2Location.io",
  "categories": [
    "Location",
    "Security",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "IP2LOCATION_API_KEY",
      "description": "IP2Location.io API key passed with the key query parameter. Sign up for the Free Plan to get one: https://www.ip2location.io/ip2location-documentation"
    }
  ],
  "homepageUrl": "https://www.ip2location.io",
  "actions": [
    {
      "id": "ip2location.get_domain_whois",
      "service": "ip2location",
      "name": "get_domain_whois",
      "description": "Retrieve WHOIS registration details for one domain.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "minLength": 1,
            "description": "The domain name to query."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for one domain WHOIS lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "The queried domain name."
          },
          "domain_id": {
            "type": "string",
            "description": "The registry identifier returned by IP2WHOIS."
          },
          "status": {
            "anyOf": [
              {
                "type": "string",
                "description": "One domain status string returned by IP2WHOIS."
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "One domain status string returned by IP2WHOIS."
                },
                "description": "The domain statuses returned by IP2WHOIS."
              }
            ],
            "description": "The domain status or statuses returned by IP2WHOIS."
          },
          "create_date": {
            "type": "string",
            "description": "The domain creation timestamp."
          },
          "update_date": {
            "type": "string",
            "description": "The domain update timestamp."
          },
          "expire_date": {
            "type": "string",
            "description": "The domain expiration timestamp."
          },
          "domain_age": {
            "type": "integer",
            "description": "The age of the domain in days."
          },
          "whois_server": {
            "type": "string",
            "description": "The WHOIS server hostname."
          },
          "registrar": {
            "type": "object",
            "properties": {
              "iana_id": {
                "type": "string",
                "description": "The registrar IANA identifier returned by IP2WHOIS."
              },
              "name": {
                "type": "string",
                "description": "The registrar name returned by IP2WHOIS."
              },
              "url": {
                "type": "string",
                "description": "The registrar website URL returned by IP2WHOIS."
              }
            },
            "additionalProperties": true,
            "description": "Registrar details returned by IP2WHOIS."
          },
          "registrant": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "The contact name returned by the WHOIS record."
              },
              "organization": {
                "type": "string",
                "description": "The organization name returned by the WHOIS record."
              },
              "street_address": {
                "type": "string",
                "description": "The street address returned by the WHOIS record."
              },
              "city": {
                "type": "string",
                "description": "The city returned by the WHOIS record."
              },
              "region": {
                "type": "string",
                "description": "The region, state, or province returned by the WHOIS record."
              },
              "zip_code": {
                "type": "string",
                "description": "The postal code returned by the WHOIS record."
              },
              "country": {
                "type": "string",
                "description": "The country code returned by the WHOIS record."
              },
              "phone": {
                "type": "string",
                "description": "The phone number returned by the WHOIS record."
              },
              "fax": {
                "type": "string",
                "description": "The fax number returned by the WHOIS record."
              },
              "email": {
                "type": "string",
                "description": "The email address returned by the WHOIS record."
              }
            },
            "additionalProperties": true,
            "description": "One WHOIS contact object returned by IP2WHOIS."
          },
          "admin": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "The contact name returned by the WHOIS record."
              },
              "organization": {
                "type": "string",
                "description": "The organization name returned by the WHOIS record."
              },
              "street_address": {
                "type": "string",
                "description": "The street address returned by the WHOIS record."
              },
              "city": {
                "type": "string",
                "description": "The city returned by the WHOIS record."
              },
              "region": {
                "type": "string",
                "description": "The region, state, or province returned by the WHOIS record."
              },
              "zip_code": {
                "type": "string",
                "description": "The postal code returned by the WHOIS record."
              },
              "country": {
                "type": "string",
                "description": "The country code returned by the WHOIS record."
              },
              "phone": {
                "type": "string",
                "description": "The phone number returned by the WHOIS record."
              },
              "fax": {
                "type": "string",
                "description": "The fax number returned by the WHOIS record."
              },
              "email": {
                "type": "string",
                "description": "The email address returned by the WHOIS record."
              }
            },
            "additionalProperties": true,
            "description": "One WHOIS contact object returned by IP2WHOIS."
          },
          "tech": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "The contact name returned by the WHOIS record."
              },
              "organization": {
                "type": "string",
                "description": "The organization name returned by the WHOIS record."
              },
              "street_address": {
                "type": "string",
                "description": "The street address returned by the WHOIS record."
              },
              "city": {
                "type": "string",
                "description": "The city returned by the WHOIS record."
              },
              "region": {
                "type": "string",
                "description": "The region, state, or province returned by the WHOIS record."
              },
              "zip_code": {
                "type": "string",
                "description": "The postal code returned by the WHOIS record."
              },
              "country": {
                "type": "string",
                "description": "The country code returned by the WHOIS record."
              },
              "phone": {
                "type": "string",
                "description": "The phone number returned by the WHOIS record."
              },
              "fax": {
                "type": "string",
                "description": "The fax number returned by the WHOIS record."
              },
              "email": {
                "type": "string",
                "description": "The email address returned by the WHOIS record."
              }
            },
            "additionalProperties": true,
            "description": "One WHOIS contact object returned by IP2WHOIS."
          },
          "billing": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "The contact name returned by the WHOIS record."
              },
              "organization": {
                "type": "string",
                "description": "The organization name returned by the WHOIS record."
              },
              "street_address": {
                "type": "string",
                "description": "The street address returned by the WHOIS record."
              },
              "city": {
                "type": "string",
                "description": "The city returned by the WHOIS record."
              },
              "region": {
                "type": "string",
                "description": "The region, state, or province returned by the WHOIS record."
              },
              "zip_code": {
                "type": "string",
                "description": "The postal code returned by the WHOIS record."
              },
              "country": {
                "type": "string",
                "description": "The country code returned by the WHOIS record."
              },
              "phone": {
                "type": "string",
                "description": "The phone number returned by the WHOIS record."
              },
              "fax": {
                "type": "string",
                "description": "The fax number returned by the WHOIS record."
              },
              "email": {
                "type": "string",
                "description": "The email address returned by the WHOIS record."
              }
            },
            "additionalProperties": true,
            "description": "One WHOIS contact object returned by IP2WHOIS."
          },
          "nameservers": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "One authoritative nameserver hostname."
            },
            "description": "The authoritative nameservers for the domain."
          }
        },
        "additionalProperties": true,
        "description": "The domain WHOIS payload returned by IP2WHOIS."
      }
    },
    {
      "id": "ip2location.get_ip_geolocation",
      "service": "ip2location",
      "name": "get_ip_geolocation",
      "description": "Retrieve geolocation and network metadata for one IPv4 or IPv6 address.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "anyOf": [
              {
                "type": "string",
                "description": "The IPv4 or IPv6 address to query.",
                "format": "ipv4"
              },
              {
                "type": "string",
                "description": "The IPv4 or IPv6 address to query.",
                "format": "ipv6"
              }
            ],
            "description": "The IPv4 or IPv6 address to query."
          },
          "lang": {
            "type": "string",
            "enum": [
              "ar",
              "cs",
              "da",
              "de",
              "en",
              "es",
              "et",
              "fi",
              "fr",
              "ga",
              "it",
              "ja",
              "ko",
              "ms",
              "nl",
              "pt",
              "ru",
              "sv",
              "tr",
              "vi",
              "zh-cn",
              "zh-tw"
            ],
            "description": "The IP2Location-supported language code for translated place names, including regional variants such as zh-cn and zh-tw."
          }
        },
        "additionalProperties": false,
        "required": [
          "ip"
        ],
        "description": "The input payload for one IP geolocation lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "The queried IP address."
          },
          "country_code": {
            "type": "string",
            "description": "The ISO 3166-1 alpha-2 country code."
          },
          "country_name": {
            "type": "string",
            "description": "The country name."
          },
          "region_name": {
            "type": "string",
            "description": "The region or state name."
          },
          "city_name": {
            "type": "string",
            "description": "The city name."
          },
          "latitude": {
            "type": "number",
            "description": "The latitude coordinate."
          },
          "longitude": {
            "type": "number",
            "description": "The longitude coordinate."
          },
          "zip_code": {
            "type": "string",
            "description": "The postal or ZIP code."
          },
          "time_zone": {
            "type": "string",
            "description": "The UTC offset returned by IP2Location.io."
          },
          "asn": {
            "type": "string",
            "description": "The autonomous system number."
          },
          "as": {
            "type": "string",
            "description": "The autonomous system name."
          },
          "isp": {
            "type": "string",
            "description": "The internet service provider name."
          },
          "domain": {
            "type": "string",
            "description": "The primary domain associated with the IP."
          },
          "net_speed": {
            "type": "string",
            "description": "The connection speed category returned by IP2Location.io."
          },
          "idd_code": {
            "type": "string",
            "description": "The international direct dialing code."
          },
          "area_code": {
            "type": "string",
            "description": "The local area code."
          },
          "weather_station_code": {
            "type": "string",
            "description": "The weather station code."
          },
          "weather_station_name": {
            "type": "string",
            "description": "The weather station name."
          },
          "elevation": {
            "type": "number",
            "description": "The elevation in meters."
          },
          "usage_type": {
            "type": "string",
            "description": "The IP usage type returned by IP2Location.io."
          },
          "is_proxy": {
            "type": "boolean",
            "description": "Whether the IP address is identified as a proxy."
          }
        },
        "additionalProperties": true,
        "description": "The IP geolocation payload returned by IP2Location.io."
      }
    },
    {
      "id": "ip2location.list_hosted_domains",
      "service": "ip2location",
      "name": "list_hosted_domains",
      "description": "List the hosted domains associated with one IPv4 or IPv6 address.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "anyOf": [
              {
                "type": "string",
                "description": "The IPv4 or IPv6 address to query.",
                "format": "ipv4"
              },
              {
                "type": "string",
                "description": "The IPv4 or IPv6 address to query.",
                "format": "ipv6"
              }
            ],
            "description": "The IPv4 or IPv6 address to query."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The 1-based result page to fetch."
          }
        },
        "additionalProperties": false,
        "required": [
          "ip"
        ],
        "description": "The input payload for one hosted domains lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "minLength": 1,
            "description": "The queried IP address."
          },
          "total_domains": {
            "type": "integer",
            "description": "The total number of hosted domains."
          },
          "page": {
            "type": "integer",
            "description": "The current result page."
          },
          "per_page": {
            "type": "integer",
            "description": "The number of domains returned per page."
          },
          "total_pages": {
            "type": "integer",
            "description": "The total number of result pages."
          },
          "domains": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "One hosted domain name."
            },
            "description": "The hosted domain names returned for the queried IP."
          }
        },
        "additionalProperties": false,
        "description": "The hosted domains lookup payload returned by IP2WHOIS."
      }
    }
  ]
}
