auditmysite 1.0.0

Resource-efficient WCAG 2.1 Accessibility Checker in Rust
Documentation
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/casoon/auditmysite/docs/json-batch-report.schema.json",
  "title": "auditmysite unified report (batch)",
  "type": "object",
  "required": ["schema_version", "report_type", "metadata", "summary", "pages"],
  "additionalProperties": false,
  "properties": {
    "schema_version": { "type": "string", "const": "2.0" },
    "report_type": { "type": "string", "const": "batch" },
    "tool_version": { "type": "string" },
    "metadata": { "$ref": "#/$defs/metadata" },
    "summary": { "$ref": "#/$defs/summary" },
    "sample": { "$ref": "#/$defs/sample" },
    "pages": {
      "type": "array",
      "items": { "$ref": "#/$defs/pageEntry" }
    },
    "url_matrix": { "type": "array" },
    "internal_comparison": { "$ref": "#/$defs/internalComparison" },
    "crawl_diagnostics": { "type": ["object", "null"] },
    "errors": { "type": "array" },
    "verdict": { "type": "string", "enum": ["pass", "warn", "fail"] },
    "verdict_reasons": { "type": "array", "items": { "type": "string" } }
  },
  "$defs": {
    "sample": {
      "type": "object",
      "required": ["source", "total_discovered", "audited", "selection", "is_sample"],
      "additionalProperties": false,
      "properties": {
        "source": { "type": "string", "enum": ["sitemap", "crawl", "url_file"] },
        "total_discovered": { "type": "integer", "minimum": 0 },
        "audited": { "type": "integer", "minimum": 0 },
        "sample_limit": { "type": "integer", "minimum": 0 },
        "selection": { "type": "string", "enum": ["first_n", "all"] },
        "is_sample": { "type": "boolean" }
      }
    },
    "metadata": {
      "type": "object",
      "required": ["tool", "timestamp", "wcag_level", "execution_time_ms"],
      "additionalProperties": false,
      "properties": {
        "tool": { "type": "string" },
        "timestamp": { "type": "string", "format": "date-time" },
        "wcag_level": { "type": "string" },
        "execution_time_ms": { "type": "integer", "minimum": 0 }
      }
    },
    "summary": {
      "type": "object",
      "required": [
        "url_count",
        "accessibility_score",
        "overall_score",
        "grade",
        "certificate",
        "risk_level",
        "violation_count",
        "severity_counts",
        "severity_counts_scope",
        "passed_url_count",
        "failed_url_count",
        "wcag_coverage",
        "accessibility_score_breakdown",
        "management_risks",
        "top_actions"
      ],
      "additionalProperties": false,
      "properties": {
        "url_count": { "type": "integer", "minimum": 0 },
        "accessibility_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "overall_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "grade": { "type": "string" },
        "certificate": { "type": "string" },
        "risk_level": { "type": "string", "enum": ["low", "medium", "high", "critical"] },
        "violation_count": { "type": "integer", "minimum": 0 },
        "severity_counts": { "$ref": "#/$defs/severityCounts" },
        "severity_counts_scope": { "type": "string", "const": "wcag_only" },
        "occurrence_counts": { "$ref": "#/$defs/severityCounts" },
        "passed_url_count": { "type": "integer", "minimum": 0 },
        "failed_url_count": { "type": "integer", "minimum": 0 },
        "violated_rule_count": { "type": "integer", "minimum": 0 },
        "top_recurring_rules": { "type": "array" },
        "performance_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "seo_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "security_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "mobile_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "performance_throttled_avg_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "wcag_coverage": { "$ref": "#/$defs/wcagCoverageSummary" },
        "accessibility_score_breakdown": {
          "type": "array",
          "items": { "$ref": "#/$defs/accessibilityScoreComponent" }
        },
        "management_risks": {
          "type": "array",
          "items": { "$ref": "#/$defs/managementRisk" }
        },
        "top_actions": {
          "type": "array",
          "items": { "$ref": "#/$defs/decisionAction" }
        },
        "commerce": { "type": ["object", "null"] }
      }
    },
    "pageEntry": {
      "type": "object",
      "required": [
        "url",
        "accessibility_score",
        "overall_score",
        "grade",
        "certificate",
        "violation_count",
        "severity_counts",
        "severity_counts_scope",
        "nodes_analyzed",
        "duration_ms",
        "module_scores",
        "risk",
        "principle_coverage",
        "findings"
      ],
      "additionalProperties": true,
      "properties": {
        "url": { "type": "string" },
        "accessibility_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "overall_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "grade": { "type": "string" },
        "certificate": { "type": "string" },
        "violation_count": { "type": "integer", "minimum": 0 },
        "severity_counts": { "$ref": "#/$defs/severityCounts" },
        "severity_counts_scope": { "type": "string", "const": "wcag_only" },
        "nodes_analyzed": { "type": "integer", "minimum": 0 },
        "duration_ms": { "type": "integer", "minimum": 0 },
        "module_scores": {
          "type": "array",
          "items": { "$ref": "#/$defs/moduleScore" }
        },
        "risk": { "$ref": "#/$defs/riskAssessment" },
        "principle_coverage": { "$ref": "#/$defs/principleCoverage" },
        "findings": { "type": "array" },
        "audit_flags": { "type": "array" }
      }
    },
    "principleCoverage": {
      "type": "object",
      "required": ["perceivable", "operable", "understandable", "robust"],
      "additionalProperties": false,
      "properties": {
        "perceivable": { "$ref": "#/$defs/coverageRatio" },
        "operable": { "$ref": "#/$defs/coverageRatio" },
        "understandable": { "$ref": "#/$defs/coverageRatio" },
        "robust": { "$ref": "#/$defs/coverageRatio" }
      }
    },
    "coverageRatio": {
      "type": "object",
      "required": ["passed", "total", "ratio"],
      "additionalProperties": false,
      "properties": {
        "passed": { "type": "integer", "minimum": 0 },
        "total": { "type": "integer", "minimum": 0 },
        "ratio": { "type": "number", "minimum": 0, "maximum": 1 }
      }
    },
    "severityCounts": {
      "type": "object",
      "required": ["critical", "high", "medium", "low", "total"],
      "additionalProperties": false,
      "properties": {
        "critical": { "type": "integer", "minimum": 0 },
        "high": { "type": "integer", "minimum": 0 },
        "medium": { "type": "integer", "minimum": 0 },
        "low": { "type": "integer", "minimum": 0 },
        "total": { "type": "integer", "minimum": 0 }
      }
    },
    "moduleScore": {
      "type": "object",
      "required": ["name", "score", "grade", "weight_pct", "contributes_to_overall", "measurement_type"],
      "additionalProperties": false,
      "properties": {
        "name": { "type": "string" },
        "score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "grade": { "type": "string" },
        "weight_pct": { "type": "integer", "minimum": 0, "maximum": 100 },
        "contributes_to_overall": { "type": "boolean" },
        "measurement_type": { "type": "string", "enum": ["measured", "heuristic"] }
      }
    },
    "riskAssessment": {
      "type": "object",
      "required": ["level", "score", "threshold", "driven_by", "critical_issues", "high_issues", "legal_flags", "blocking_issues", "interactive_critical_issues", "interactive_high_issues", "summary"],
      "additionalProperties": false,
      "properties": {
        "level": { "type": "string", "enum": ["low", "medium", "high", "critical"] },
        "score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "threshold": { "type": "integer", "minimum": 0 },
        "driven_by": { "type": "string" },
        "critical_issues": { "type": "integer", "minimum": 0 },
        "high_issues": { "type": "integer", "minimum": 0 },
        "legal_flags": { "type": "integer", "minimum": 0 },
        "blocking_issues": { "type": "integer", "minimum": 0 },
        "interactive_critical_issues": { "type": "integer", "minimum": 0 },
        "interactive_high_issues": { "type": "integer", "minimum": 0 },
        "summary": { "type": "string" }
      }
    },
    "wcagCoverageSummary": {
      "type": "object",
      "required": ["level", "automated_criteria", "manual_review_criteria", "total_wcag_aa_criteria", "note"],
      "additionalProperties": false,
      "properties": {
        "level": { "type": "string" },
        "automated_criteria": { "type": "integer", "minimum": 0 },
        "manual_review_criteria": { "type": "integer", "minimum": 0 },
        "total_wcag_aa_criteria": { "type": "integer", "minimum": 0 },
        "note": { "type": "string" }
      }
    },
    "accessibilityScoreComponent": {
      "type": "object",
      "required": ["area", "score", "weight_pct", "estimated_lost_points", "main_driver"],
      "additionalProperties": false,
      "properties": {
        "area": { "type": "string" },
        "score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "weight_pct": { "type": "integer", "minimum": 0, "maximum": 100 },
        "estimated_lost_points": { "type": "integer", "minimum": 0 },
        "main_driver": { "type": "string" }
      }
    },
    "managementRisk": {
      "type": "object",
      "required": ["dimension", "level", "rationale"],
      "additionalProperties": false,
      "properties": {
        "dimension": { "type": "string" },
        "level": { "type": "string" },
        "rationale": { "type": "string" }
      }
    },
    "decisionAction": {
      "type": "object",
      "required": ["title", "risk", "priority", "complexity", "occurrence_count", "root_cause", "expected_impact"],
      "additionalProperties": false,
      "properties": {
        "title": { "type": "string" },
        "risk": { "type": "string" },
        "priority": { "type": "string" },
        "complexity": { "type": "string" },
        "occurrence_count": { "type": "integer", "minimum": 0 },
        "root_cause": { "type": "string" },
        "expected_impact": { "type": "string" }
      }
    },
    "internalComparison": {
      "type": "object",
      "required": ["module_extremes", "outlier_urls", "root_causes"],
      "additionalProperties": false,
      "properties": {
        "module_extremes": { "type": "array", "items": { "$ref": "#/$defs/moduleExtreme" } },
        "outlier_urls": { "type": "array", "items": { "$ref": "#/$defs/urlOutlier" } },
        "root_causes": { "type": "array", "items": { "$ref": "#/$defs/rootCauseSummary" } }
      }
    },
    "moduleExtreme": {
      "type": "object",
      "required": ["module", "best_url", "best_score", "worst_url", "worst_score"],
      "additionalProperties": false,
      "properties": {
        "module": { "type": "string" },
        "best_url": { "type": "string" },
        "best_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "worst_url": { "type": "string" },
        "worst_score": { "type": "integer", "minimum": 0, "maximum": 100 }
      }
    },
    "urlOutlier": {
      "type": "object",
      "required": ["url", "accessibility_score", "batch_average", "delta_points", "reason"],
      "additionalProperties": false,
      "properties": {
        "url": { "type": "string" },
        "accessibility_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "batch_average": { "type": "integer", "minimum": 0, "maximum": 100 },
        "delta_points": { "type": "integer" },
        "reason": { "type": "string" }
      }
    },
    "rootCauseSummary": {
      "type": "object",
      "required": ["title", "occurrence_count", "affected_urls", "classification"],
      "additionalProperties": false,
      "properties": {
        "title": { "type": "string" },
        "occurrence_count": { "type": "integer", "minimum": 0 },
        "affected_urls": { "type": "integer", "minimum": 0 },
        "classification": { "type": "string" }
      }
    }
  }
}