{
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "basicAuth": {
      "type": "object",
      "properties": {
        "credentials": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 3
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/properties/basicAuth/properties/credentials/anyOf/0"
              }
            }
          ]
        },
        "passwordlessStages": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/properties/basicAuth/properties/passwordlessStages/anyOf/0"
              }
            }
          ]
        },
        "patterns": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "build": {
      "type": "object",
      "properties": {
        "beforeDeploy": {
          "type": "boolean",
          "default": false
        },
        "commands": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "framework": {
          "type": "string",
          "enum": [
            "analog",
            "angular",
            "astro",
            "docsify",
            "docusaurus",
            "eleventy",
            "ember",
            "gatsby",
            "hexo",
            "hono",
            "hugo",
            "jekyll",
            "mdbook",
            "metalsmith",
            "middleman",
            "mkdocs",
            "nextjs",
            "nuxt",
            "other",
            "pelican",
            "qwik",
            "slate",
            "solid",
            "sphinx",
            "starlight",
            "svelte",
            "umijs",
            "vite-lit",
            "vite-preact",
            "vite-qwik",
            "vite-react",
            "vite-solid",
            "vite-svelte",
            "vite-vanilla",
            "vite-vue",
            "vitepress",
            "zola"
          ]
        },
        "outDir": {
          "type": "string"
        },
        "packageManager": {
          "type": "string",
          "enum": [
            "npm",
            "pnpm",
            "bun",
            "yarn"
          ]
        }
      },
      "additionalProperties": false
    },
    "countries": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "allowed": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 2
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/properties/countries/anyOf/0/properties/allowed/anyOf/0"
                  }
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "blocked": {
              "anyOf": [
                {
                  "$ref": "#/properties/countries/anyOf/0/properties/allowed/anyOf/0"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/properties/countries/anyOf/0/properties/allowed/anyOf/0"
                  }
                }
              ]
            }
          },
          "additionalProperties": false
        }
      ],
      "default": {
        "blocked": [
          "CU",
          "IR",
          "KP",
          "SY"
        ]
      }
    },
    "customHeaders": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "propertyNames": {}
    },
    "domain": {
      "type": "object",
      "properties": {
        "aliases": {
          "anyOf": [
            {
              "type": "string",
              "format": "uri",
              "pattern": "^https\\:\\/\\/"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/properties/domain/properties/aliases/anyOf/0"
              }
            }
          ]
        },
        "name": {
          "type": "string",
          "format": "uri",
          "pattern": "^https\\:\\/\\/"
        },
        "registrar": {
          "type": "string",
          "enum": [
            "101domain.com",
            "123-reg.co.uk",
            "alibabacloud.com",
            "aws.amazon.com",
            "blacknight.com",
            "bluehost.com/fastdomain",
            "bluehost.com/hostmonster",
            "bluehost.com/ipage",
            "cloudflare.com",
            "directnic.com",
            "dnsimple.com",
            "domain.com",
            "domaindiscount24.com",
            "dreamhost.com",
            "dynadot.com",
            "easydns.com",
            "enom.com",
            "flokinet.is",
            "freenom.com",
            "freeparking.co.nz",
            "gandi.net",
            "gname.com",
            "godaddy.com",
            "hostgator.com",
            "hostico.com",
            "hostinger.com",
            "hover.com",
            "internetbs.net",
            "ionos.com",
            "iwantmyname.com",
            "melbourneit.au",
            "moniker.com",
            "name.com",
            "namebright.com",
            "namecheap.com",
            "namesilo.com",
            "networksolutions.com",
            "nic.ru",
            "nomeo.be",
            "onamae.com",
            "one.com",
            "onlydomains.com",
            "other",
            "ovhcloud.com/en",
            "porkbun.com",
            "rackspace.com",
            "realtimeregister.com",
            "reg.ru",
            "register.com",
            "register.it",
            "spaceship.com",
            "squarespace.com",
            "tsohost.com",
            "uniteddomains.com",
            "web.com",
            "west.cn",
            "wix.com",
            "wordpress.com",
            "yola.com"
          ]
        },
        "type": {
          "type": "string",
          "enum": [
            "cname",
            "nameserver",
            "aname"
          ]
        }
      },
      "additionalProperties": false
    },
    "edgeRules": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "ActionType": {
              "type": "number",
              "enum": [
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20
              ]
            },
            "ActionParameter1": {
              "type": [
                "string",
                "null"
              ]
            },
            "ActionParameter2": {
              "type": [
                "string",
                "null"
              ]
            },
            "Triggers": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "Type": {
                    "type": "number",
                    "enum": [
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11
                    ]
                  },
                  "PatternMatches": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "PatternMatchingType": {
                    "type": "number",
                    "enum": [
                      0,
                      1,
                      2
                    ]
                  },
                  "Parameter1": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "Type",
                  "PatternMatches",
                  "PatternMatchingType"
                ],
                "additionalProperties": false
              }
            },
            "ExtraActions": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "ActionType": {
                    "type": "number",
                    "enum": [
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20
                    ]
                  },
                  "ActionParameter1": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "ActionParameter2": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "ActionType"
                ],
                "additionalProperties": false
              }
            },
            "TriggerMatchingType": {
              "type": "number",
              "enum": [
                0,
                1,
                2
              ]
            },
            "Description": {
              "type": "string"
            },
            "Enabled": {
              "type": "boolean"
            }
          },
          "required": [
            "ActionType",
            "Triggers",
            "ExtraActions",
            "TriggerMatchingType",
            "Enabled"
          ],
          "additionalProperties": false
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/properties/edgeRules/anyOf/0"
          }
        }
      ]
    },
    "imageOptimizer": {
      "type": "boolean",
      "default": false
    },
    "ips": {
      "type": "object",
      "properties": {
        "blocked": {
          "anyOf": [
            {
              "type": "string",
              "anyOf": [
                {
                  "format": "ipv4"
                },
                {
                  "format": "ipv6"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/properties/ips/properties/blocked/anyOf/0"
              }
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "logging": {
      "type": "object",
      "properties": {
        "storageZone": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "number",
              "exclusiveMinimum": 0
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "mainStage": {
      "type": "string",
      "default": "main"
    },
    "notFound": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "spa": {
          "type": "boolean",
          "default": false
        }
      },
      "additionalProperties": false
    },
    "optimize": {
      "type": "string",
      "enum": [
        "performance",
        "cost"
      ]
    },
    "profiles": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/properties/profiles/anyOf/0"
          }
        }
      ]
    },
    "redirects": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "propertyNames": {}
    },
    "referrers": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "allowed": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/properties/referrers/anyOf/0/properties/allowed/anyOf/0"
                  }
                }
              ]
            },
            "blockNoneReferrer": {
              "type": "boolean",
              "default": false
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "blocked": {
              "anyOf": [
                {
                  "$ref": "#/properties/referrers/anyOf/0/properties/allowed/anyOf/0"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/properties/referrers/anyOf/0/properties/allowed/anyOf/0"
                  }
                }
              ]
            },
            "blockNoneReferrer": {
              "$ref": "#/properties/referrers/anyOf/0/properties/blockNoneReferrer"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "sharedCredentialsFile": {
      "type": "string",
      "default": "/Users/jlarmst/.bunny/credentials"
    },
    "stage": {
      "type": "string"
    },
    "version": {
      "type": "string",
      "minLength": 5,
      "default": "0.0.0"
    },
    "writeConfig": {
      "type": "boolean",
      "default": true
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
