{
  "openapi": "3.1.0",
  "info": {
    "title": "Geekflare API",
    "description": "Official OpenAPI specification for all Geekflare API endpoints.",
    "version": "1.0.0",
    "license": { "name": "MIT" }
  },
  "servers": [{ "url": "https://api.geekflare.com" }],
  "security": [
    {
      "x-api-key": []
    }
  ],
  "paths": {
    "/meta-scraping": {
      "post": {
        "operationId": "MetaScrapeController_metaScrape",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MetaScrapeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully scraped webpage meta",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetaScrapeResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Scrape a webpage meta with custom options",
        "tags": ["metascrape"]
      }
    },
    "/web-scraping": {
      "post": {
        "operationId": "WebScrapeController_webScrape",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebScrapeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully scraped webpage",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebScrapeResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Scrape a webpage with custom options",
        "tags": ["webscrape"]
      }
    },
    "/dnsrecord": {
      "post": {
        "operationId": "DnsRecordController_dnsRecord",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DnsRecordDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved DNS records",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DnsRecordResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Retrieve DNS records for a given domain",
        "tags": ["dnsrecord"]
      }
    },
    "/screenshot": {
      "post": {
        "operationId": "ScreenshotController_screenshot",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScreenshotDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully captured screenshot",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScreenshotResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (e.g. invalid URL or parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error while capturing screenshot",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Capture a full-page screenshot of a website",
        "tags": ["screenshot"]
      }
    },
    "/up": {
      "post": {
        "operationId": "SiteStatusController_checkSite",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SiteStatusDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site status retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SiteStatusResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Check if a site is up or down",
        "tags": ["up"]
      }
    },
    "/redirectcheck": {
      "post": {
        "operationId": "RedirectCheckController_redirectCheck",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedirectCheckDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved redirect chain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RedirectCheckResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Check the redirection chain of a given URL",
        "tags": ["redirectcheck"]
      }
    },
    "/brokenlink": {
      "post": {
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BrokenLinkDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully checked for broken links",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrokenLinkResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Check if a webpage contains broken links",
        "tags": ["brokenlink"]
      }
    },
    "/url2pdf": {
      "post": {
        "operationId": "Url2PdfController_url2Pdf",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Url2PdfDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully captured Url2Pdf",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Url2PdfResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (e.g. invalid URL or parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error while capturing Url2Pdf",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Capture a full-page Url2Pdf of a website",
        "tags": ["url2pdf"]
      }
    },
    "/openport": {
      "post": {
        "operationId": "OpenPortController_scanPorts",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenPortDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Open ports retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenPortResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Scan a website for open ports",
        "tags": ["openport"]
      }
    },
    "/tlsscan": {
      "post": {
        "operationId": "TlsScanController_tlsScan",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TlsScanDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved TLS scan information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TlsScanResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Perform TLS scan for a given domain",
        "tags": ["tlsscan"]
      }
    },
    "/ttfb": {
      "post": {
        "operationId": "TtfbController_checkSite",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TtfbDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site status retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TtfbResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Check if a site is up or down",
        "tags": ["ttfb"]
      }
    },
    "/loadtime": {
      "post": {
        "operationId": "LoadTimeController_testLoadTime",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoadTimeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Load time retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoadTimeResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Measure the page load time for a given URL",
        "tags": ["loadtime"]
      }
    },
    "/httpheader": {
      "post": {
        "operationId": "HttpHeaderController_fetchHeaders",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HttpHeaderDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "HTTP headers retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpHeaderResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Fetch HTTP headers for a given URL",
        "tags": ["httpheader"]
      }
    },
    "/httpprotocol": {
      "post": {
        "operationId": "HttpProtocolController_detectProtocols",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HttpProtocolDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "HTTP protocols detected successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpProtocolResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Detect supported HTTP protocol versions for a given URL",
        "tags": ["httpprotocol"]
      }
    },
    "/mixedcontent": {
      "post": {
        "operationId": "MixedContentController_checkSite",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MixedContentDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site status retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MixedContentResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Check if a site is up or down",
        "tags": ["mixedcontent"]
      }
    },
    "/dnssec": {
      "post": {
        "operationId": "DnsSecController_checkDnssec",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DnsSecDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "DNSSEC test result retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DnsSecResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Check if DNSSEC is enabled for a domain",
        "tags": ["dnssec"]
      }
    },
    "/mtr": {
      "post": {
        "operationId": "MtrController_performMtr",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MtrDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "MTR test completed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MtrResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Perform MTR (My Traceroute) network diagnostic test",
        "tags": ["mtr"]
      }
    },
    "/ping": {
      "post": {
        "operationId": "PingController_performPing",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PingDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ping test completed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PingResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Perform ICMP Ping test on a given URL or IP",
        "tags": ["ping"]
      }
    },
    "/lighthouse": {
      "post": {
        "operationId": "LighthouseController_lighthouse",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LighthouseDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully ran Lighthouse audit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LighthouseResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (e.g. invalid URL or parameters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error while running Lighthouse audit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseErrorResponseDto"
                }
              }
            }
          }
        },
        "description": "Run Lighthouse audit on a website",
        "tags": ["lighthouse"]
      }
    },
    "/health": {
      "get": {
        "operationId": "HealthController_getHealth",
        "parameters": [],
        "responses": {
          "200": {
            "description": "API is healthy",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthResponseDto"
                }
              }
            }
          }
        },
        "description": "Check API health status",
        "tags": ["health"]
      }
    },
    "/health/service": {
      "get": {
        "operationId": "HealthController_getServiceHealth",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Services are healthy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceHealthResponseDto"
                }
              }
            }
          }
        },
        "description": "Check health status of dependent services",
        "tags": ["health"]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "x-api-key": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "API Key required for all endpoints"
      }
    },
    "schemas": {
      "MetaScrapeDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "device": {
            "type": "string",
            "description": "Device type to emulate. Defaults to desktop.",
            "example": "desktop",
            "enum": ["desktop", "mobile"],
            "default": "desktop"
          },
          "blockAds": {
            "type": "boolean",
            "description": "Whether to block ads",
            "example": true,
            "default": true
          },
          "renderJS": {
            "type": "boolean",
            "description": "Whether to render JavaScript",
            "example": true,
            "default": true
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          },
          "format": {
            "type": "string",
            "description": "Format of the scraped result. Defaults to html.",
            "example": "json",
            "enum": ["markdown", "json"],
            "default": "json"
          },
          "fileOutput": {
            "type": "boolean",
            "description": "Whether to get response in file format",
            "example": false,
            "default": false
          }
        },
        "required": ["url"]
      },
      "TestMetaDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique test identifier",
            "example": "mxqx9v9y0742lap6altwdteqd28t23nq"
          }
        },
        "required": ["id"]
      },
      "MetaScrapeMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The target URL that was scraped",
            "example": "https://example.com"
          },
          "device": {
            "type": "string",
            "description": "Device type used",
            "example": "desktop",
            "enum": ["desktop", "mobile"]
          },
          "format": {
            "type": "string",
            "description": "Output format of the result",
            "example": "json",
            "enum": ["markdown", "json"]
          },
          "fileOutput": {
            "type": "boolean",
            "description": "Whether to get response in file format",
            "example": false
          },
          "blockAds": {
            "type": "boolean",
            "description": "Whether ads were blocked",
            "example": true
          },
          "renderJS": {
            "type": "boolean",
            "description": "Whether JavaScript was rendered",
            "example": true
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country used, if any"
          },
          "test": {
            "description": "Test details object",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": [
          "url",
          "device",
          "format",
          "fileOutput",
          "blockAds",
          "renderJS",
          "test"
        ]
      },
      "MetaScrapeResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the request",
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaScrapeMetaDto"
              }
            ]
          },
          "data": {
            "description": "Scraped data (URL or inline content depending on output)",
            "example": "https://example.com/9bulgk075ed9m3vhua5vcrp0.html",
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object"
              }
            ]
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "BaseErrorResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "message": {
            "type": "string",
            "description": "Error message",
            "example": "Invalid URL provided"
          },
          "details": {
            "type": "string",
            "description": "Detailed error information",
            "example": "The URL must be a valid HTTP or HTTPS URL"
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "message"]
      },
      "DefaultExtractionFieldDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Title/key of the extracted field",
            "example": "Product Name"
          },
          "value": {
            "type": "object",
            "description": "Static value to assign to this field",
            "example": "Some hardcoded string"
          }
        },
        "required": ["title", "value"]
      },
      "SelectorExtractionFieldDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Field name in the extracted JSON",
            "example": "title"
          },
          "selector": {
            "type": "string",
            "description": "Selector or XPath to extract value",
            "example": "h1.product-title"
          },
          "type": {
            "type": "string",
            "description": "Type of data to extract",
            "example": "text"
          },
          "attribute": {
            "type": "string",
            "description": "If type=attr, specify attribute name",
            "example": "href"
          },
          "fields": {
            "description": "Nested fields",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SelectorExtractionFieldDto"
            }
          }
        },
        "required": ["name", "selector", "type"]
      },
      "ExtractionSchemaDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name/Label for this extraction schema",
            "example": "Product Schema"
          },
          "baseSelector": {
            "type": "string",
            "description": "Base selector for scoping extraction (css/xpath only)",
            "example": ".product"
          },
          "fields": {
            "type": "array",
            "description": "List of fields to extract",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/DefaultExtractionFieldDto"
                },
                {
                  "$ref": "#/components/schemas/SelectorExtractionFieldDto"
                }
              ]
            }
          }
        },
        "required": ["name", "fields"]
      },
      "WebScrapeDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "device": {
            "type": "string",
            "description": "Device type to emulate. Defaults to desktop.",
            "example": "desktop",
            "enum": ["desktop", "mobile"],
            "default": "desktop"
          },
          "blockAds": {
            "type": "boolean",
            "description": "Whether to block ads",
            "example": true,
            "default": true
          },
          "renderJS": {
            "type": "boolean",
            "description": "Whether to render JavaScript",
            "example": true,
            "default": true
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          },
          "format": {
            "type": "string",
            "description": "Format of the scraped result. Defaults to html.",
            "example": "html",
            "enum": ["html", "markdown", "json", "markdown-filtered", "all"],
            "default": "html"
          },
          "fileOutput": {
            "type": "boolean",
            "description": "Whether to get response in file format",
            "example": false,
            "default": false
          },
          "extractionMode": {
            "type": "string",
            "description": "Extraction mode (only used if format=json)",
            "example": "default",
            "enum": ["default", "cssSchema", "xpathSchema"],
            "default": "default"
          },
          "extractionSchema": {
            "description": "Extraction schema (optional in default mode, required in css/xpath)",
            "examples": {
              "default": {
                "description": "Default Mode Schema",
                "value": {
                  "name": "Quick Fields",
                  "fields": [
                    {
                      "title": "Category",
                      "value": "Electronics"
                    },
                    {
                      "title": "Country",
                      "value": "India"
                    }
                  ]
                }
              },
              "cssSchema": {
                "description": "CSS Schema",
                "value": {
                  "name": "Product Schema",
                  "baseSelector": ".product",
                  "fields": [
                    {
                      "name": "title",
                      "selector": "h1.product-title",
                      "type": "text"
                    },
                    {
                      "name": "price",
                      "selector": ".price",
                      "type": "text"
                    }
                  ]
                }
              },
              "xpathSchema": {
                "description": "XPath Schema",
                "value": {
                  "name": "Article Schema",
                  "baseSelector": "//div[@class='article']",
                  "fields": [
                    {
                      "name": "title",
                      "selector": "//h1/text()",
                      "type": "text"
                    }
                  ]
                }
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/ExtractionSchemaDto"
              }
            ]
          }
        },
        "required": ["url"]
      },
      "WebScrapeMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The target URL that was scraped",
            "example": "https://example.com"
          },
          "device": {
            "type": "string",
            "description": "Device type used",
            "example": "desktop",
            "enum": ["desktop", "mobile"]
          },
          "format": {
            "type": "string",
            "description": "Output format of the result",
            "example": "html",
            "enum": ["html", "markdown", "json", "markdown-filtered", "all"]
          },
          "fileOutput": {
            "type": "boolean",
            "description": "Whether to get response in file format",
            "example": false
          },
          "blockAds": {
            "type": "boolean",
            "description": "Whether ads were blocked",
            "example": true
          },
          "renderJS": {
            "type": "boolean",
            "description": "Whether JavaScript was rendered",
            "example": true
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country used, if any"
          },
          "extractionMode": {
            "type": "string",
            "description": "Extraction mode (only used if format=json)",
            "example": "default"
          },
          "extractionSchema": {
            "description": "Extraction schema (optional in default mode, required in css/xpath)",
            "examples": {
              "default": {
                "description": "Default Mode Schema",
                "value": {
                  "name": "Quick Fields",
                  "fields": [
                    {
                      "title": "Category",
                      "value": "Electronics"
                    },
                    {
                      "title": "Country",
                      "value": "India"
                    }
                  ]
                }
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/ExtractionSchemaDto"
              }
            ]
          },
          "test": {
            "description": "Test details object",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": [
          "url",
          "device",
          "format",
          "fileOutput",
          "blockAds",
          "renderJS",
          "extractionMode",
          "extractionSchema",
          "test"
        ]
      },
      "WebScrapeResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the request",
            "allOf": [
              {
                "$ref": "#/components/schemas/WebScrapeMetaDto"
              }
            ]
          },
          "data": {
            "description": "Scraped data (URL or inline content depending on output)",
            "example": "https://example.com/9bulgk075ed9m3vhua5vcrp0.html",
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object"
              }
            ]
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "DnsRecordDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "types": {
            "type": "array",
            "description": "List of DNS record types to query. If omitted, all supported types will be returned.",
            "example": ["A", "MX"],
            "items": {
              "type": "string",
              "enum": [
                "A",
                "AAAA",
                "CNAME",
                "MX",
                "CAA",
                "NS",
                "SOA",
                "SRV",
                "TXT"
              ]
            }
          }
        },
        "required": ["url"]
      },
      "DnsMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The target URL that was scraped",
            "example": "https://example.com"
          },
          "types": {
            "type": "string",
            "description": "List of DNS record types to query. If omitted, all supported types will be returned.",
            "example": ["A", "MX"],
            "enum": [
              "A",
              "AAAA",
              "CNAME",
              "MX",
              "CAA",
              "NS",
              "SOA",
              "SRV",
              "TXT"
            ]
          },
          "test": {
            "description": "Test details object",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "types", "test"]
      },
      "DnsRecordResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the request.",
            "example": {
              "url": "example.com",
              "types": ["A", "MX"],
              "test": {
                "id": "zmkqoxxu075dwn4u61yoqhq2rwo0029m"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/DnsMetaDto"
              }
            ]
          },
          "data": {
            "type": "object",
            "description": "DNS records grouped by type.",
            "example": {
              "A": ["172.67.70.213", "104.26.11.88", "104.26.10.88"],
              "MX": [
                {
                  "exchange": "alt3.aspmx.l.google.com",
                  "priority": 10
                },
                {
                  "exchange": "aspmx.l.google.com",
                  "priority": 1
                }
              ]
            }
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "ScreenshotDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "device": {
            "type": "string",
            "description": "Device type to emulate. Defaults to desktop.",
            "example": "desktop",
            "enum": ["desktop", "mobile"],
            "default": "desktop"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          },
          "type": {
            "type": "string",
            "description": "File type of screenshot. Defaults to png.",
            "example": "png",
            "enum": ["png", "jpeg", "webp"],
            "default": "png"
          },
          "fullPage": {
            "type": "boolean",
            "description": "Take full-page screenshot",
            "example": true,
            "default": false
          },
          "blockAds": {
            "type": "boolean",
            "description": "Block ads on the page",
            "example": true,
            "default": true
          },
          "hideCookie": {
            "type": "boolean",
            "description": "Hide cookie popups",
            "example": true,
            "default": true
          },
          "skipCaptcha": {
            "type": "boolean",
            "description": "Try to bypass captcha",
            "example": true,
            "default": true
          },
          "addTimestamp": {
            "type": "boolean",
            "description": "Add timestamp watermark",
            "example": true,
            "default": false
          },
          "pageHeight": {
            "type": "number",
            "description": "Height of the page (for partial screenshot)",
            "example": 2000,
            "minimum": 100,
            "maximum": 5000
          },
          "viewportWidth": {
            "type": "number",
            "description": "Width of the viewport",
            "example": 1280,
            "minimum": 320,
            "maximum": 3840
          },
          "viewportHeight": {
            "type": "number",
            "description": "Height of the viewport",
            "example": 800,
            "minimum": 240,
            "maximum": 2160
          },
          "theme": {
            "type": "string",
            "description": "Theme to use for rendering",
            "example": "auto",
            "enum": ["light", "dark", "auto"],
            "default": "auto"
          },
          "removeBackground": {
            "type": "boolean",
            "description": "Remove background from screenshot",
            "example": false
          },
          "highlightLinks": {
            "type": "boolean",
            "description": "Highlight links on the page",
            "example": false
          },
          "delay": {
            "type": "number",
            "description": "Delay before taking screenshot (in seconds)",
            "example": 2,
            "minimum": 0,
            "maximum": 10
          },
          "disableAnimations": {
            "type": "boolean",
            "description": "Disable animations on the page",
            "example": false
          },
          "quality": {
            "type": "number",
            "description": "Image quality (for JPEG/WEBP)",
            "example": 90,
            "minimum": 10,
            "maximum": 100
          },
          "scaleFactor": {
            "type": "number",
            "description": "Device scale factor",
            "example": 1,
            "minimum": 0.1,
            "maximum": 5
          },
          "captureBeyondViewport": {
            "type": "boolean",
            "description": "Capture beyond viewport if possible",
            "example": true
          }
        },
        "required": ["url"]
      },
      "ScreenshotMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The target URL that was captured",
            "example": "https://example.com"
          },
          "type": {
            "type": "string",
            "description": "File type of screenshot",
            "example": "png"
          },
          "device": {
            "type": "string",
            "description": "Device type used",
            "example": "desktop"
          },
          "fullPage": {
            "type": "boolean",
            "description": "Whether full-page screenshot was taken",
            "example": false
          },
          "blockAds": {
            "type": "boolean",
            "description": "Whether ads were blocked",
            "example": false
          },
          "hideCookie": {
            "type": "boolean",
            "description": "Whether cookie popups were hidden",
            "example": false
          },
          "skipCaptcha": {
            "type": "boolean",
            "description": "Whether captcha was bypassed",
            "example": false
          },
          "addTimestamp": {
            "type": "boolean",
            "description": "Whether timestamp watermark was added",
            "example": false
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country used, if any"
          },
          "pageHeight": {
            "type": "number",
            "description": "Height of the page",
            "example": 2000
          },
          "viewportWidth": {
            "type": "number",
            "description": "Width of the viewport",
            "example": 1280
          },
          "viewportHeight": {
            "type": "number",
            "description": "Height of the viewport",
            "example": 800
          },
          "theme": {
            "type": "string",
            "description": "Theme used",
            "example": "auto"
          },
          "removeBackground": {
            "type": "boolean",
            "description": "Whether background was removed",
            "example": false
          },
          "highlightLinks": {
            "type": "boolean",
            "description": "Whether links were highlighted",
            "example": false
          },
          "delay": {
            "type": "number",
            "description": "Delay before screenshot",
            "example": 2
          },
          "disableAnimations": {
            "type": "boolean",
            "description": "Whether animations were disabled",
            "example": false
          },
          "quality": {
            "type": "number",
            "description": "Image quality (JPEG/WEBP)",
            "example": 90
          },
          "scaleFactor": {
            "type": "number",
            "description": "Device scale factor",
            "example": 1
          },
          "captureBeyondViewport": {
            "type": "boolean",
            "description": "Capture beyond viewport",
            "example": true
          },
          "test": {
            "description": "Test details",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": [
          "url",
          "type",
          "device",
          "fullPage",
          "blockAds",
          "hideCookie",
          "skipCaptcha",
          "addTimestamp",
          "test"
        ]
      },
      "ScreenshotResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the request",
            "allOf": [
              {
                "$ref": "#/components/schemas/ScreenshotMetaDto"
              }
            ]
          },
          "data": {
            "type": "string",
            "description": "Screenshot URL or base64 string",
            "example": "https://geekflare.com/tests/screenshot/kbi6d206g87ituahb7icwtpr.png"
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "SiteStatusDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether to follow redirects when checking site status",
            "example": false,
            "default": false
          }
        },
        "required": ["url"]
      },
      "SiteStatusMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The target URL checked",
            "example": "https://example.com"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether redirects were followed",
            "example": true
          },
          "redirectedURL": {
            "type": "object",
            "description": "Final redirected URL (if applicable)",
            "example": "https://www.example.com/home"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country used (if any)",
            "example": "US"
          },
          "test": {
            "description": "Test details object",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "followRedirect", "proxyCountry", "test"]
      },
      "SiteStatusResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "message": {
            "type": "string",
            "description": "Indicates the current status of the site. It can either be \"Site is up\" or \"Unable to reach the URL.\"",
            "example": "Site is up"
          },
          "meta": {
            "description": "Metadata about the site status check.",
            "example": {
              "url": "example.com",
              "proxyCountry": "US",
              "followRedirect": true,
              "redirectedURL": "https://www.example.com",
              "test": {
                "id": "zmkqoxxu075dwn4u61yoqhq2rwo0029m"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/SiteStatusMetaDto"
              }
            ]
          },
          "data": {
            "type": "object",
            "description": "HTTP status information from the site check.",
            "example": {
              "statusCode": 200,
              "reasonPhrase": "OK"
            }
          }
        },
        "required": [
          "timestamp",
          "apiStatus",
          "apiCode",
          "message",
          "meta",
          "data"
        ]
      },
      "RedirectCheckDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          }
        },
        "required": ["url"]
      },
      "RedirectCheckMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The original URL checked",
            "example": "example.com"
          },
          "proxyCountry": {
            "type": "object",
            "description": "Proxy country used (if any)",
            "example": "US"
          },
          "test": {
            "description": "Test details object",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "proxyCountry", "test"]
      },
      "RedirectHopDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The URL at this hop",
            "example": "http://example.com/"
          },
          "status": {
            "type": "number",
            "description": "HTTP status code at this hop",
            "example": 301
          },
          "headers": {
            "description": "Response headers",
            "example": [
              {
                "name": "location",
                "value": "https://example.com/"
              },
              {
                "name": "date",
                "value": "Mon, 29 Aug 2022 07:17:31 GMT"
              }
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": ["url", "status", "headers"]
      },
      "RedirectCheckResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the redirection check.",
            "example": {
              "url": "example.com",
              "proxyCountry": "United States",
              "test": {
                "id": "667zexrk0aaiabz2rx95b2cxm0khc2s0"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/RedirectCheckMetaDto"
              }
            ]
          },
          "data": {
            "description": "List of redirection hops with status and headers.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RedirectHopDto"
            }
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "BrokenLinkDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether to follow redirects when checking site status",
            "example": false,
            "default": false
          }
        },
        "required": ["url"]
      },
      "BrokenLinkMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The target URL checked for broken links",
            "example": "example.com"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country used for this request",
            "example": "United States"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether redirection was followed",
            "example": true
          },
          "redirectedURL": {
            "type": "string",
            "description": "Final URL after redirection (if any)",
            "example": "https://example.com/"
          },
          "test": {
            "description": "Test details object",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": [
          "url",
          "proxyCountry",
          "followRedirect",
          "redirectedURL",
          "test"
        ]
      },
      "BrokenLinkResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "message": {
            "type": "string",
            "description": "Human-readable message about the broken link scan result",
            "example": "No broken links found."
          },
          "meta": {
            "description": "Metadata about the broken link request",
            "example": {
              "url": "example.com",
              "proxyCountry": "United States",
              "followRedirect": true,
              "redirectedURL": "https://example.com/",
              "test": {
                "id": "wf0b7yrn05br8xtwple7ngj7hhxzvl2e"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/BrokenLinkMetaDto"
              }
            ]
          },
          "data": {
            "description": "List of links found on the page and their HTTP status",
            "example": [
              {
                "link": "https://example.com/",
                "status": 200
              },
              {
                "link": "https://example.com/articles",
                "status": 200
              }
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "timestamp",
          "apiStatus",
          "apiCode",
          "message",
          "meta",
          "data"
        ]
      },
      "MarginDto": {
        "type": "object",
        "properties": {
          "top": {
            "type": "number",
            "description": "Top margin in mm",
            "example": 25.4
          },
          "bottom": {
            "type": "number",
            "description": "Bottom margin in mm",
            "example": 25.4
          },
          "right": {
            "type": "number",
            "description": "Right margin in mm",
            "example": 25.4
          },
          "left": {
            "type": "number",
            "description": "Left margin in mm",
            "example": 25.4
          }
        }
      },
      "Url2PdfDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "device": {
            "type": "string",
            "description": "Device type to emulate. Defaults to desktop.",
            "example": "desktop",
            "enum": ["desktop", "mobile"],
            "default": "desktop"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          },
          "format": {
            "type": "string",
            "description": "Paper format",
            "example": "a4",
            "enum": [
              "letter",
              "legal",
              "a0",
              "a1",
              "a2",
              "a3",
              "a4",
              "a5",
              "a6"
            ],
            "default": "a4"
          },
          "orientation": {
            "type": "string",
            "description": "Orientation",
            "example": "portrait",
            "enum": ["portrait", "landscape"],
            "default": "portrait"
          },
          "margin": {
            "description": "Margins in mm",
            "allOf": [
              {
                "$ref": "#/components/schemas/MarginDto"
              }
            ]
          },
          "scale": {
            "type": "number",
            "description": "Rendering scale between 0–2",
            "example": 1.5,
            "default": 1
          },
          "hideCookie": {
            "type": "boolean",
            "description": "Hide cookie popups",
            "example": false,
            "default": false
          },
          "skipCaptcha": {
            "type": "boolean",
            "description": "Try to skip captcha",
            "example": false,
            "default": false
          },
          "addTimestamp": {
            "type": "boolean",
            "description": "Add timestamp watermark",
            "example": false,
            "default": false
          }
        },
        "required": ["url"]
      },
      "Url2PdfMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The target URL",
            "example": "https://example.com"
          },
          "device": {
            "type": "string",
            "description": "Device type used",
            "example": "desktop"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country used, if any"
          },
          "format": {
            "type": "string",
            "description": "Paper format",
            "example": "letter"
          },
          "orientation": {
            "type": "string",
            "description": "Orientation",
            "example": "landscape"
          },
          "margin": {
            "description": "Margins in mm",
            "allOf": [
              {
                "$ref": "#/components/schemas/MarginDto"
              }
            ]
          },
          "scale": {
            "type": "number",
            "description": "Rendering scale",
            "example": 1.5
          },
          "test": {
            "description": "Test details",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "device", "format", "orientation", "scale", "test"]
      },
      "Url2PdfResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the request",
            "allOf": [
              {
                "$ref": "#/components/schemas/Url2PdfMetaDto"
              }
            ]
          },
          "data": {
            "type": "string",
            "description": "Generated PDF URL",
            "example": "https://api-assets.example.com/tests/pdf/o5jiqf08bmp93jsll7vb24vs.pdf"
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "OpenPortDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The URL to be checked",
            "example": "https://example.com"
          },
          "topPorts": {
            "type": "number",
            "description": "Scan only the top N ports (optional)",
            "example": 100,
            "enum": [50, 100, 500, 1000, 5000]
          },
          "portRanges": {
            "type": "string",
            "description": "Custom port ranges to scan, e.g., \"80,443,1000-1010\"",
            "example": "80,443,1000-1010"
          }
        },
        "required": ["url"]
      },
      "OpenPortMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The scanned URL",
            "example": "https://example.com"
          },
          "topPorts": {
            "type": "number",
            "description": "Top ports scanned (if any)",
            "example": 100,
            "enum": [50, 100, 500, 1000, 5000]
          },
          "portRanges": {
            "type": "string",
            "description": "Custom port ranges scanned (if any)",
            "example": "80,443,1000-1010"
          },
          "test": {
            "description": "Test details object",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "test"]
      },
      "OpenPortResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the request",
            "allOf": [
              {
                "$ref": "#/components/schemas/OpenPortMetaDto"
              }
            ]
          },
          "data": {
            "description": "List of open ports found",
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "TlsScanDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          }
        },
        "required": ["url"]
      },
      "TlsScanMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The target URL checked for TLS support",
            "example": "example.com"
          },
          "test": {
            "description": "Test metadata object",
            "example": {
              "id": "40zt4but04y07ccn4pov5fiolzrxbxdg"
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "test"]
      },
      "TlsProtocolsDto": {
        "type": "object",
        "properties": {
          "tls10": {
            "type": "boolean",
            "description": "Whether TLS 1.0 is supported",
            "example": false
          },
          "tls11": {
            "type": "boolean",
            "description": "Whether TLS 1.1 is supported",
            "example": false
          },
          "tls12": {
            "type": "boolean",
            "description": "Whether TLS 1.2 is supported",
            "example": true
          },
          "tls13": {
            "type": "boolean",
            "description": "Whether TLS 1.3 is supported",
            "example": true
          }
        },
        "required": ["tls10", "tls11", "tls12", "tls13"]
      },
      "TlsCertificateIssuerDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Issuer country",
            "example": "US"
          },
          "organization": {
            "type": "string",
            "description": "Issuer organization",
            "example": "Cloudflare, Inc."
          },
          "commonName": {
            "type": "string",
            "description": "Issuer common name",
            "example": "Cloudflare Inc ECC CA-3"
          }
        },
        "required": ["country", "organization", "commonName"]
      },
      "TlsCertificateDto": {
        "type": "object",
        "properties": {
          "commonName": {
            "type": "string",
            "description": "Common name (CN) on the certificate",
            "example": "sni.cloudflaressl.com"
          },
          "subjectAltName": {
            "type": "string",
            "description": "Subject Alternative Names (SAN)",
            "example": "DNS:*.example.com, DNS:sni.cloudflaressl.com, DNS:example.com"
          },
          "issuer": {
            "description": "Issuer details",
            "allOf": [
              {
                "$ref": "#/components/schemas/TlsCertificateIssuerDto"
              }
            ]
          },
          "expiry": {
            "type": "string",
            "description": "Certificate expiry date",
            "example": "Jun  6 23:59:59 2023 GMT"
          }
        },
        "required": ["commonName", "subjectAltName", "issuer", "expiry"]
      },
      "TlsScanDataDto": {
        "type": "object",
        "properties": {
          "protocols": {
            "description": "Protocols supported",
            "allOf": [
              {
                "$ref": "#/components/schemas/TlsProtocolsDto"
              }
            ]
          },
          "certificate": {
            "description": "Certificate details",
            "allOf": [
              {
                "$ref": "#/components/schemas/TlsCertificateDto"
              }
            ]
          }
        },
        "required": ["protocols", "certificate"]
      },
      "TlsScanResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the TLS scan request",
            "example": {
              "url": "example.com",
              "test": {
                "id": "40zt4but04y07ccn4pov5fiolzrxbxdg"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/TlsScanMetaDto"
              }
            ]
          },
          "data": {
            "description": "TLS scan result data",
            "example": {
              "protocols": {
                "tls10": false,
                "tls11": false,
                "tls12": true,
                "tls13": true
              },
              "certificate": {
                "commonName": "sni.cloudflaressl.com",
                "subjectAltName": "DNS:*.example.com, DNS:sni.cloudflaressl.com, DNS:example.com",
                "issuer": {
                  "country": "US",
                  "organization": "Cloudflare, Inc.",
                  "commonName": "Cloudflare Inc ECC CA-3"
                },
                "expiry": "Jun  6 23:59:59 2023 GMT"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/TlsScanDataDto"
              }
            ]
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "TtfbDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether to follow redirects when checking site status",
            "example": false,
            "default": false
          }
        },
        "required": ["url"]
      },
      "TtfbMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The tested URL",
            "example": "https://example.com"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Indicates if redirects were followed during the test",
            "example": true
          },
          "redirectedURL": {
            "type": "string",
            "description": "Final URL after redirection (if any)",
            "example": "https://example.com/"
          },
          "test": {
            "description": "Metadata about the test execution",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "redirectedURL", "test"]
      },
      "TtfbResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the TTFB test",
            "allOf": [
              {
                "$ref": "#/components/schemas/TtfbMetaDto"
              }
            ]
          },
          "data": {
            "type": "number",
            "description": "The measured Time to First Byte (TTFB) in milliseconds",
            "example": 245
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "LoadTimeDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether to follow redirects when checking site status",
            "example": false,
            "default": false
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          }
        },
        "required": ["url"]
      },
      "LoadTimeMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The tested URL",
            "example": "https://example.com"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country used for the test",
            "example": "us"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Indicates if redirects were followed during the test",
            "example": true
          },
          "redirectedURL": {
            "type": "string",
            "description": "Final URL after redirection (if any)",
            "example": "https://example.com/"
          },
          "test": {
            "description": "Metadata about the test execution",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "redirectedURL", "test"]
      },
      "LoadTimeDataDto": {
        "type": "object",
        "properties": {
          "dns": {
            "type": "number",
            "description": "Time spent in DNS lookup (ms)",
            "example": 10
          },
          "connect": {
            "type": "number",
            "description": "Time to establish TCP connection (ms)",
            "example": 12
          },
          "tls": {
            "type": "number",
            "description": "Time to complete TLS handshake (ms)",
            "example": 9
          },
          "send": {
            "type": "number",
            "description": "Time to send request (ms)",
            "example": 19
          },
          "wait": {
            "type": "number",
            "description": "Time waiting for response (ms)",
            "example": 86
          },
          "total": {
            "type": "number",
            "description": "Total load time (ms)",
            "example": 88
          }
        },
        "required": ["dns", "connect", "tls", "send", "wait", "total"]
      },
      "LoadTimeResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the load time test",
            "allOf": [
              {
                "$ref": "#/components/schemas/LoadTimeMetaDto"
              }
            ]
          },
          "data": {
            "description": "The measured page load time in milliseconds",
            "allOf": [
              {
                "$ref": "#/components/schemas/LoadTimeDataDto"
              }
            ]
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "HttpHeaderDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether to follow redirects when checking site status",
            "example": false,
            "default": false
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          }
        },
        "required": ["url"]
      },
      "HttpHeaderMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The tested URL",
            "example": "https://example.com"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country used for the request",
            "example": "us"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Indicates if redirects should be followed",
            "example": true
          },
          "redirectedURL": {
            "type": "string",
            "description": "Final URL after redirection (if any)",
            "example": "https://example.com/"
          },
          "test": {
            "description": "Metadata about the test execution",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "redirectedURL", "test"]
      },
      "HttpHeaderResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the HTTP header test",
            "allOf": [
              {
                "$ref": "#/components/schemas/HttpHeaderMetaDto"
              }
            ]
          },
          "data": {
            "description": "The headers returned by the requested URL",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "HttpProtocolDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether to follow redirects when checking site status",
            "example": false,
            "default": false
          }
        },
        "required": ["url"]
      },
      "HttpProtocolMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The tested URL",
            "example": "https://example.com"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Indicates if redirects should be followed",
            "example": true
          },
          "redirectedURL": {
            "type": "string",
            "description": "Final URL after redirection (if any)",
            "example": "https://example.com/"
          },
          "test": {
            "description": "Metadata about the test execution",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "test"]
      },
      "HttpProtocolDataDto": {
        "type": "object",
        "properties": {
          "http10": {
            "type": "boolean",
            "description": "Indicates if HTTP/1.0 is supported",
            "example": false
          },
          "http11": {
            "type": "boolean",
            "description": "Indicates if HTTP/1.1 is supported",
            "example": true
          },
          "http2": {
            "type": "boolean",
            "description": "Indicates if HTTP/2 is supported",
            "example": true
          },
          "http3": {
            "type": "boolean",
            "description": "Indicates if HTTP/3 is supported",
            "example": ["h3-29"]
          },
          "http3SupportedVersion": {
            "description": "Lists supported HTTP/3 protocol variants",
            "example": ["h3-29"],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "http10",
          "http11",
          "http2",
          "http3",
          "http3SupportedVersion"
        ]
      },
      "HttpProtocolResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the HTTP protocol test",
            "allOf": [
              {
                "$ref": "#/components/schemas/HttpProtocolMetaDto"
              }
            ]
          },
          "data": {
            "description": "Detected supported HTTP protocols for the tested URL",
            "allOf": [
              {
                "$ref": "#/components/schemas/HttpProtocolDataDto"
              }
            ]
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "MixedContentDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether to follow redirects when checking site status",
            "example": false,
            "default": false
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          }
        },
        "required": ["url"]
      },
      "MixedContentMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The tested URL",
            "example": "https://example.com"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Country used for proxy",
            "example": "United States"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Indicates if redirects should be followed",
            "example": true
          },
          "redirectedURL": {
            "type": "string",
            "description": "Final URL after redirection (if any)",
            "example": "https://example.com/"
          },
          "test": {
            "description": "Metadata about the test execution",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "test"]
      },
      "MixedContentResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "message": {
            "type": "string",
            "description": "Indicates whether mixed content found or not. It can either be \"Mixed content(s) found.\" or \"No mixed content found.\"",
            "example": "Mixed content(s) found."
          },
          "meta": {
            "description": "Metadata about the mixed content test",
            "allOf": [
              {
                "$ref": "#/components/schemas/MixedContentMetaDto"
              }
            ]
          },
          "data": {
            "description": "Contains either an array of all resources (when no mixed content) or an object with insecure/secure arrays (when mixed content found)",
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Simple array of all resources when no mixed content found",
                "example": [
                  "https://example.com/",
                  "https://example.com/style.css",
                  "https://example.com/script.js"
                ]
              },
              {
                "$ref": "#/components/schemas/MixedContentDataDto",
                "description": "Object with insecure and secure arrays when mixed content found"
              }
            ]
          }
        },
        "required": [
          "timestamp",
          "apiStatus",
          "apiCode",
          "message",
          "meta",
          "data"
        ]
      },
      "DnsSecDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          }
        },
        "required": ["url"]
      },
      "DnsSecMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The tested domain name",
            "example": "siterelic.com"
          },
          "test": {
            "description": "Metadata about the test execution",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "test"]
      },
      "DnsSecDataDto": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "description": "Indicates if DNSSEC is enabled for the domain",
            "example": true
          },
          "dnskey": {
            "description": "List of DNSKEY records if DNSSEC is enabled",
            "example": [
              "DNSKEY 256 3 13 oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8 KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA=="
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "rrsig": {
            "description": "List of RRSIG records if DNSSEC is enabled",
            "example": [
              "RRSIG DNSKEY 13 2 3600 20251124121323 20250924121323 2371 geekflare.com. LUeqKWfw4GcaqSaCbFT7ik6mTgFdWsRdVzn1hHGSwMGZ4HuwlVFB3e1K 9Os+4DnxyYNkfWkBHJcBfFN7e4snHg=="
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": ["isEnabled"]
      },
      "DnsSecResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the DNSSEC test",
            "allOf": [
              {
                "$ref": "#/components/schemas/DnsSecMetaDto"
              }
            ]
          },
          "data": {
            "description": "DNSSEC test result data",
            "allOf": [
              {
                "$ref": "#/components/schemas/DnsSecDataDto"
              }
            ]
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "MtrDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether to follow redirects when checking site status",
            "example": false,
            "default": false
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          }
        },
        "required": ["url"]
      },
      "MtrMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The tested URL or IP address",
            "example": "siterelic.com"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Country used for proxy",
            "example": "United States"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Indicates if redirects should be followed",
            "example": true
          },
          "redirectedURL": {
            "type": "string",
            "description": "Final URL after redirection (if any)",
            "example": "https://example.com/"
          },
          "test": {
            "description": "Metadata about the test execution",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "redirectedURL", "test"]
      },
      "MtrDataDto": {
        "type": "object",
        "properties": {
          "hop": {
            "type": "number",
            "description": "Hop number in the traceroute path",
            "example": 1
          },
          "host": {
            "type": "string",
            "description": "Host IP or domain name at this hop",
            "example": "240.192.18.19"
          },
          "asn": {
            "type": "string",
            "description": "Autonomous System Number (ASN) for the host",
            "example": "AS???"
          },
          "loss": {
            "type": "number",
            "description": "Packet loss percentage at this hop",
            "example": 0
          },
          "sent": {
            "type": "number",
            "description": "Number of packets sent to this hop",
            "example": 2
          },
          "last": {
            "type": "number",
            "description": "Last recorded round-trip time (RTT) in milliseconds",
            "example": 0.28
          },
          "avg": {
            "type": "number",
            "description": "Average RTT across packets",
            "example": 0.29
          },
          "best": {
            "type": "number",
            "description": "Best (lowest) RTT observed",
            "example": 0.28
          },
          "worst": {
            "type": "number",
            "description": "Worst (highest) RTT observed",
            "example": 0.3
          },
          "stdDev": {
            "type": "number",
            "description": "Standard deviation of RTT measurements",
            "example": 0.01
          }
        },
        "required": [
          "hop",
          "host",
          "asn",
          "loss",
          "sent",
          "last",
          "avg",
          "best",
          "worst",
          "stdDev"
        ]
      },
      "MtrResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the MTR test execution",
            "allOf": [
              {
                "$ref": "#/components/schemas/MtrMetaDto"
              }
            ]
          },
          "data": {
            "description": "Array of hop details observed in the MTR trace route",
            "example": [
              {
                "hop": 1,
                "host": "240.192.18.19",
                "asn": "AS???",
                "loss": 0,
                "sent": 2,
                "last": 0.28,
                "avg": 0.29,
                "best": 0.28,
                "worst": 0.3,
                "stdDev": 0.01
              },
              {
                "hop": 2,
                "host": "240.0.60.49",
                "asn": "AS???",
                "loss": 0,
                "sent": 2,
                "last": 0.28,
                "avg": 0.29,
                "best": 0.28,
                "worst": 0.29,
                "stdDev": 0.01
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MtrDataDto"
            }
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "PingDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          }
        },
        "required": ["url"]
      },
      "PingMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The tested URL or IP address",
            "example": "siterelic.com"
          },
          "test": {
            "description": "Metadata about the test execution",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "test"]
      },
      "PingDataDto": {
        "type": "object",
        "properties": {
          "requests": {
            "type": "number",
            "description": "Number of ping requests sent",
            "example": 4
          },
          "loss": {
            "type": "number",
            "description": "Packet loss percentage",
            "example": 0
          },
          "latency": {
            "type": "number",
            "description": "Average latency in milliseconds",
            "example": 32.5
          },
          "min": {
            "type": "number",
            "description": "Minimum round-trip time (RTT) in milliseconds",
            "example": 30
          },
          "max": {
            "type": "number",
            "description": "Maximum round-trip time (RTT) in milliseconds",
            "example": 35
          },
          "avg": {
            "type": "number",
            "description": "Average round-trip time (RTT) in milliseconds",
            "example": 32.5
          },
          "stdDev": {
            "type": "number",
            "description": "Standard deviation of RTT in milliseconds",
            "example": 1.5
          },
          "ip": {
            "type": "string",
            "description": "Resolved IP address of the tested domain",
            "example": "142.250.183.206"
          }
        },
        "required": [
          "requests",
          "loss",
          "latency",
          "min",
          "max",
          "avg",
          "stdDev",
          "ip"
        ]
      },
      "PingResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the Ping test execution",
            "allOf": [
              {
                "$ref": "#/components/schemas/PingMetaDto"
              }
            ]
          },
          "data": {
            "description": "Ping result statistics",
            "example": {
              "requests": 4,
              "loss": 0,
              "latency": 32.5,
              "min": 30,
              "max": 35,
              "avg": 32.5,
              "stdDev": 1.5,
              "ip": "142.250.183.206"
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/PingDataDto"
              }
            ]
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "LighthouseDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "device": {
            "type": "string",
            "description": "Device type to emulate. Defaults to desktop.",
            "example": "desktop",
            "enum": ["desktop", "mobile"],
            "default": "desktop"
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether to follow redirects when checking site status",
            "example": false,
            "default": false
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country code to route the request",
            "example": "us"
          },
          "parameters": {
            "description": "Extra Lighthouse CLI parameters",
            "example": ["--only-categories=seo"],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": ["url"]
      },
      "LighthouseMetaDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Target URL",
            "example": "https://example.com"
          },
          "device": {
            "type": "string",
            "description": "Device type used",
            "enum": ["desktop", "mobile"]
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether redirects were followed"
          },
          "redirectedURL": {
            "type": "string",
            "description": "Final URL after redirection (if any)",
            "example": "https://example.com/"
          },
          "proxyCountry": {
            "type": "string",
            "description": "Proxy country used, if any"
          },
          "test": {
            "description": "Test details object",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestMetaDto"
              }
            ]
          }
        },
        "required": ["url", "device", "followRedirect", "redirectedURL", "test"]
      },
      "LighthouseResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "meta": {
            "description": "Metadata about the request",
            "allOf": [
              {
                "$ref": "#/components/schemas/LighthouseMetaDto"
              }
            ]
          },
          "data": {
            "type": "string",
            "description": "URL to the Lighthouse report",
            "example": "https://example.com/report.html"
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
      },
      "HealthResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "message": {
            "type": "string",
            "description": "Metadata about the request"
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "message"]
      },
      "ServiceStatus": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "r2",
            "description": "Name of the service"
          },
          "status": {
            "type": "string",
            "example": "healthy",
            "description": "Health status of the service (e.g., healthy, degraded, down)"
          },
          "message": {
            "type": "string",
            "example": "All systems operational",
            "description": "Additional info or error message if any"
          }
        },
        "required": ["name", "status", "message"]
      },
      "ServiceHealthResponseDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Timestamp of the request in milliseconds",
            "example": 1763372588297
          },
          "apiStatus": {
            "type": "string",
            "description": "API status message",
            "example": "success",
            "enum": ["success", "failure"]
          },
          "apiCode": {
            "type": "number",
            "description": "API status code",
            "example": 200
          },
          "message": {
            "type": "string",
            "description": "Top-level message summarizing the overall health check",
            "example": "Service health check completed"
          },
          "services": {
            "description": "Status of individual internal services",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceStatus"
            }
          }
        },
        "required": ["timestamp", "apiStatus", "apiCode", "message", "services"]
      }
    }
  }
}
