{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/auditae-app/json-schema/auditae-app-crawl-check-schema.json",
  "title": "CrawlCheck",
  "description": "One of the 174 Site Audit checks. In a crawl's checks list only id, severity, title, n and of are sent.",
  "x-generated": "2026-11-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/auditae-app-openapi.json#/components/schemas/CrawlCheck",
  "type": "object",
  "required": [
    "id",
    "severity",
    "title"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Stable check id (never renamed)."
    },
    "title": {
      "type": "string"
    },
    "severity": {
      "type": "string",
      "enum": [
        "error",
        "warning",
        "notice"
      ]
    },
    "themes": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "crawlability",
          "https",
          "international",
          "core_web_vitals",
          "performance",
          "internal_linking",
          "markup",
          "ai_search",
          "on_page"
        ]
      },
      "description": "First = primary theme."
    },
    "scope": {
      "type": "string",
      "enum": [
        "page",
        "cross",
        "site",
        "resource",
        "cwv"
      ],
      "description": "page: per page · cross: across pages · site: once per run · resource: links, images, scripts · cwv: Core Web Vitals pass."
    },
    "rule": {
      "type": "string",
      "description": "The exact rule, with thresholds."
    },
    "why": {
      "type": "string"
    },
    "fix": {
      "type": "string"
    },
    "fix_tools": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "MCP tools that act on it."
    },
    "semrush_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "The Semrush Site Audit issue ids it maps to."
    },
    "status": {
      "type": "string",
      "enum": [
        "fail",
        "pass",
        "not_run"
      ]
    },
    "n": {
      "type": "integer",
      "description": "Items failing (0 when it passed)."
    },
    "of": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Items checked (pages, links, images …); null while provisional."
    },
    "samples": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 5,
      "description": "Up to 5 examples, \"url\" or \"url → detail\"."
    },
    "reason": {
      "type": "string",
      "enum": [
        "verified_bots",
        "capped",
        "no_sitemap",
        "sitemap_truncated",
        "sitemap_unreadable",
        "scoped",
        "no_probe",
        "probe_failed",
        "no_resources",
        "unknown_sizes",
        "cwv_pending",
        "excluded",
        "image_format_unverified"
      ],
      "description": "not_run only: why it wasn't judged."
    }
  }
}