{
  "service": "whoisfreaks",
  "displayName": "WhoisFreaks",
  "categories": [
    "Security",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "WHOISFREAKS_API_KEY",
      "description": "WhoisFreaks API key passed with the apiKey query parameter. Sign in to your dashboard to copy it from https://whoisfreaks.com/documentation/.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://whoisfreaks.com",
  "actions": [
    {
      "id": "whoisfreaks.check_domain_availability",
      "service": "whoisfreaks",
      "name": "check_domain_availability",
      "description": "Check whether one domain is available for registration and optionally request suggestions.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "minLength": 1,
            "description": "The domain name to query."
          },
          "sug": {
            "type": "boolean",
            "description": "Whether WhoisFreaks should return suggested alternatives."
          },
          "count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of suggestions to return when suggestions are enabled."
          }
        },
        "additionalProperties": false,
        "required": [
          "domain"
        ],
        "description": "Input for checking domain availability."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "availability": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "domain": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The domain name returned in one availability result."
                },
                "domainAvailability": {
                  "type": "boolean",
                  "description": "Whether the returned domain is available for registration."
                }
              },
              "additionalProperties": false,
              "description": "One domain availability result returned by WhoisFreaks."
            },
            "description": "The availability results returned by WhoisFreaks."
          }
        },
        "additionalProperties": false,
        "required": [
          "availability"
        ],
        "description": "Action output."
      }
    },
    {
      "id": "whoisfreaks.get_asn_whois",
      "service": "whoisfreaks",
      "name": "get_asn_whois",
      "description": "Retrieve the ASN WHOIS record for one autonomous system number.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "asn": {
            "type": "string",
            "minLength": 1,
            "description": "The ASN identifier with or without the AS prefix."
          }
        },
        "additionalProperties": false,
        "required": [
          "asn"
        ],
        "description": "Input for ASN WHOIS lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "asnWhois": {
            "type": "object",
            "additionalProperties": true,
            "description": "A raw JSON object returned by WhoisFreaks."
          }
        },
        "additionalProperties": false,
        "required": [
          "asnWhois"
        ],
        "description": "Action output."
      }
    },
    {
      "id": "whoisfreaks.get_domain_whois",
      "service": "whoisfreaks",
      "name": "get_domain_whois",
      "description": "Retrieve the live WHOIS record for one domain.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "domainName": {
            "type": "string",
            "minLength": 1,
            "description": "The domain name used for live WHOIS lookup."
          }
        },
        "additionalProperties": false,
        "required": [
          "domainName"
        ],
        "description": "Input for live domain WHOIS lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "whois": {
            "type": "object",
            "additionalProperties": true,
            "description": "A raw JSON object returned by WhoisFreaks."
          }
        },
        "additionalProperties": false,
        "required": [
          "whois"
        ],
        "description": "Action output."
      }
    },
    {
      "id": "whoisfreaks.get_ip_whois",
      "service": "whoisfreaks",
      "name": "get_ip_whois",
      "description": "Retrieve the IP WHOIS record for one IP address.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "anyOf": [
              {
                "type": "string",
                "description": "The IPv4 address to query.",
                "format": "ipv4"
              },
              {
                "type": "string",
                "description": "The IPv6 address to query.",
                "format": "ipv6"
              }
            ],
            "description": "The IPv4 or IPv6 address to query."
          }
        },
        "additionalProperties": false,
        "required": [
          "ip"
        ],
        "description": "Input for IP WHOIS lookup."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ipWhois": {
            "type": "object",
            "additionalProperties": true,
            "description": "A raw JSON object returned by WhoisFreaks."
          }
        },
        "additionalProperties": false,
        "required": [
          "ipWhois"
        ],
        "description": "Action output."
      }
    },
    {
      "id": "whoisfreaks.list_subdomains",
      "service": "whoisfreaks",
      "name": "list_subdomains",
      "description": "List known subdomains for one domain with optional paging and status filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "minLength": 1,
            "description": "The domain name to query."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The 1-based page number to fetch."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive"
            ],
            "description": "The subdomain status filter returned by WhoisFreaks."
          },
          "after": {
            "type": "string",
            "description": "Return subdomain records created after this YYYY-MM-DD date.",
            "format": "date"
          },
          "before": {
            "type": "string",
            "description": "Return subdomain records created before this YYYY-MM-DD date.",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "required": [
          "domain"
        ],
        "description": "Input for subdomain discovery."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "minLength": 1,
            "description": "The domain name to query."
          },
          "subdomains": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "subdomain": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The fully qualified subdomain name."
                },
                "first_seen": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The first date when the subdomain was observed."
                },
                "last_seen": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The last date when the subdomain was observed."
                },
                "inactive_from": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The date when the subdomain became inactive, or N/A."
                }
              },
              "additionalProperties": false,
              "description": "One subdomain record returned by WhoisFreaks."
            },
            "description": "The subdomain records returned by WhoisFreaks."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "currentPage": {
                "type": "integer",
                "minimum": 1,
                "description": "The current result page."
              },
              "totalPages": {
                "type": "integer",
                "minimum": 1,
                "description": "The total number of available pages."
              },
              "totalRecords": {
                "type": "integer",
                "minimum": 0,
                "description": "The total number of available records."
              }
            },
            "additionalProperties": false,
            "description": "Normalized pagination metadata for WhoisFreaks list results."
          }
        },
        "additionalProperties": false,
        "required": [
          "domain",
          "subdomains",
          "pagination"
        ],
        "description": "Action output."
      }
    }
  ]
}
