{
  "openapi": "3.1.0",
  "info": {
    "title": "Krawly Tools API",
    "version": "1.0.0",
    "description": "Documented Krawly API endpoints for SEO, web scraping, developer, and website-analysis workflows.",
    "contact": {
      "name": "Krawly",
      "url": "https://krawly.io"
    }
  },
  "servers": [
    {
      "url": "https://krawly.io",
      "description": "Production"
    }
  ],
  "paths": {
    "/api/v1/tools/seo-analyzer/": {
      "post": {
        "operationId": "seoAnalyzer",
        "summary": "Analyze SEO metadata, Open Graph, headings, content metrics and get a score",
        "tags": ["Analysis"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": { "type": "string", "format": "uri", "description": "URL to analyze" }
                },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Analysis results" },
          "429": { "description": "Rate limit exceeded (30/day)" }
        }
      }
    },
    "/api/v1/tools/tech-detector/": {
      "post": {
        "operationId": "techDetector",
        "summary": "Detect technologies, frameworks, and infrastructure used on any website",
        "tags": ["Analysis"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": { "type": "string", "format": "uri" }
                },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Detection results" },
          "429": { "description": "Rate limit exceeded" }
        }
      }
    },
    "/api/v1/tools/lead-generation/": {
      "post": {
        "operationId": "leadGeneration",
        "summary": "Find emails, phone numbers, and social media links from any website",
        "tags": ["Web Scraping"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": { "type": "string", "format": "uri" }
                },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Extracted contact info" },
          "429": { "description": "Rate limit exceeded" }
        }
      }
    },
    "/api/v1/tools/screenshot/": {
      "post": {
        "operationId": "screenshot",
        "summary": "Take high-quality screenshots of any website in various resolutions",
        "tags": ["Utilities"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": { "type": "string", "format": "uri" }
                },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Screenshot image" },
          "429": { "description": "Rate limit exceeded" }
        }
      }
    },
    "/api/v1/tools/content-extractor/": {
      "post": {
        "operationId": "contentExtractor",
        "summary": "Extract clean article text, metadata, and images from any webpage",
        "tags": ["Web Scraping"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": { "type": "string", "format": "uri" }
                },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Extracted content" },
          "429": { "description": "Rate limit exceeded" }
        }
      }
    },
    "/api/v1/tools/broken-link-checker/": {
      "post": {
        "operationId": "brokenLinkChecker",
        "summary": "Crawl any webpage and check all links for broken URLs, redirects, timeouts",
        "tags": ["SEO"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": { "type": "string", "format": "uri" }
                },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Link check results" },
          "429": { "description": "Rate limit exceeded" }
        }
      }
    },
    "/api/v1/tools/dns-whois/": {
      "post": {
        "operationId": "dnsWhois",
        "summary": "Look up DNS records, IP addresses, nameservers, and WHOIS registration data",
        "tags": ["Analysis"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": { "type": "string", "format": "uri" }
                },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "DNS/WHOIS results" },
          "429": { "description": "Rate limit exceeded" }
        }
      }
    },
    "/api/v1/tools/ssl-checker/": {
      "post": {
        "operationId": "sslChecker",
        "summary": "Check SSL certificate details, expiry, and security of any domain",
        "tags": ["Security"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": { "type": "string", "format": "uri" }
                },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "SSL check results" },
          "429": { "description": "Rate limit exceeded" }
        }
      }
    }
  }
}
