{
  "service": "ipgeolocation_io",
  "displayName": "IPGeolocation.io",
  "categories": [
    "Location",
    "Data",
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "IPGEOLOCATION_IO_API_KEY",
      "description": "IPGeolocation.io API key passed as the apiKey query parameter. Get or manage API keys in the IPGeolocation.io dashboard: https://app.ipgeolocation.io/."
    }
  ],
  "homepageUrl": "https://ipgeolocation.io/",
  "actions": [
    {
      "id": "ipgeolocation_io.get_astronomy",
      "service": "ipgeolocation_io",
      "name": "get_astronomy",
      "description": "Get sunrise, sunset, moonrise, moonset, and moon phase data for a location.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "minLength": 1,
            "description": "The IPv4 or IPv6 address to look up.",
            "pattern": "\\S"
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "The latitude coordinate."
          },
          "long": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "The longitude coordinate."
          },
          "location": {
            "type": "string",
            "minLength": 1,
            "description": "The location string accepted by IPGeolocation.io.",
            "pattern": "\\S"
          },
          "date": {
            "type": "string",
            "description": "The date to use for astronomy data in YYYY-MM-DD format.",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "description": "The input payload for getting IPGeolocation.io astronomy data."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "astronomy": {
            "type": "object",
            "properties": {
              "location": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "The raw object returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "date": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The date used for the astronomy result."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currentTime": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The current local time returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "sunrise": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The sunrise time."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "sunset": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The sunset time."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "sunStatus": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The current sun status when returned."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "solarNoon": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The solar noon time."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "dayLength": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The day length."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "moonrise": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The moonrise time."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "moonset": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The moonset time."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "moonStatus": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The current moon status when returned."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "moonPhase": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The moon phase name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "moonIlluminationPercentage": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The moon illumination percentage when returned."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "moonAngle": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The moon angle when returned."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw object returned by IPGeolocation.io."
              }
            },
            "additionalProperties": false,
            "description": "The normalized IPGeolocation.io astronomy result."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when getting astronomy data."
      }
    },
    {
      "id": "ipgeolocation_io.get_timezone",
      "service": "ipgeolocation_io",
      "name": "get_timezone",
      "description": "Get time zone information by IP address, coordinates, location, or time zone name.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "minLength": 1,
            "description": "The IPv4 or IPv6 address to look up.",
            "pattern": "\\S"
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "The latitude coordinate."
          },
          "long": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "The longitude coordinate."
          },
          "location": {
            "type": "string",
            "minLength": 1,
            "description": "The location string accepted by IPGeolocation.io.",
            "pattern": "\\S"
          },
          "timeZone": {
            "type": "string",
            "minLength": 1,
            "description": "The IANA time zone name.",
            "pattern": "\\S"
          }
        },
        "additionalProperties": false,
        "description": "The input payload for getting IPGeolocation.io time zone data."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "timeZone": {
            "type": "object",
            "properties": {
              "timeZone": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The IANA time zone name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "date": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The date returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "dateTime": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The local date and time string."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "dateTimeTxt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The formatted local date and time text."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "dateTimeWti": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The local date and time with time zone information."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "dateTimeYmd": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The local date in YYYY-MM-DD format."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "dateTimeUnix": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The local date and time as a Unix timestamp when returned."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "time24": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The 24-hour local time string."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "time12": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The 12-hour local time string."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "week": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The week number."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "month": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The month number."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "year": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The year."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "yearAbbr": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The abbreviated year."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "isDst": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether daylight saving time is active."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "dstSavings": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The daylight saving time offset in seconds."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "geo": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "The raw object returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw object returned by IPGeolocation.io."
              }
            },
            "additionalProperties": false,
            "description": "The normalized IPGeolocation.io time zone result."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when getting time zone data."
      }
    },
    {
      "id": "ipgeolocation_io.lookup_ip",
      "service": "ipgeolocation_io",
      "name": "lookup_ip",
      "description": "Look up IP geolocation data with optional field controls.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "minLength": 1,
            "description": "The IPv4 or IPv6 address to look up.",
            "pattern": "\\S"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One IPGeolocation.io field name."
            },
            "description": "Specific response fields to request from IPGeolocation.io.",
            "minItems": 1
          },
          "excludes": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One IPGeolocation.io field name."
            },
            "description": "Specific response fields to exclude from the IPGeolocation.io response.",
            "minItems": 1
          },
          "includeHostname": {
            "type": "boolean",
            "description": "Whether to include hostname data in the geolocation response."
          },
          "includeGeoAccuracy": {
            "type": "boolean",
            "description": "Whether to include geo accuracy fields in the geolocation response."
          },
          "includeDmaCode": {
            "type": "boolean",
            "description": "Whether to include DMA code fields in the geolocation response."
          },
          "includeSecurity": {
            "type": "boolean",
            "description": "Whether to include security threat intelligence fields."
          },
          "includeAbuse": {
            "type": "boolean",
            "description": "Whether to include abuse contact fields."
          },
          "includeUserAgent": {
            "type": "boolean",
            "description": "Whether to include user-agent derived fields when supported."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for looking up an IP address."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "geolocation": {
            "type": "object",
            "properties": {
              "ip": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The queried IP address."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "hostname": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The hostname associated with the IP address when returned."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continentCode": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The continent code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continentName": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The continent name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "countryCode2": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The ISO 3166-1 alpha-2 country code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "countryCode3": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The ISO 3166-1 alpha-3 country code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "countryName": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The country name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "stateProvince": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The state or province name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "district": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The district name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "city": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The city name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "zipcode": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The postal code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "latitude": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The latitude returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "longitude": {
                "anyOf": [
                  {
                    "type": "number",
                    "description": "The longitude returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "callingCode": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The international calling code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "countryFlag": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The country flag URL or emoji field returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "countryMetadata": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "The raw object returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "network": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "The raw object returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "asn": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "The raw object returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "company": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "The raw object returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "timeZone": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "The raw object returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currency": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "The raw object returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "security": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "The raw object returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "abuse": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "The raw object returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "userAgent": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "The raw object returned by IPGeolocation.io."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw object returned by IPGeolocation.io."
              }
            },
            "additionalProperties": false,
            "description": "The normalized IP geolocation result."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when looking up an IP address."
      }
    }
  ]
}
