{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "version": {
      "type": "number",
      "const": 2
    },
    "generatedAt": {
      "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))$"
    },
    "profile": {
      "type": "string"
    },
    "baseUrl": {
      "type": "string",
      "format": "uri"
    },
    "environmentCapabilities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "multi-origin",
          "https",
          "http2",
          "http3-quic",
          "tls-passthrough",
          "raw-url-passthrough",
          "compression-control",
          "streaming",
          "tls-fingerprinting"
        ]
      }
    },
    "profiles": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "baseUrl": {
            "type": "string",
            "format": "uri"
          },
          "risk": {
            "type": "string",
            "enum": [
              "safe",
              "moderate",
              "risky"
            ]
          },
          "summary": {
            "type": "string",
            "minLength": 1
          },
          "available": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "baseUrl",
          "risk",
          "summary",
          "available"
        ],
        "additionalProperties": false
      }
    },
    "fixtures": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "summary": {
            "type": "string",
            "minLength": 1
          },
          "route": {
            "type": "string",
            "pattern": "^\\/.*"
          },
          "method": {
            "default": "GET",
            "type": "string",
            "enum": [
              "GET",
              "HEAD",
              "OPTIONS",
              "POST",
              "PUT",
              "DELETE",
              "PATCH"
            ]
          },
          "group": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
          },
          "profile": {
            "type": "string",
            "minLength": 1
          },
          "implementationType": {
            "type": "string",
            "enum": [
              "astro-page",
              "astro-endpoint",
              "static-resource",
              "browser-fixture",
              "supporting-profile"
            ]
          },
          "routeClass": {
            "type": "string",
            "enum": [
              "entry",
              "helper",
              "target"
            ]
          },
          "risk": {
            "type": "string",
            "enum": [
              "safe",
              "moderate",
              "risky"
            ]
          },
          "sitemapPolicy": {
            "type": "string",
            "enum": [
              "default-sitemap",
              "scenario-sitemap",
              "safe-manifest-only",
              "risky-manifest-only",
              "never"
            ]
          },
          "includeInNavigation": {
            "type": "boolean"
          },
          "directEntryOnly": {
            "type": "boolean"
          },
          "external": {
            "type": "boolean"
          },
          "expectation": {
            "type": "object",
            "properties": {
              "expectedStatus": {
                "type": "integer",
                "minimum": 100,
                "maximum": 599
              },
              "expectedHeaders": {
                "default": [],
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "minLength": 1
                    },
                    "value": {
                      "type": "string"
                    },
                    "valuePattern": {
                      "type": "string"
                    },
                    "absent": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "additionalProperties": false
                }
              },
              "expectedContentType": {
                "type": "string"
              },
              "expectedLocation": {
                "type": "string"
              },
              "expectedFinalUrl": {
                "type": "string"
              },
              "expectedFinalStatus": {
                "type": "integer",
                "minimum": 100,
                "maximum": 599
              },
              "maxFollowCount": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "expectedTlsFailure": {
                "type": "string",
                "enum": [
                  "untrusted-issuer",
                  "expired",
                  "name-mismatch"
                ]
              },
              "bodyMarkers": {
                "default": [],
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "absentBodyMarkers": {
                "default": [],
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "renderedMarkers": {
                "default": [],
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "absentRenderedMarkers": {
                "default": [],
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "expectedDirectives": {
                "default": [],
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "meta-robots",
                        "x-robots-tag",
                        "canonical-html",
                        "canonical-http",
                        "hreflang",
                        "rel-next",
                        "rel-prev",
                        "refresh-meta",
                        "refresh-header"
                      ]
                    },
                    "value": {
                      "type": "string"
                    },
                    "source": {
                      "default": "raw",
                      "type": "string",
                      "enum": [
                        "raw",
                        "rendered"
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "value",
                    "source"
                  ],
                  "additionalProperties": false
                }
              },
              "expectedLinks": {
                "default": [],
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "href": {
                      "type": "string",
                      "minLength": 1
                    },
                    "rel": {
                      "type": "string"
                    },
                    "source": {
                      "default": "raw",
                      "type": "string",
                      "enum": [
                        "raw",
                        "rendered"
                      ]
                    },
                    "discoverable": {
                      "default": true,
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "href",
                    "source",
                    "discoverable"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "expectedStatus",
              "expectedHeaders",
              "bodyMarkers",
              "absentBodyMarkers",
              "renderedMarkers",
              "absentRenderedMarkers",
              "expectedDirectives",
              "expectedLinks"
            ],
            "additionalProperties": false
          },
          "environmentCapabilities": {
            "default": [],
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "multi-origin",
                "https",
                "http2",
                "http3-quic",
                "tls-passthrough",
                "raw-url-passthrough",
                "compression-control",
                "streaming",
                "tls-fingerprinting"
              ]
            }
          },
          "sitebulbHintIds": {
            "default": [],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "contentRef": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*(?:\\/[a-z0-9]+(?:-[a-z0-9]+)*)*$"
          },
          "robotsStanzas": {
            "default": [],
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "userAgent": {
                  "default": "*",
                  "type": "string",
                  "minLength": 1
                },
                "rules": {
                  "default": [],
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "directive": {
                        "type": "string",
                        "enum": [
                          "allow",
                          "disallow"
                        ]
                      },
                      "path": {
                        "type": "string",
                        "pattern": "^\\/.*"
                      }
                    },
                    "required": [
                      "directive",
                      "path"
                    ],
                    "additionalProperties": false
                  }
                },
                "sitemapRefs": {
                  "default": [],
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              },
              "required": [
                "userAgent",
                "rules",
                "sitemapRefs"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "id",
          "title",
          "summary",
          "route",
          "method",
          "group",
          "profile",
          "implementationType",
          "routeClass",
          "risk",
          "sitemapPolicy",
          "includeInNavigation",
          "directEntryOnly",
          "external",
          "expectation",
          "environmentCapabilities",
          "sitebulbHintIds",
          "robotsStanzas"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "version",
    "generatedAt",
    "profile",
    "baseUrl",
    "environmentCapabilities",
    "profiles",
    "fixtures"
  ],
  "additionalProperties": false
}