{
  "service": "ipstack",
  "displayName": "ipstack",
  "categories": [
    "Location",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "IPSTACK_API_KEY",
      "description": "ipstack API key sent as the access_key query parameter. Find it in your APILayer account API keys page: https://apilayer.com/docs/article/managing-api-keys"
    }
  ],
  "homepageUrl": "https://ipstack.com",
  "actions": [
    {
      "id": "ipstack.bulk_lookup",
      "service": "ipstack",
      "name": "bulk_lookup",
      "description": "Look up multiple IPv4 or IPv6 addresses in one ipstack request.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ips": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "An IPv4 or IPv6 address to include in the bulk lookup."
            },
            "description": "The IPv4 or IPv6 addresses to look up.",
            "minItems": 1,
            "maxItems": 50
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A response field path accepted by ipstack."
            },
            "description": "Optional ipstack response fields to include, such as country_code or location.country_flag.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "ips"
        ],
        "description": "Input parameters for looking up multiple IP addresses with ipstack."
      },
      "outputSchema": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "ip": {
              "type": "string",
              "description": "The IP address that was looked up."
            },
            "type": {
              "type": "string",
              "description": "The IP address type, such as ipv4 or ipv6."
            },
            "continent_code": {
              "type": "string",
              "description": "The continent code."
            },
            "continent_name": {
              "type": "string",
              "description": "The continent name."
            },
            "country_code": {
              "type": "string",
              "description": "The ISO 3166-1 alpha-2 country code."
            },
            "country_name": {
              "type": "string",
              "description": "The country name."
            },
            "region_code": {
              "type": "string",
              "description": "The region or state code."
            },
            "region_name": {
              "type": "string",
              "description": "The region or state name."
            },
            "city": {
              "type": "string",
              "description": "The city name."
            },
            "zip": {
              "type": "string",
              "description": "The postal or ZIP code."
            },
            "latitude": {
              "type": "number",
              "description": "The latitude coordinate."
            },
            "longitude": {
              "type": "number",
              "description": "The longitude coordinate."
            },
            "location": {
              "type": "object",
              "properties": {
                "geoname_id": {
                  "type": "integer",
                  "description": "The GeoNames location identifier."
                },
                "capital": {
                  "type": "string",
                  "description": "The country capital."
                },
                "languages": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string",
                        "description": "The language code."
                      },
                      "name": {
                        "type": "string",
                        "description": "The language name."
                      },
                      "native": {
                        "type": "string",
                        "description": "The native language name."
                      }
                    },
                    "additionalProperties": true,
                    "description": "Language details returned by ipstack."
                  },
                  "description": "The languages associated with the country."
                },
                "country_flag": {
                  "type": "string",
                  "description": "The URL of the country flag image.",
                  "format": "uri"
                },
                "country_flag_emoji": {
                  "type": "string",
                  "description": "The country flag emoji."
                },
                "country_flag_emoji_unicode": {
                  "type": "string",
                  "description": "The Unicode codepoints for the country flag emoji."
                },
                "calling_code": {
                  "type": "string",
                  "description": "The international calling code."
                },
                "is_eu": {
                  "type": "boolean",
                  "description": "Whether the location is in the European Union."
                }
              },
              "additionalProperties": true,
              "description": "Location details returned by ipstack."
            },
            "time_zone": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The IANA time zone identifier."
                },
                "current_time": {
                  "type": "string",
                  "description": "The current local time in the time zone.",
                  "format": "date-time"
                },
                "gmt_offset": {
                  "type": "integer",
                  "description": "The GMT offset in seconds."
                },
                "code": {
                  "type": "string",
                  "description": "The time zone abbreviation."
                },
                "is_daylight_saving": {
                  "type": "boolean",
                  "description": "Whether daylight saving time is active."
                }
              },
              "additionalProperties": true,
              "description": "Time zone details returned by ipstack."
            },
            "currency": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string",
                  "description": "The ISO currency code."
                },
                "name": {
                  "type": "string",
                  "description": "The currency name."
                },
                "plural": {
                  "type": "string",
                  "description": "The plural currency name."
                },
                "symbol": {
                  "type": "string",
                  "description": "The currency symbol."
                },
                "symbol_native": {
                  "type": "string",
                  "description": "The native currency symbol."
                }
              },
              "additionalProperties": true,
              "description": "Currency details returned by ipstack."
            },
            "connection": {
              "type": "object",
              "properties": {
                "asn": {
                  "type": "integer",
                  "description": "The autonomous system number."
                },
                "isp": {
                  "type": "string",
                  "description": "The internet service provider name."
                }
              },
              "additionalProperties": true,
              "description": "Connection details returned by ipstack."
            },
            "security": {
              "type": "object",
              "properties": {
                "is_proxy": {
                  "type": "boolean",
                  "description": "Whether the IP address is identified as a proxy."
                },
                "proxy_type": {
                  "type": "string",
                  "description": "The detected proxy type."
                },
                "is_crawler": {
                  "type": "boolean",
                  "description": "Whether the IP address is identified as a crawler."
                },
                "crawler_name": {
                  "type": "string",
                  "description": "The detected crawler name."
                },
                "crawler_type": {
                  "type": "string",
                  "description": "The detected crawler type."
                },
                "is_tor": {
                  "type": "boolean",
                  "description": "Whether the IP address is identified as Tor."
                },
                "threat_level": {
                  "type": "string",
                  "description": "The detected threat level."
                },
                "threat_types": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "A threat type label."
                  },
                  "description": "The detected threat type labels."
                }
              },
              "additionalProperties": true,
              "description": "Security details returned by ipstack."
            }
          },
          "additionalProperties": true,
          "description": "The IP geolocation payload returned by ipstack."
        },
        "description": "The ipstack geolocation payloads returned for the submitted IPs."
      }
    },
    {
      "id": "ipstack.lookup_current_ip",
      "service": "ipstack",
      "name": "lookup_current_ip",
      "description": "Look up the requester IP address and return ipstack geolocation data.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A response field path accepted by ipstack."
            },
            "description": "Optional ipstack response fields to include, such as country_code or location.country_flag.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for looking up the requester IP address with ipstack."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "The IP address that was looked up."
          },
          "type": {
            "type": "string",
            "description": "The IP address type, such as ipv4 or ipv6."
          },
          "continent_code": {
            "type": "string",
            "description": "The continent code."
          },
          "continent_name": {
            "type": "string",
            "description": "The continent name."
          },
          "country_code": {
            "type": "string",
            "description": "The ISO 3166-1 alpha-2 country code."
          },
          "country_name": {
            "type": "string",
            "description": "The country name."
          },
          "region_code": {
            "type": "string",
            "description": "The region or state code."
          },
          "region_name": {
            "type": "string",
            "description": "The region or state name."
          },
          "city": {
            "type": "string",
            "description": "The city name."
          },
          "zip": {
            "type": "string",
            "description": "The postal or ZIP code."
          },
          "latitude": {
            "type": "number",
            "description": "The latitude coordinate."
          },
          "longitude": {
            "type": "number",
            "description": "The longitude coordinate."
          },
          "location": {
            "type": "object",
            "properties": {
              "geoname_id": {
                "type": "integer",
                "description": "The GeoNames location identifier."
              },
              "capital": {
                "type": "string",
                "description": "The country capital."
              },
              "languages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string",
                      "description": "The language code."
                    },
                    "name": {
                      "type": "string",
                      "description": "The language name."
                    },
                    "native": {
                      "type": "string",
                      "description": "The native language name."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Language details returned by ipstack."
                },
                "description": "The languages associated with the country."
              },
              "country_flag": {
                "type": "string",
                "description": "The URL of the country flag image.",
                "format": "uri"
              },
              "country_flag_emoji": {
                "type": "string",
                "description": "The country flag emoji."
              },
              "country_flag_emoji_unicode": {
                "type": "string",
                "description": "The Unicode codepoints for the country flag emoji."
              },
              "calling_code": {
                "type": "string",
                "description": "The international calling code."
              },
              "is_eu": {
                "type": "boolean",
                "description": "Whether the location is in the European Union."
              }
            },
            "additionalProperties": true,
            "description": "Location details returned by ipstack."
          },
          "time_zone": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The IANA time zone identifier."
              },
              "current_time": {
                "type": "string",
                "description": "The current local time in the time zone.",
                "format": "date-time"
              },
              "gmt_offset": {
                "type": "integer",
                "description": "The GMT offset in seconds."
              },
              "code": {
                "type": "string",
                "description": "The time zone abbreviation."
              },
              "is_daylight_saving": {
                "type": "boolean",
                "description": "Whether daylight saving time is active."
              }
            },
            "additionalProperties": true,
            "description": "Time zone details returned by ipstack."
          },
          "currency": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "description": "The ISO currency code."
              },
              "name": {
                "type": "string",
                "description": "The currency name."
              },
              "plural": {
                "type": "string",
                "description": "The plural currency name."
              },
              "symbol": {
                "type": "string",
                "description": "The currency symbol."
              },
              "symbol_native": {
                "type": "string",
                "description": "The native currency symbol."
              }
            },
            "additionalProperties": true,
            "description": "Currency details returned by ipstack."
          },
          "connection": {
            "type": "object",
            "properties": {
              "asn": {
                "type": "integer",
                "description": "The autonomous system number."
              },
              "isp": {
                "type": "string",
                "description": "The internet service provider name."
              }
            },
            "additionalProperties": true,
            "description": "Connection details returned by ipstack."
          },
          "security": {
            "type": "object",
            "properties": {
              "is_proxy": {
                "type": "boolean",
                "description": "Whether the IP address is identified as a proxy."
              },
              "proxy_type": {
                "type": "string",
                "description": "The detected proxy type."
              },
              "is_crawler": {
                "type": "boolean",
                "description": "Whether the IP address is identified as a crawler."
              },
              "crawler_name": {
                "type": "string",
                "description": "The detected crawler name."
              },
              "crawler_type": {
                "type": "string",
                "description": "The detected crawler type."
              },
              "is_tor": {
                "type": "boolean",
                "description": "Whether the IP address is identified as Tor."
              },
              "threat_level": {
                "type": "string",
                "description": "The detected threat level."
              },
              "threat_types": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "A threat type label."
                },
                "description": "The detected threat type labels."
              }
            },
            "additionalProperties": true,
            "description": "Security details returned by ipstack."
          }
        },
        "additionalProperties": true,
        "description": "The IP geolocation payload returned by ipstack."
      }
    },
    {
      "id": "ipstack.lookup_ip",
      "service": "ipstack",
      "name": "lookup_ip",
      "description": "Look up a single IPv4 or IPv6 address and return ipstack geolocation data.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "minLength": 1,
            "description": "The IPv4 or IPv6 address to look up."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A response field path accepted by ipstack."
            },
            "description": "Optional ipstack response fields to include, such as country_code or location.country_flag.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "ip"
        ],
        "description": "Input parameters for looking up a single IP address with ipstack."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "The IP address that was looked up."
          },
          "type": {
            "type": "string",
            "description": "The IP address type, such as ipv4 or ipv6."
          },
          "continent_code": {
            "type": "string",
            "description": "The continent code."
          },
          "continent_name": {
            "type": "string",
            "description": "The continent name."
          },
          "country_code": {
            "type": "string",
            "description": "The ISO 3166-1 alpha-2 country code."
          },
          "country_name": {
            "type": "string",
            "description": "The country name."
          },
          "region_code": {
            "type": "string",
            "description": "The region or state code."
          },
          "region_name": {
            "type": "string",
            "description": "The region or state name."
          },
          "city": {
            "type": "string",
            "description": "The city name."
          },
          "zip": {
            "type": "string",
            "description": "The postal or ZIP code."
          },
          "latitude": {
            "type": "number",
            "description": "The latitude coordinate."
          },
          "longitude": {
            "type": "number",
            "description": "The longitude coordinate."
          },
          "location": {
            "type": "object",
            "properties": {
              "geoname_id": {
                "type": "integer",
                "description": "The GeoNames location identifier."
              },
              "capital": {
                "type": "string",
                "description": "The country capital."
              },
              "languages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string",
                      "description": "The language code."
                    },
                    "name": {
                      "type": "string",
                      "description": "The language name."
                    },
                    "native": {
                      "type": "string",
                      "description": "The native language name."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Language details returned by ipstack."
                },
                "description": "The languages associated with the country."
              },
              "country_flag": {
                "type": "string",
                "description": "The URL of the country flag image.",
                "format": "uri"
              },
              "country_flag_emoji": {
                "type": "string",
                "description": "The country flag emoji."
              },
              "country_flag_emoji_unicode": {
                "type": "string",
                "description": "The Unicode codepoints for the country flag emoji."
              },
              "calling_code": {
                "type": "string",
                "description": "The international calling code."
              },
              "is_eu": {
                "type": "boolean",
                "description": "Whether the location is in the European Union."
              }
            },
            "additionalProperties": true,
            "description": "Location details returned by ipstack."
          },
          "time_zone": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The IANA time zone identifier."
              },
              "current_time": {
                "type": "string",
                "description": "The current local time in the time zone.",
                "format": "date-time"
              },
              "gmt_offset": {
                "type": "integer",
                "description": "The GMT offset in seconds."
              },
              "code": {
                "type": "string",
                "description": "The time zone abbreviation."
              },
              "is_daylight_saving": {
                "type": "boolean",
                "description": "Whether daylight saving time is active."
              }
            },
            "additionalProperties": true,
            "description": "Time zone details returned by ipstack."
          },
          "currency": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "description": "The ISO currency code."
              },
              "name": {
                "type": "string",
                "description": "The currency name."
              },
              "plural": {
                "type": "string",
                "description": "The plural currency name."
              },
              "symbol": {
                "type": "string",
                "description": "The currency symbol."
              },
              "symbol_native": {
                "type": "string",
                "description": "The native currency symbol."
              }
            },
            "additionalProperties": true,
            "description": "Currency details returned by ipstack."
          },
          "connection": {
            "type": "object",
            "properties": {
              "asn": {
                "type": "integer",
                "description": "The autonomous system number."
              },
              "isp": {
                "type": "string",
                "description": "The internet service provider name."
              }
            },
            "additionalProperties": true,
            "description": "Connection details returned by ipstack."
          },
          "security": {
            "type": "object",
            "properties": {
              "is_proxy": {
                "type": "boolean",
                "description": "Whether the IP address is identified as a proxy."
              },
              "proxy_type": {
                "type": "string",
                "description": "The detected proxy type."
              },
              "is_crawler": {
                "type": "boolean",
                "description": "Whether the IP address is identified as a crawler."
              },
              "crawler_name": {
                "type": "string",
                "description": "The detected crawler name."
              },
              "crawler_type": {
                "type": "string",
                "description": "The detected crawler type."
              },
              "is_tor": {
                "type": "boolean",
                "description": "Whether the IP address is identified as Tor."
              },
              "threat_level": {
                "type": "string",
                "description": "The detected threat level."
              },
              "threat_types": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "A threat type label."
                },
                "description": "The detected threat type labels."
              }
            },
            "additionalProperties": true,
            "description": "Security details returned by ipstack."
          }
        },
        "additionalProperties": true,
        "description": "The IP geolocation payload returned by ipstack."
      }
    }
  ]
}
