{
  "$ref": "#/definitions/DomainConfigurationFile",
  "definitions": {
    "DomainConfigurationFile": {
      "type": "object",
      "properties": {
        "hostname": {
          "type": "string"
        },
        "version": {
          "type": "number",
          "default": 1
        },
        "dns": {
          "type": "object",
          "properties": {
            "monitors": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string"
                  },
                  "content": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "content": {
                              "type": "string"
                            },
                            "validator": {
                              "type": "string",
                              "enum": [
                                "starts-with"
                              ]
                            }
                          },
                          "required": [
                            "content"
                          ],
                          "additionalProperties": false
                        }
                      }
                    ]
                  },
                  "validator": {
                    "type": "string",
                    "enum": [
                      "starts-with"
                    ]
                  }
                },
                "required": [
                  "name",
                  "type",
                  "content"
                ],
                "additionalProperties": false
              }
            },
            "options": {
              "type": "object",
              "properties": {
                "links": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "label": {
                        "type": "string"
                      },
                      "url": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "label",
                      "url"
                    ],
                    "additionalProperties": false
                  },
                  "default": []
                },
                "provider": {
                  "type": "string",
                  "enum": [
                    "Vercel",
                    "Route53",
                    "Cloudflare",
                    "Unspecified"
                  ],
                  "default": "Unspecified"
                }
              },
              "additionalProperties": false
            }
          },
          "required": [
            "monitors"
          ],
          "additionalProperties": false
        },
        "websites": {
          "type": "object",
          "properties": {
            "options": {
              "type": "object",
              "properties": {
                "links": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/DomainConfigurationFile/properties/dns/properties/options/properties/links/items"
                  },
                  "default": []
                }
              },
              "additionalProperties": false,
              "default": {
                "links": []
              }
            },
            "monitors": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string"
                  },
                  "headers": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string"
                        },
                        "validator": {
                          "type": "string",
                          "enum": [
                            "starts-with"
                          ]
                        }
                      },
                      "required": [
                        "name",
                        "value"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "status": {
                    "type": "number"
                  }
                },
                "required": [
                  "url",
                  "headers",
                  "status"
                ],
                "additionalProperties": false
              },
              "default": []
            },
            "middleware": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string"
                  },
                  "options": {
                    "type": "object",
                    "properties": {
                      "debug": {
                        "type": [
                          "boolean",
                          "string"
                        ]
                      },
                      "lock-page-slug": {
                        "type": "string"
                      },
                      "csp-mode": {
                        "type": "string",
                        "enum": [
                          "disabled",
                          "report-only",
                          "enforced"
                        ],
                        "default": "disabled"
                      },
                      "csp-directives": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "default-src": {
                                "anyOf": [
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              },
                              "script-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "style-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "img-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "connect-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "font-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "object-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "media-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "frame-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "sandbox": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "report-uri": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "child-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "form-action": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "frame-ancestors": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "plugin-types": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "base-uri": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "report-to": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "worker-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "manifest-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "prefetch-src": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "navigate-to": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "require-sri-for": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "block-all-mixed-content": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "upgrade-insecure-requests": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "trusted-types": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              },
                              "require-trusted-types-for": {
                                "$ref": "#/definitions/DomainConfigurationFile/properties/websites/properties/middleware/items/properties/options/properties/csp-directives/anyOf/1/properties/default-src"
                              }
                            },
                            "additionalProperties": false
                          }
                        ]
                      }
                    },
                    "required": [
                      "lock-page-slug",
                      "csp-directives"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "url"
                ],
                "additionalProperties": false
              },
              "default": []
            }
          },
          "additionalProperties": false
        }
      },
      "required": [
        "hostname"
      ],
      "additionalProperties": false
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
