{
  "openapi": "3.1.0",
  "info": {
    "title": "GEO.new Agent API",
    "version": "1.0.0",
    "description": "Public audit API. Creating an audit returns a session token; send it back as `Authorization: Bearer` to read the report. Browsers may use the `geo_session` cookie instead. Requests and audit admissions have separate shared limits."
  },
  "servers": [
    {
      "url": "https://geo.new"
    }
  ],
  "paths": {
    "/api/v1/session": {
      "post": {
        "summary": "Get a session token before a retry-sensitive creation",
        "responses": {
          "200": {
            "description": "Returns `session` to machine callers; browsers receive only the Set-Cookie and the expiry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Session"
                }
              }
            }
          },
          "400": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "406": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "413": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "415": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "503": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/audits": {
      "post": {
        "security": [
          {
            "bearer": []
          },
          {}
        ],
        "summary": "Create or reuse an audit",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128
            },
            "description": "Reuse with exactly the same body and session for retries. Retained for 24 hours."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAudit"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Existing terminal report",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Admission"
                }
              }
            }
          },
          "202": {
            "description": "Audit admitted or attached; follow returned URLs and Retry-After",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Admission"
                }
              }
            }
          },
          "400": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "406": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "413": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "415": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "503": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/audits/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "security": [
          {
            "bearer": []
          },
          {
            "session": []
          }
        ],
        "summary": "Read a private JSON or Markdown snapshot",
        "responses": {
          "200": {
            "description": "Saved snapshot; may be in progress. GET never starts work.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditSnapshot"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "406": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "413": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "415": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "503": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/audits/{id}/report.md": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "security": [
          {
            "bearer": []
          },
          {
            "session": []
          }
        ],
        "summary": "Read a private Markdown report",
        "responses": {
          "200": {
            "headers": {
              "X-Audit-Revision": {
                "description": "Revision serialized in this response.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-Audit-Status": {
                "description": "Audit state serialized in this response.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "queued",
                    "fetching",
                    "analyzing",
                    "writing",
                    "complete",
                    "partial",
                    "failed"
                  ]
                }
              }
            },
            "description": "Deterministic Markdown projection of the authorized snapshot.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "202": {
            "headers": {
              "X-Audit-Revision": {
                "description": "Revision serialized in this response.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-Audit-Status": {
                "description": "Audit state serialized in this response.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "queued",
                    "fetching",
                    "analyzing",
                    "writing",
                    "complete",
                    "partial",
                    "failed"
                  ]
                }
              }
            },
            "description": "Report still running; follow Retry-After. Body contains current findings.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "406": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "409": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "413": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "415": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "503": {
            "description": "Structured error. Follow Retry-After for retryable failures.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/ApiError"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "The `session` token from a create response."
      },
      "session": {
        "type": "apiKey",
        "in": "cookie",
        "name": "geo_session"
      }
    },
    "schemas": {
      "CreateAudit": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096
          },
          "fresh": {
            "type": "boolean"
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      },
      "AuditSnapshot": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "report_schema_version": {
            "type": "string",
            "const": "1"
          },
          "audit_id": {
            "type": "string"
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "previous_audit_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": "string",
            "maxLength": 4096
          },
          "final_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 4096
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "fetching",
              "analyzing",
              "writing",
              "complete",
              "partial",
              "failed"
            ]
          },
          "stage": {
            "type": "string",
            "enum": [
              "waiting",
              "robots",
              "fetch_html",
              "rules",
              "sitemap",
              "ai",
              "recovering",
              "done"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
          },
          "demo": {
            "type": "boolean"
          },
          "versions": {
            "type": "object",
            "properties": {
              "rules": {
                "type": "string"
              },
              "diagnostics": {
                "type": "string"
              },
              "extraction": {
                "type": "string"
              },
              "agent": {
                "type": "string"
              },
              "renderer": {
                "type": "string"
              }
            },
            "required": [
              "rules",
              "diagnostics",
              "extraction",
              "agent",
              "renderer"
            ],
            "additionalProperties": false
          },
          "sections": {
            "type": "object",
            "properties": {
              "connection": {
                "type": "object",
                "properties": {
                  "state": {
                    "type": "string",
                    "enum": [
                      "waiting",
                      "running",
                      "ready",
                      "partial",
                      "unavailable",
                      "not_applicable"
                    ]
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "started_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "finished_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "reason": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 300
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "state",
                  "revision",
                  "started_at",
                  "finished_at",
                  "reason"
                ],
                "additionalProperties": false
              },
              "basic_checks": {
                "type": "object",
                "properties": {
                  "state": {
                    "type": "string",
                    "enum": [
                      "waiting",
                      "running",
                      "ready",
                      "partial",
                      "unavailable",
                      "not_applicable"
                    ]
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "started_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "finished_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "reason": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 300
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "state",
                  "revision",
                  "started_at",
                  "finished_at",
                  "reason"
                ],
                "additionalProperties": false
              },
              "screenshot": {
                "type": "object",
                "properties": {
                  "state": {
                    "type": "string",
                    "enum": [
                      "waiting",
                      "running",
                      "ready",
                      "partial",
                      "unavailable",
                      "not_applicable"
                    ]
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "started_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "finished_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "reason": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 300
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "state",
                  "revision",
                  "started_at",
                  "finished_at",
                  "reason"
                ],
                "additionalProperties": false
              },
              "loading": {
                "type": "object",
                "properties": {
                  "state": {
                    "type": "string",
                    "enum": [
                      "waiting",
                      "running",
                      "ready",
                      "partial",
                      "unavailable",
                      "not_applicable"
                    ]
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "started_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "finished_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "reason": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 300
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "state",
                  "revision",
                  "started_at",
                  "finished_at",
                  "reason"
                ],
                "additionalProperties": false
              },
              "seo_diagnostics": {
                "type": "object",
                "properties": {
                  "state": {
                    "type": "string",
                    "enum": [
                      "waiting",
                      "running",
                      "ready",
                      "partial",
                      "unavailable",
                      "not_applicable"
                    ]
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "started_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "finished_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "reason": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 300
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "state",
                  "revision",
                  "started_at",
                  "finished_at",
                  "reason"
                ],
                "additionalProperties": false
              },
              "agent_compatibility": {
                "type": "object",
                "properties": {
                  "state": {
                    "type": "string",
                    "enum": [
                      "waiting",
                      "running",
                      "ready",
                      "partial",
                      "unavailable",
                      "not_applicable"
                    ]
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "started_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "finished_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "reason": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 300
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "state",
                  "revision",
                  "started_at",
                  "finished_at",
                  "reason"
                ],
                "additionalProperties": false
              },
              "ai": {
                "type": "object",
                "properties": {
                  "state": {
                    "type": "string",
                    "enum": [
                      "waiting",
                      "running",
                      "ready",
                      "partial",
                      "unavailable",
                      "not_applicable"
                    ]
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "started_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "finished_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "reason": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 300
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "state",
                  "revision",
                  "started_at",
                  "finished_at",
                  "reason"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "connection",
              "basic_checks",
              "screenshot",
              "loading",
              "seo_diagnostics",
              "agent_compatibility",
              "ai"
            ],
            "additionalProperties": false
          },
          "usable_html": {
            "type": "boolean"
          },
          "scores": {
            "type": "object",
            "properties": {
              "geo": {
                "type": "object",
                "properties": {
                  "value": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "coverage": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "measured": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "applicable": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "passed": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "warnings": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "failed": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "unknown": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "not_applicable": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "value",
                  "coverage",
                  "measured",
                  "applicable",
                  "passed",
                  "warnings",
                  "failed",
                  "unknown",
                  "not_applicable"
                ],
                "additionalProperties": false
              },
              "seo": {
                "type": "object",
                "properties": {
                  "value": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "coverage": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "measured": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "applicable": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "passed": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "warnings": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "failed": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "unknown": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "not_applicable": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "value",
                  "coverage",
                  "measured",
                  "applicable",
                  "passed",
                  "warnings",
                  "failed",
                  "unknown",
                  "not_applicable"
                ],
                "additionalProperties": false
              },
              "catalog": {
                "type": "object",
                "properties": {
                  "version": {
                    "type": "string",
                    "const": "catalog-v2"
                  },
                  "value": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "grade": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 20
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "coverage": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "categories": {
                    "maxItems": 6,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "maxLength": 40
                        },
                        "title": {
                          "type": "string",
                          "maxLength": 80
                        },
                        "weight": {
                          "type": "number",
                          "minimum": 0
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 100
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "coverage": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1
                        },
                        "passed": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "warnings": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "failed": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "unknown": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "not_applicable": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "subcategories": {
                          "maxItems": 20,
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "maxLength": 40
                              },
                              "title": {
                                "type": "string",
                                "maxLength": 80
                              },
                              "weight": {
                                "type": "number",
                                "minimum": 0
                              },
                              "value": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 100
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "coverage": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 1
                              },
                              "passed": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "warnings": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "failed": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "unknown": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "not_applicable": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              }
                            },
                            "required": [
                              "id",
                              "title",
                              "weight",
                              "value",
                              "coverage",
                              "passed",
                              "warnings",
                              "failed",
                              "unknown",
                              "not_applicable"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "weight",
                        "value",
                        "coverage",
                        "passed",
                        "warnings",
                        "failed",
                        "unknown",
                        "not_applicable",
                        "subcategories"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "platforms": {
                    "maxItems": 6,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "maxLength": 40
                        },
                        "title": {
                          "type": "string",
                          "maxLength": 80
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 100
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "status": {
                          "anyOf": [
                            {
                              "type": "string",
                              "enum": [
                                "strong",
                                "moderate",
                                "weak"
                              ]
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "rule_ids": {
                          "maxItems": 40,
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "value",
                        "status",
                        "rule_ids"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "pillars": {
                    "maxItems": 4,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "maxLength": 40
                        },
                        "title": {
                          "type": "string",
                          "maxLength": 80
                        },
                        "points": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 25
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "signal_rule_ids": {
                          "maxItems": 40,
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "points",
                        "signal_rule_ids"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "blockers": {
                    "maxItems": 10,
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "version",
                  "value",
                  "grade",
                  "coverage",
                  "categories",
                  "platforms",
                  "pillars",
                  "blockers"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "geo",
              "seo"
            ],
            "additionalProperties": false
          },
          "findings": {
            "maxItems": 260,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "maxLength": 120
                },
                "rule_id": {
                  "type": "string",
                  "pattern": "^(?:[GSE]\\d{2}|[A-Z0-9]{2,5}-\\d{2})$"
                },
                "category": {
                  "type": "string",
                  "enum": [
                    "geo",
                    "seo",
                    "diagnostic"
                  ]
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "pass",
                    "warn",
                    "fail",
                    "unknown",
                    "not_applicable"
                  ]
                },
                "severity": {
                  "type": "string",
                  "enum": [
                    "critical",
                    "warning",
                    "info"
                  ]
                },
                "title": {
                  "type": "string",
                  "maxLength": 200
                },
                "explanation": {
                  "type": "string",
                  "maxLength": 1500
                },
                "recommended_fix": {
                  "type": "string",
                  "maxLength": 1500
                },
                "root_cause": {
                  "type": "string",
                  "maxLength": 100
                },
                "impact_rank": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 10
                },
                "weight": {
                  "anyOf": [
                    {
                      "type": "number",
                      "const": 0
                    },
                    {
                      "type": "number",
                      "const": 1
                    }
                  ]
                },
                "confidence": {
                  "type": "string",
                  "enum": [
                    "high",
                    "medium",
                    "low"
                  ]
                },
                "effort": {
                  "type": "string",
                  "enum": [
                    "small",
                    "medium",
                    "large"
                  ]
                },
                "evidence_ids": {
                  "maxItems": 10,
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "source": {
                  "type": "string",
                  "const": "rule"
                },
                "reason": {
                  "type": "string",
                  "maxLength": 100
                }
              },
              "required": [
                "id",
                "rule_id",
                "category",
                "status",
                "severity",
                "title",
                "explanation",
                "recommended_fix",
                "root_cause",
                "impact_rank",
                "weight",
                "confidence",
                "effort",
                "evidence_ids",
                "source"
              ],
              "additionalProperties": false
            }
          },
          "evidence": {
            "maxItems": 320,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "maxLength": 80
                },
                "url": {
                  "type": "string",
                  "maxLength": 4096
                },
                "location": {
                  "type": "string",
                  "maxLength": 200
                },
                "excerpt": {
                  "type": "string",
                  "maxLength": 2048
                },
                "observed_at": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                }
              },
              "required": [
                "id",
                "url",
                "location",
                "excerpt",
                "observed_at"
              ],
              "additionalProperties": false
            }
          },
          "agent_observations": {
            "maxItems": 13,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "pattern": "^A\\d{2}$"
                },
                "title": {
                  "type": "string",
                  "maxLength": 150
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "detected",
                    "not_detected",
                    "invalid",
                    "unknown",
                    "not_applicable"
                  ]
                },
                "detail": {
                  "type": "string",
                  "maxLength": 1500
                },
                "evidence_ids": {
                  "maxItems": 10,
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "profile": {
                  "type": "string",
                  "maxLength": 100
                }
              },
              "required": [
                "id",
                "title",
                "status",
                "detail",
                "evidence_ids",
                "profile"
              ],
              "additionalProperties": false
            }
          },
          "inventory": {
            "type": "object",
            "properties": {
              "words": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "images": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "images_with_alt": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "links_total": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "links_internal": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "links_external": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "h1_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "schema_types": {
                "maxItems": 20,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 100
                }
              },
              "structured_format": {
                "type": "string",
                "enum": [
                  "json-ld",
                  "microdata",
                  "none"
                ]
              },
              "same_as": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "profiles": {
                "maxItems": 10,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 20
                }
              },
              "headings": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "level": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 6
                    },
                    "text": {
                      "type": "string",
                      "maxLength": 300
                    }
                  },
                  "required": [
                    "level",
                    "text"
                  ],
                  "additionalProperties": false
                }
              },
              "social": {
                "maxItems": 20,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "type": "string",
                      "maxLength": 60
                    },
                    "content": {
                      "type": "string",
                      "maxLength": 500
                    }
                  },
                  "required": [
                    "key",
                    "content"
                  ],
                  "additionalProperties": false
                }
              },
              "dom_elements": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "words",
              "images",
              "images_with_alt",
              "links_total",
              "links_internal",
              "links_external",
              "h1_count",
              "schema_types",
              "structured_format",
              "same_as",
              "profiles",
              "headings",
              "social",
              "dom_elements"
            ],
            "additionalProperties": false
          },
          "citability": {
            "type": "object",
            "properties": {
              "average": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "english": {
                "type": "boolean"
              },
              "scored": {
                "type": "integer",
                "minimum": 0,
                "maximum": 40
              },
              "blocks": {
                "maxItems": 6,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "maxLength": 20
                    },
                    "heading": {
                      "type": "string",
                      "maxLength": 300
                    },
                    "text": {
                      "type": "string",
                      "maxLength": 600
                    },
                    "word_count": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 5000
                    },
                    "dimensions": {
                      "type": "object",
                      "properties": {
                        "answer": {
                          "anyOf": [
                            {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "self_containment": {
                          "anyOf": [
                            {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "structure": {
                          "anyOf": [
                            {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "statistics": {
                          "anyOf": [
                            {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "uniqueness": {
                          "anyOf": [
                            {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "answer",
                        "self_containment",
                        "structure",
                        "statistics",
                        "uniqueness"
                      ],
                      "additionalProperties": false
                    },
                    "total": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    }
                  },
                  "required": [
                    "id",
                    "heading",
                    "text",
                    "word_count",
                    "dimensions",
                    "total"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "average",
              "english",
              "scored",
              "blocks"
            ],
            "additionalProperties": false
          },
          "crawlers": {
            "maxItems": 30,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "agent": {
                  "type": "string",
                  "maxLength": 60
                },
                "purpose": {
                  "type": "string",
                  "enum": [
                    "search",
                    "ai_search",
                    "user",
                    "grounding",
                    "training"
                  ]
                },
                "policy": {
                  "type": "string",
                  "enum": [
                    "allowed",
                    "disallowed",
                    "unknown"
                  ]
                },
                "rule": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 300
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "agent",
                "purpose",
                "policy",
                "rule"
              ],
              "additionalProperties": false
            }
          },
          "connection": {
            "type": "object",
            "properties": {
              "status": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "ttfb_ms": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "html_bytes": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "https": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "redirects": {
                "maxItems": 6,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string"
                    },
                    "status": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "url",
                    "status"
                  ],
                  "additionalProperties": false
                }
              },
              "observed_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "source": {
                "type": "string",
                "const": "direct-fetch"
              }
            },
            "required": [
              "status",
              "ttfb_ms",
              "html_bytes",
              "https",
              "redirects",
              "observed_at",
              "source"
            ],
            "additionalProperties": false
          },
          "screenshot": {
            "type": "object",
            "properties": {
              "state": {
                "type": "string",
                "enum": [
                  "pending",
                  "ready",
                  "unavailable"
                ]
              },
              "width": {
                "type": "number",
                "const": 1280
              },
              "height": {
                "type": "number",
                "const": 800
              },
              "captured_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "mime": {
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "image/jpeg",
                      "image/webp",
                      "image/svg+xml"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "profile": {
                "type": "string"
              },
              "reason": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "state",
              "width",
              "height",
              "captured_at",
              "mime",
              "profile",
              "reason"
            ],
            "additionalProperties": false
          },
          "loading": {
            "type": "object",
            "properties": {
              "source": {
                "type": "string",
                "const": "browser-lab"
              },
              "profile": {
                "type": "string"
              },
              "ttfb_ms": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "dcl_ms": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "load_ms": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "fcp_ms": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lcp_ms": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "observed_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "source",
              "profile",
              "ttfb_ms",
              "dcl_ms",
              "load_ms",
              "fcp_ms",
              "lcp_ms",
              "observed_at"
            ],
            "additionalProperties": false
          },
          "ai": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "not_started",
                  "pending",
                  "complete",
                  "unavailable",
                  "disabled"
                ]
              },
              "synthesis": {
                "type": "object",
                "properties": {
                  "version": {
                    "type": "string",
                    "const": "report-synthesis-v5"
                  },
                  "key_takeaway": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 240
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "executive_summary": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 2500
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "summary_row_ids": {
                    "maxItems": 40,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 40
                    }
                  },
                  "category_notes": {
                    "maxItems": 6,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "category": {
                          "type": "string",
                          "maxLength": 40
                        },
                        "note": {
                          "type": "string",
                          "maxLength": 600
                        },
                        "row_ids": {
                          "maxItems": 40,
                          "type": "array",
                          "items": {
                            "type": "string",
                            "maxLength": 40
                          }
                        }
                      },
                      "required": [
                        "category",
                        "note",
                        "row_ids"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "eeat_pillars": {
                    "maxItems": 4,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "pillar": {
                          "type": "string",
                          "maxLength": 40
                        },
                        "assessment": {
                          "type": "string",
                          "maxLength": 400
                        },
                        "row_ids": {
                          "maxItems": 40,
                          "type": "array",
                          "items": {
                            "type": "string",
                            "maxLength": 40
                          }
                        }
                      },
                      "required": [
                        "pillar",
                        "assessment",
                        "row_ids"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "platforms": {
                    "maxItems": 5,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "platform": {
                          "type": "string",
                          "maxLength": 40
                        },
                        "gap": {
                          "type": "string",
                          "maxLength": 200
                        },
                        "priority_action": {
                          "type": "string",
                          "maxLength": 200
                        },
                        "row_ids": {
                          "maxItems": 40,
                          "type": "array",
                          "items": {
                            "type": "string",
                            "maxLength": 40
                          }
                        }
                      },
                      "required": [
                        "platform",
                        "gap",
                        "priority_action",
                        "row_ids"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "citability_rewrites": {
                    "maxItems": 3,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "block_id": {
                          "type": "string",
                          "maxLength": 20
                        },
                        "current_opening": {
                          "type": "string",
                          "maxLength": 300
                        },
                        "suggested_opening": {
                          "type": "string",
                          "maxLength": 600
                        },
                        "rationale": {
                          "type": "string",
                          "maxLength": 300
                        }
                      },
                      "required": [
                        "block_id",
                        "current_opening",
                        "suggested_opening",
                        "rationale"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "action_plan": {
                    "type": "object",
                    "properties": {
                      "quick_wins": {
                        "maxItems": 8,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action": {
                              "type": "string",
                              "maxLength": 200
                            },
                            "impact": {
                              "type": "string",
                              "maxLength": 300
                            },
                            "effort": {
                              "type": "string",
                              "enum": [
                                "low",
                                "medium",
                                "high"
                              ]
                            },
                            "category": {
                              "type": "string",
                              "maxLength": 40
                            },
                            "row_ids": {
                              "maxItems": 40,
                              "type": "array",
                              "items": {
                                "type": "string",
                                "maxLength": 40
                              }
                            }
                          },
                          "required": [
                            "action",
                            "impact",
                            "effort",
                            "category",
                            "row_ids"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "medium_term": {
                        "maxItems": 8,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action": {
                              "type": "string",
                              "maxLength": 200
                            },
                            "impact": {
                              "type": "string",
                              "maxLength": 300
                            },
                            "effort": {
                              "type": "string",
                              "enum": [
                                "low",
                                "medium",
                                "high"
                              ]
                            },
                            "category": {
                              "type": "string",
                              "maxLength": 40
                            },
                            "row_ids": {
                              "maxItems": 40,
                              "type": "array",
                              "items": {
                                "type": "string",
                                "maxLength": 40
                              }
                            }
                          },
                          "required": [
                            "action",
                            "impact",
                            "effort",
                            "category",
                            "row_ids"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "strategic": {
                        "maxItems": 8,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action": {
                              "type": "string",
                              "maxLength": 200
                            },
                            "impact": {
                              "type": "string",
                              "maxLength": 300
                            },
                            "effort": {
                              "type": "string",
                              "enum": [
                                "low",
                                "medium",
                                "high"
                              ]
                            },
                            "category": {
                              "type": "string",
                              "maxLength": 40
                            },
                            "row_ids": {
                              "maxItems": 40,
                              "type": "array",
                              "items": {
                                "type": "string",
                                "maxLength": 40
                              }
                            }
                          },
                          "required": [
                            "action",
                            "impact",
                            "effort",
                            "category",
                            "row_ids"
                          ],
                          "additionalProperties": false
                        }
                      }
                    },
                    "required": [
                      "quick_wins",
                      "medium_term",
                      "strategic"
                    ],
                    "additionalProperties": false
                  },
                  "llms_txt_draft": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 4000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "version",
                  "key_takeaway",
                  "executive_summary",
                  "summary_row_ids",
                  "category_notes",
                  "eeat_pillars",
                  "platforms",
                  "citability_rewrites",
                  "action_plan",
                  "llms_txt_draft"
                ],
                "additionalProperties": false
              },
              "model": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "reason": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "explanations": {
                "maxItems": 3,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "action_id": {
                      "type": "string"
                    },
                    "interpretation": {
                      "type": "string",
                      "maxLength": 1500
                    },
                    "evidence_ids": {
                      "maxItems": 5,
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "action_id",
                    "interpretation",
                    "evidence_ids"
                  ],
                  "additionalProperties": false
                }
              },
              "suggestions": {
                "maxItems": 5,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "text": {
                      "type": "string",
                      "maxLength": 1000
                    },
                    "evidence_ids": {
                      "maxItems": 5,
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "text",
                    "evidence_ids"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "status",
              "model",
              "reason",
              "explanations",
              "suggestions"
            ],
            "additionalProperties": false
          },
          "limitations": {
            "maxItems": 30,
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 500
            }
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "retryable": {
                    "type": "boolean"
                  },
                  "request_id": {
                    "type": "string"
                  },
                  "retry_after_seconds": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "field": {
                    "type": "string"
                  },
                  "help_path": {
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message",
                  "retryable",
                  "request_id"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "report_schema_version",
          "audit_id",
          "revision",
          "previous_audit_id",
          "url",
          "final_url",
          "status",
          "stage",
          "created_at",
          "expires_at",
          "updated_at",
          "demo",
          "versions",
          "sections",
          "usable_html",
          "scores",
          "findings",
          "evidence",
          "agent_observations",
          "connection",
          "screenshot",
          "loading",
          "ai",
          "limitations",
          "error"
        ],
        "additionalProperties": false
      },
      "ApiError": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "retryable": {
            "type": "boolean"
          },
          "request_id": {
            "type": "string"
          },
          "retry_after_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "field": {
            "type": "string"
          },
          "help_path": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "message",
          "retryable",
          "request_id"
        ],
        "additionalProperties": false
      },
      "Admission": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "audit_id",
          "status",
          "revision",
          "cached",
          "report_url",
          "snapshot_url",
          "markdown_url",
          "poll_after_seconds"
        ],
        "properties": {
          "audit_id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "revision": {
            "type": "integer"
          },
          "cached": {
            "type": "boolean"
          },
          "report_url": {
            "type": "string",
            "format": "uri"
          },
          "snapshot_url": {
            "type": "string",
            "format": "uri"
          },
          "markdown_url": {
            "type": "string",
            "format": "uri"
          },
          "poll_after_seconds": {
            "type": [
              "integer",
              "null"
            ]
          },
          "session": {
            "type": "string",
            "description": "Send back as `Authorization: Bearer` to read this report. Returned to machine callers only; a browser is authenticated by its httpOnly cookie instead."
          }
        }
      },
      "Session": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "expires_in_seconds"
        ],
        "properties": {
          "session": {
            "type": "string"
          },
          "expires_in_seconds": {
            "type": "integer"
          }
        }
      }
    }
  }
}
