{
  "service": "iplocate",
  "displayName": "IPLocate",
  "categories": [
    "Location",
    "Security",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "IPLOCATE_API_KEY",
      "description": "IPLocate API key sent with the X-API-Key request header. Create a free account and get your key at https://www.iplocate.io/signup."
    }
  ],
  "homepageUrl": "https://www.iplocate.io/",
  "actions": [
    {
      "id": "iplocate.batch_lookup",
      "service": "iplocate",
      "name": "batch_lookup",
      "description": "Look up IPLocate data for multiple IP addresses in one JSON request and preserve per-IP inline errors.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ipAddresses": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "The IPv4 or IPv6 address to look up."
            },
            "description": "The IPv4 or IPv6 addresses to look up. IPLocate allows up to 1,000 IPs per batch request.",
            "minItems": 1,
            "maxItems": 1000
          }
        },
        "additionalProperties": false,
        "required": [
          "ipAddresses"
        ],
        "description": "Input parameters for an IPLocate batch lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "requestedCount": {
            "type": "integer",
            "description": "The number of IP addresses submitted to IPLocate."
          },
          "resultsByIp": {
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "ip": {
                      "type": "string",
                      "description": "The IP address returned by IPLocate."
                    },
                    "country": {
                      "type": "string",
                      "description": "The country name."
                    },
                    "country_code": {
                      "type": "string",
                      "description": "The ISO 3166-1 alpha-2 country code."
                    },
                    "is_eu": {
                      "type": "boolean",
                      "description": "Whether the country is a member of the European Union."
                    },
                    "city": {
                      "type": "string",
                      "description": "The city name."
                    },
                    "continent": {
                      "type": "string",
                      "description": "The continent name."
                    },
                    "latitude": {
                      "type": "number",
                      "description": "The latitude coordinate."
                    },
                    "longitude": {
                      "type": "number",
                      "description": "The longitude coordinate."
                    },
                    "time_zone": {
                      "type": "string",
                      "description": "The IANA timezone name."
                    },
                    "postal_code": {
                      "type": "string",
                      "description": "The postal or ZIP code."
                    },
                    "subdivision": {
                      "type": "string",
                      "description": "The state, region, or subdivision name."
                    },
                    "currency_code": {
                      "type": "string",
                      "description": "The ISO 4217 currency code."
                    },
                    "calling_code": {
                      "type": "string",
                      "description": "The international calling code."
                    },
                    "network": {
                      "type": "string",
                      "description": "The network range in CIDR notation."
                    },
                    "is_anycast": {
                      "type": "boolean",
                      "description": "Whether the IP address is identified as anycast."
                    },
                    "is_satellite": {
                      "type": "boolean",
                      "description": "Whether the IP address is identified as satellite internet."
                    },
                    "asn": {
                      "type": "object",
                      "properties": {
                        "asn": {
                          "type": "string",
                          "description": "The autonomous system number, such as AS15169."
                        },
                        "route": {
                          "type": "string",
                          "description": "The announced network route."
                        },
                        "netname": {
                          "type": "string",
                          "description": "The network name."
                        },
                        "name": {
                          "type": "string",
                          "description": "The autonomous system organization name."
                        },
                        "country_code": {
                          "type": "string",
                          "description": "The ISO 3166-1 alpha-2 country code registered for the ASN."
                        },
                        "domain": {
                          "type": "string",
                          "description": "The organization domain."
                        },
                        "type": {
                          "type": "string",
                          "description": "The ASN type, such as isp, hosting, business, education, or government."
                        },
                        "rir": {
                          "type": "string",
                          "description": "The regional internet registry."
                        }
                      },
                      "additionalProperties": true,
                      "description": "The autonomous system details returned by IPLocate."
                    },
                    "privacy": {
                      "type": "object",
                      "properties": {
                        "is_abuser": {
                          "type": "boolean",
                          "description": "Whether the IP is on a known spam or abuse blocklist."
                        },
                        "is_anonymous": {
                          "type": "boolean",
                          "description": "Whether the IP is anonymous."
                        },
                        "is_bogon": {
                          "type": "boolean",
                          "description": "Whether the IP is a bogon or reserved address."
                        },
                        "is_hosting": {
                          "type": "boolean",
                          "description": "Whether the IP belongs to a hosting provider."
                        },
                        "is_icloud_relay": {
                          "type": "boolean",
                          "description": "Whether the IP is using iCloud Private Relay."
                        },
                        "is_proxy": {
                          "type": "boolean",
                          "description": "Whether the IP is using a proxy service."
                        },
                        "is_tor": {
                          "type": "boolean",
                          "description": "Whether the IP is using Tor."
                        },
                        "is_vpn": {
                          "type": "boolean",
                          "description": "Whether the IP is using a VPN service."
                        }
                      },
                      "additionalProperties": true,
                      "description": "The privacy and threat flags returned by IPLocate."
                    },
                    "company": {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true,
                      "description": "The company information associated with the IP address."
                    },
                    "hosting": {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true,
                      "description": "The hosting provider information returned by IPLocate."
                    },
                    "abuse": {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true,
                      "description": "The abuse contact information returned by IPLocate."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The IPLocate lookup result."
                },
                {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "An inline IPLocate batch error for one input IP."
                }
              ],
              "description": "A lookup result or inline error returned for one IP address."
            },
            "description": "IPLocate batch results keyed by the original input IP address."
          }
        },
        "additionalProperties": false,
        "required": [
          "requestedCount",
          "resultsByIp"
        ],
        "description": "The wrapped IPLocate batch lookup output."
      }
    },
    {
      "id": "iplocate.lookup_ip",
      "service": "iplocate",
      "name": "lookup_ip",
      "description": "Look up IPLocate geolocation, ASN, privacy, hosting, company, and abuse data for one IP address.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "minLength": 1,
            "description": "The IPv4 or IPv6 address to look up."
          },
          "include": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One IPLocate response field name."
            },
            "description": "The IPLocate response fields to include, such as country_code, asn, or privacy.is_vpn.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "ip"
        ],
        "description": "Input parameters for an IPLocate IP lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "result": {
            "type": "object",
            "properties": {
              "ip": {
                "type": "string",
                "description": "The IP address returned by IPLocate."
              },
              "country": {
                "type": "string",
                "description": "The country name."
              },
              "country_code": {
                "type": "string",
                "description": "The ISO 3166-1 alpha-2 country code."
              },
              "is_eu": {
                "type": "boolean",
                "description": "Whether the country is a member of the European Union."
              },
              "city": {
                "type": "string",
                "description": "The city name."
              },
              "continent": {
                "type": "string",
                "description": "The continent name."
              },
              "latitude": {
                "type": "number",
                "description": "The latitude coordinate."
              },
              "longitude": {
                "type": "number",
                "description": "The longitude coordinate."
              },
              "time_zone": {
                "type": "string",
                "description": "The IANA timezone name."
              },
              "postal_code": {
                "type": "string",
                "description": "The postal or ZIP code."
              },
              "subdivision": {
                "type": "string",
                "description": "The state, region, or subdivision name."
              },
              "currency_code": {
                "type": "string",
                "description": "The ISO 4217 currency code."
              },
              "calling_code": {
                "type": "string",
                "description": "The international calling code."
              },
              "network": {
                "type": "string",
                "description": "The network range in CIDR notation."
              },
              "is_anycast": {
                "type": "boolean",
                "description": "Whether the IP address is identified as anycast."
              },
              "is_satellite": {
                "type": "boolean",
                "description": "Whether the IP address is identified as satellite internet."
              },
              "asn": {
                "type": "object",
                "properties": {
                  "asn": {
                    "type": "string",
                    "description": "The autonomous system number, such as AS15169."
                  },
                  "route": {
                    "type": "string",
                    "description": "The announced network route."
                  },
                  "netname": {
                    "type": "string",
                    "description": "The network name."
                  },
                  "name": {
                    "type": "string",
                    "description": "The autonomous system organization name."
                  },
                  "country_code": {
                    "type": "string",
                    "description": "The ISO 3166-1 alpha-2 country code registered for the ASN."
                  },
                  "domain": {
                    "type": "string",
                    "description": "The organization domain."
                  },
                  "type": {
                    "type": "string",
                    "description": "The ASN type, such as isp, hosting, business, education, or government."
                  },
                  "rir": {
                    "type": "string",
                    "description": "The regional internet registry."
                  }
                },
                "additionalProperties": true,
                "description": "The autonomous system details returned by IPLocate."
              },
              "privacy": {
                "type": "object",
                "properties": {
                  "is_abuser": {
                    "type": "boolean",
                    "description": "Whether the IP is on a known spam or abuse blocklist."
                  },
                  "is_anonymous": {
                    "type": "boolean",
                    "description": "Whether the IP is anonymous."
                  },
                  "is_bogon": {
                    "type": "boolean",
                    "description": "Whether the IP is a bogon or reserved address."
                  },
                  "is_hosting": {
                    "type": "boolean",
                    "description": "Whether the IP belongs to a hosting provider."
                  },
                  "is_icloud_relay": {
                    "type": "boolean",
                    "description": "Whether the IP is using iCloud Private Relay."
                  },
                  "is_proxy": {
                    "type": "boolean",
                    "description": "Whether the IP is using a proxy service."
                  },
                  "is_tor": {
                    "type": "boolean",
                    "description": "Whether the IP is using Tor."
                  },
                  "is_vpn": {
                    "type": "boolean",
                    "description": "Whether the IP is using a VPN service."
                  }
                },
                "additionalProperties": true,
                "description": "The privacy and threat flags returned by IPLocate."
              },
              "company": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The company information associated with the IP address."
              },
              "hosting": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The hosting provider information returned by IPLocate."
              },
              "abuse": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The abuse contact information returned by IPLocate."
              }
            },
            "additionalProperties": true,
            "description": "The IPLocate lookup result."
          }
        },
        "additionalProperties": false,
        "required": [
          "result"
        ],
        "description": "The wrapped IPLocate lookup output."
      }
    },
    {
      "id": "iplocate.lookup_self",
      "service": "iplocate",
      "name": "lookup_self",
      "description": "Look up IPLocate geolocation and threat intelligence data for the connector server's outgoing IP address.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "include": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One IPLocate response field name."
            },
            "description": "The IPLocate response fields to include, such as country_code, asn, or privacy.is_vpn.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for looking up the caller IP seen by IPLocate."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "result": {
            "type": "object",
            "properties": {
              "ip": {
                "type": "string",
                "description": "The IP address returned by IPLocate."
              },
              "country": {
                "type": "string",
                "description": "The country name."
              },
              "country_code": {
                "type": "string",
                "description": "The ISO 3166-1 alpha-2 country code."
              },
              "is_eu": {
                "type": "boolean",
                "description": "Whether the country is a member of the European Union."
              },
              "city": {
                "type": "string",
                "description": "The city name."
              },
              "continent": {
                "type": "string",
                "description": "The continent name."
              },
              "latitude": {
                "type": "number",
                "description": "The latitude coordinate."
              },
              "longitude": {
                "type": "number",
                "description": "The longitude coordinate."
              },
              "time_zone": {
                "type": "string",
                "description": "The IANA timezone name."
              },
              "postal_code": {
                "type": "string",
                "description": "The postal or ZIP code."
              },
              "subdivision": {
                "type": "string",
                "description": "The state, region, or subdivision name."
              },
              "currency_code": {
                "type": "string",
                "description": "The ISO 4217 currency code."
              },
              "calling_code": {
                "type": "string",
                "description": "The international calling code."
              },
              "network": {
                "type": "string",
                "description": "The network range in CIDR notation."
              },
              "is_anycast": {
                "type": "boolean",
                "description": "Whether the IP address is identified as anycast."
              },
              "is_satellite": {
                "type": "boolean",
                "description": "Whether the IP address is identified as satellite internet."
              },
              "asn": {
                "type": "object",
                "properties": {
                  "asn": {
                    "type": "string",
                    "description": "The autonomous system number, such as AS15169."
                  },
                  "route": {
                    "type": "string",
                    "description": "The announced network route."
                  },
                  "netname": {
                    "type": "string",
                    "description": "The network name."
                  },
                  "name": {
                    "type": "string",
                    "description": "The autonomous system organization name."
                  },
                  "country_code": {
                    "type": "string",
                    "description": "The ISO 3166-1 alpha-2 country code registered for the ASN."
                  },
                  "domain": {
                    "type": "string",
                    "description": "The organization domain."
                  },
                  "type": {
                    "type": "string",
                    "description": "The ASN type, such as isp, hosting, business, education, or government."
                  },
                  "rir": {
                    "type": "string",
                    "description": "The regional internet registry."
                  }
                },
                "additionalProperties": true,
                "description": "The autonomous system details returned by IPLocate."
              },
              "privacy": {
                "type": "object",
                "properties": {
                  "is_abuser": {
                    "type": "boolean",
                    "description": "Whether the IP is on a known spam or abuse blocklist."
                  },
                  "is_anonymous": {
                    "type": "boolean",
                    "description": "Whether the IP is anonymous."
                  },
                  "is_bogon": {
                    "type": "boolean",
                    "description": "Whether the IP is a bogon or reserved address."
                  },
                  "is_hosting": {
                    "type": "boolean",
                    "description": "Whether the IP belongs to a hosting provider."
                  },
                  "is_icloud_relay": {
                    "type": "boolean",
                    "description": "Whether the IP is using iCloud Private Relay."
                  },
                  "is_proxy": {
                    "type": "boolean",
                    "description": "Whether the IP is using a proxy service."
                  },
                  "is_tor": {
                    "type": "boolean",
                    "description": "Whether the IP is using Tor."
                  },
                  "is_vpn": {
                    "type": "boolean",
                    "description": "Whether the IP is using a VPN service."
                  }
                },
                "additionalProperties": true,
                "description": "The privacy and threat flags returned by IPLocate."
              },
              "company": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The company information associated with the IP address."
              },
              "hosting": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The hosting provider information returned by IPLocate."
              },
              "abuse": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The abuse contact information returned by IPLocate."
              }
            },
            "additionalProperties": true,
            "description": "The IPLocate lookup result."
          }
        },
        "additionalProperties": false,
        "required": [
          "result"
        ],
        "description": "The wrapped IPLocate lookup output."
      }
    }
  ]
}
