{
  "service": "ip2proxy",
  "displayName": "IP2Proxy",
  "categories": [
    "Security",
    "Location",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "IP2PROXY_API_KEY",
      "description": "IP2Proxy Web Service API key passed with the key query parameter. Existing customers can sign in through the IP2Location client area to view it: https://www.ip2location.com/client-area. The official product page documents the current signup status: https://www.ip2location.com/web-service/ip2proxy"
    }
  ],
  "homepageUrl": "https://www.ip2location.com/web-service/ip2proxy",
  "actions": [
    {
      "id": "ip2proxy.lookup_ip",
      "service": "ip2proxy",
      "name": "lookup_ip",
      "description": "Detect whether one IPv4 or IPv6 address is a proxy and return the official IP2Proxy lookup payload.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "anyOf": [
              {
                "type": "string",
                "description": "The IPv4 address to look up.",
                "format": "ipv4"
              },
              {
                "type": "string",
                "description": "The IPv6 address to look up.",
                "format": "ipv6"
              }
            ],
            "description": "The IPv4 or IPv6 address to look up."
          },
          "package": {
            "type": "string",
            "enum": [
              "PX1",
              "PX2",
              "PX3",
              "PX4",
              "PX5",
              "PX6",
              "PX7",
              "PX8",
              "PX9",
              "PX10",
              "PX11"
            ],
            "description": "The IP2Proxy package code to query. The official API defaults to PX1 when omitted.",
            "default": "PX1"
          }
        },
        "additionalProperties": false,
        "description": "The input payload for one proxy detection lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "response": {
            "type": "string",
            "minLength": 1,
            "description": "The response status string returned by IP2Proxy."
          },
          "countryCode": {
            "type": "string",
            "description": "The two-character ISO 3166 country code."
          },
          "countryName": {
            "type": "string",
            "description": "The country name."
          },
          "regionName": {
            "type": "string",
            "description": "The region or state name."
          },
          "cityName": {
            "type": "string",
            "description": "The city name."
          },
          "isp": {
            "type": "string",
            "description": "The ISP or company name."
          },
          "domain": {
            "type": "string",
            "description": "The internet domain associated with the IP range."
          },
          "usageType": {
            "type": "string",
            "description": "The usage type classification returned by IP2Proxy."
          },
          "asn": {
            "type": "string",
            "description": "The autonomous system number."
          },
          "as": {
            "type": "string",
            "description": "The autonomous system name."
          },
          "lastSeen": {
            "type": "integer",
            "description": "How many days ago the proxy was last seen."
          },
          "proxyType": {
            "type": "string",
            "description": "The proxy type returned by IP2Proxy."
          },
          "isProxy": {
            "type": "string",
            "description": "Whether the IP address is identified as a proxy."
          },
          "threat": {
            "type": "string",
            "description": "The security threat classification returned by IP2Proxy."
          },
          "provider": {
            "type": "string",
            "description": "The VPN provider name when IP2Proxy has one."
          },
          "creditsConsumed": {
            "type": "integer",
            "description": "The credit count consumed by the query."
          }
        },
        "additionalProperties": true,
        "required": [
          "response"
        ],
        "description": "The proxy detection payload returned by IP2Proxy."
      }
    }
  ]
}
