{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/firebase/latest.json",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/firebase/firebase-tools/master/schema/firebase-config.json",
    "sourceSha256": "38720176dbec9e35d03ee1a5b1c23e77f6bade582109fbc7b215f8bfa4a83265",
    "fileMatch": [
      "firebase.json"
    ],
    "parsers": [
      "json"
    ]
  },
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "apphosting": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "alwaysDeployFromSource": {
              "type": "boolean"
            },
            "backendId": {
              "type": "string"
            },
            "ignore": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "localBuild": {
              "type": "boolean"
            },
            "rootDir": {
              "type": "string"
            }
          },
          "required": [
            "backendId",
            "ignore",
            "rootDir"
          ],
          "additionalProperties": false
        },
        {
          "items": {
            "type": "object",
            "properties": {
              "alwaysDeployFromSource": {
                "type": "boolean"
              },
              "backendId": {
                "type": "string"
              },
              "ignore": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "localBuild": {
                "type": "boolean"
              },
              "rootDir": {
                "type": "string"
              }
            },
            "required": [
              "backendId",
              "ignore",
              "rootDir"
            ],
            "additionalProperties": false
          },
          "type": "array"
        }
      ]
    },
    "auth": {
      "$ref": "#/$defs/AuthConfig"
    },
    "database": {
      "anyOf": [
        {
          "$ref": "#/$defs/DatabaseSingle"
        },
        {
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "instance": {
                    "type": "string"
                  },
                  "postdeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "predeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "rules": {
                    "type": "string"
                  },
                  "target": {
                    "type": "string"
                  }
                },
                "required": [
                  "instance",
                  "rules"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "instance": {
                    "type": "string"
                  },
                  "postdeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "predeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "rules": {
                    "type": "string"
                  },
                  "target": {
                    "type": "string"
                  }
                },
                "required": [
                  "rules",
                  "target"
                ],
                "additionalProperties": false
              }
            ]
          },
          "type": "array"
        }
      ]
    },
    "dataconnect": {
      "anyOf": [
        {
          "$ref": "#/$defs/DataConnectSingle"
        },
        {
          "items": {
            "$ref": "#/$defs/DataConnectSingle"
          },
          "type": "array"
        }
      ]
    },
    "emulators": {
      "type": "object",
      "properties": {
        "apphosting": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            },
            "rootDirectory": {
              "type": "string"
            },
            "startCommand": {
              "type": "string"
            },
            "startCommandOverride": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "auth": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "database": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "dataconnect": {
          "type": "object",
          "properties": {
            "dataDir": {
              "type": "string"
            },
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            },
            "postgresHost": {
              "type": "string"
            },
            "postgresPort": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "eventarc": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "extensions": {
          "properties": {},
          "type": "object"
        },
        "firestore": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            },
            "websocketPort": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "functions": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "hosting": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "hub": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "logging": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "pubsub": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "singleProjectMode": {
          "type": "boolean"
        },
        "storage": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "tasks": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        "ui": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "host": {
              "type": "string"
            },
            "port": {
              "type": "number"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "extensions": {
      "$ref": "#/$defs/ExtensionsConfig"
    },
    "firestore": {
      "anyOf": [
        {
          "$ref": "#/$defs/FirestoreSingle"
        },
        {
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "database": {
                    "type": "string"
                  },
                  "indexes": {
                    "type": "string"
                  },
                  "postdeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "predeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "rules": {
                    "type": "string"
                  },
                  "target": {
                    "type": "string"
                  }
                },
                "required": [
                  "target"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "database": {
                    "type": "string"
                  },
                  "indexes": {
                    "type": "string"
                  },
                  "postdeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "predeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "rules": {
                    "type": "string"
                  },
                  "target": {
                    "type": "string"
                  }
                },
                "required": [
                  "database"
                ],
                "additionalProperties": false
              }
            ]
          },
          "type": "array"
        }
      ]
    },
    "functions": {
      "anyOf": [
        {
          "$ref": "#/$defs/LocalFunctionConfig"
        },
        {
          "$ref": "#/$defs/RemoteFunctionConfig"
        },
        {
          "items": {
            "$ref": "#/$defs/FunctionConfig"
          },
          "type": "array"
        }
      ]
    },
    "hosting": {
      "anyOf": [
        {
          "$ref": "#/$defs/HostingSingle"
        },
        {
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "appAssociation": {
                    "enum": [
                      "AUTO",
                      "NONE"
                    ],
                    "type": "string"
                  },
                  "cleanUrls": {
                    "type": "boolean"
                  },
                  "frameworksBackend": {
                    "$ref": "#/$defs/FrameworksBackendOptions"
                  },
                  "headers": {
                    "items": {
                      "$ref": "#/$defs/HostingHeaders"
                    },
                    "type": "array"
                  },
                  "i18n": {
                    "type": "object",
                    "properties": {
                      "root": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "root"
                    ],
                    "additionalProperties": false
                  },
                  "ignore": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "postdeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "predeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "public": {
                    "type": "string"
                  },
                  "redirects": {
                    "items": {
                      "$ref": "#/$defs/HostingRedirects"
                    },
                    "type": "array"
                  },
                  "rewrites": {
                    "items": {
                      "$ref": "#/$defs/HostingRewrites"
                    },
                    "type": "array"
                  },
                  "site": {
                    "type": "string"
                  },
                  "source": {
                    "type": "string"
                  },
                  "target": {
                    "type": "string"
                  },
                  "trailingSlash": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "target"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "appAssociation": {
                    "enum": [
                      "AUTO",
                      "NONE"
                    ],
                    "type": "string"
                  },
                  "cleanUrls": {
                    "type": "boolean"
                  },
                  "frameworksBackend": {
                    "$ref": "#/$defs/FrameworksBackendOptions"
                  },
                  "headers": {
                    "items": {
                      "$ref": "#/$defs/HostingHeaders"
                    },
                    "type": "array"
                  },
                  "i18n": {
                    "type": "object",
                    "properties": {
                      "root": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "root"
                    ],
                    "additionalProperties": false
                  },
                  "ignore": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "postdeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "predeploy": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "public": {
                    "type": "string"
                  },
                  "redirects": {
                    "items": {
                      "$ref": "#/$defs/HostingRedirects"
                    },
                    "type": "array"
                  },
                  "rewrites": {
                    "items": {
                      "$ref": "#/$defs/HostingRewrites"
                    },
                    "type": "array"
                  },
                  "site": {
                    "type": "string"
                  },
                  "source": {
                    "type": "string"
                  },
                  "target": {
                    "type": "string"
                  },
                  "trailingSlash": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "site"
                ],
                "additionalProperties": false
              }
            ]
          },
          "type": "array"
        }
      ]
    },
    "remoteconfig": {
      "$ref": "#/$defs/RemoteConfigConfig"
    },
    "storage": {
      "anyOf": [
        {
          "$ref": "#/$defs/StorageSingle"
        },
        {
          "items": {
            "type": "object",
            "properties": {
              "bucket": {
                "type": "string"
              },
              "postdeploy": {
                "anyOf": [
                  {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "predeploy": {
                "anyOf": [
                  {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "rules": {
                "type": "string"
              },
              "target": {
                "type": "string"
              }
            },
            "required": [
              "bucket",
              "rules"
            ],
            "additionalProperties": false
          },
          "type": "array"
        }
      ]
    }
  },
  "additionalProperties": false,
  "$defs": {
    "ActiveRuntime": {
      "enum": [
        "dart3",
        "nodejs18",
        "nodejs20",
        "nodejs22",
        "nodejs24",
        "python310",
        "python311",
        "python312",
        "python313"
      ],
      "type": "string"
    },
    "AuthConfig": {
      "type": "object",
      "properties": {
        "providers": {
          "type": "object",
          "properties": {
            "anonymous": {
              "type": "boolean"
            },
            "emailPassword": {
              "type": "boolean"
            },
            "googleSignIn": {
              "type": "object",
              "properties": {
                "authorizedRedirectUris": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "oAuthBrandDisplayName": {
                  "type": "string"
                },
                "supportEmail": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "DataConnectSingle": {
      "type": "object",
      "properties": {
        "postdeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "predeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "source": {
          "type": "string"
        }
      },
      "required": [
        "source"
      ],
      "additionalProperties": false
    },
    "DatabaseSingle": {
      "type": "object",
      "properties": {
        "postdeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "predeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "rules": {
          "type": "string"
        }
      },
      "required": [
        "rules"
      ],
      "additionalProperties": false
    },
    "ExtensionsConfig": {
      "type": "object",
      "additionalProperties": false
    },
    "FirestoreSingle": {
      "type": "object",
      "properties": {
        "dataAccessMode": {
          "enum": [
            "FIRESTORE_NATIVE",
            "MONGODB_COMPATIBLE"
          ],
          "type": "string"
        },
        "database": {
          "type": "string"
        },
        "edition": {
          "type": "string"
        },
        "indexes": {
          "type": "string"
        },
        "location": {
          "type": "string"
        },
        "postdeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "predeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "rules": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "FrameworksBackendOptions": {
      "type": "object",
      "properties": {
        "concurrency": {
          "description": "Number of requests a function can serve at once.",
          "type": "number"
        },
        "cors": {
          "description": "If true, allows CORS on requests to this function.\nIf this is a `string` or `RegExp`, allows requests from domains that match the provided value.\nIf this is an `Array`, allows requests from domains matching at least one entry of the array.\nDefaults to true for {@link https.CallableFunction} and false otherwise.",
          "type": [
            "string",
            "boolean"
          ]
        },
        "cpu": {
          "anyOf": [
            {
              "const": "gcf_gen1",
              "type": "string"
            },
            {
              "type": "number"
            }
          ],
          "description": "Fractional number of CPUs to allocate to a function."
        },
        "enforceAppCheck": {
          "description": "Determines whether Firebase AppCheck is enforced. Defaults to false.",
          "type": "boolean"
        },
        "ingressSettings": {
          "description": "Ingress settings which control where this function can be called from.",
          "enum": [
            "ALLOW_ALL",
            "ALLOW_INTERNAL_AND_GCLB",
            "ALLOW_INTERNAL_ONLY"
          ],
          "type": "string"
        },
        "invoker": {
          "const": "public",
          "description": "Invoker to set access control on https functions.",
          "type": "string"
        },
        "labels": {
          "$ref": "#/$defs/Record%3Cstring,string%3E",
          "description": "User labels to set on the function."
        },
        "maxInstances": {
          "description": "Max number of instances to be running in parallel.",
          "type": "number"
        },
        "memory": {
          "description": "Amount of memory to allocate to a function.",
          "enum": [
            "128MiB",
            "16GiB",
            "1GiB",
            "256MiB",
            "2GiB",
            "32GiB",
            "4GiB",
            "512MiB",
            "8GiB"
          ],
          "type": "string"
        },
        "minInstances": {
          "description": "Min number of actual instances to be running at a given time.",
          "type": "number"
        },
        "omit": {
          "description": "If true, do not deploy or emulate this function.",
          "type": "boolean"
        },
        "preserveExternalChanges": {
          "description": "Controls whether function configuration modified outside of function source is preserved. Defaults to false.",
          "type": "boolean"
        },
        "region": {
          "description": "HTTP functions can override global options and can specify multiple regions to deploy to.",
          "type": "string"
        },
        "secrets": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "serviceAccount": {
          "description": "Specific service account for the function to run as.",
          "type": "string"
        },
        "timeoutSeconds": {
          "description": "Timeout for the function in seconds, possible values are 0 to 540.\nHTTPS functions can specify a higher timeout.",
          "type": "number"
        },
        "vpcConnector": {
          "description": "Connect cloud function to specified VPC connector.",
          "type": "string"
        },
        "vpcConnectorEgressSettings": {
          "description": "Egress settings for VPC connector.",
          "enum": [
            "ALL_TRAFFIC",
            "PRIVATE_RANGES_ONLY"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "FunctionConfig": {
      "anyOf": [
        {
          "$ref": "#/$defs/LocalFunctionConfig"
        },
        {
          "$ref": "#/$defs/RemoteFunctionConfig"
        }
      ]
    },
    "HostingHeaders": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "glob": {
              "type": "string"
            },
            "headers": {
              "items": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "value"
                ],
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "required": [
            "glob",
            "headers"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "headers": {
              "items": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "value"
                ],
                "additionalProperties": false
              },
              "type": "array"
            },
            "source": {
              "type": "string"
            }
          },
          "required": [
            "headers",
            "source"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "headers": {
              "items": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "value"
                ],
                "additionalProperties": false
              },
              "type": "array"
            },
            "regex": {
              "type": "string"
            }
          },
          "required": [
            "headers",
            "regex"
          ],
          "additionalProperties": false
        }
      ]
    },
    "HostingRedirects": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "destination": {
              "type": "string"
            },
            "glob": {
              "type": "string"
            },
            "type": {
              "type": "number"
            }
          },
          "required": [
            "destination",
            "glob"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "destination": {
              "type": "string"
            },
            "source": {
              "type": "string"
            },
            "type": {
              "type": "number"
            }
          },
          "required": [
            "destination",
            "source"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "destination": {
              "type": "string"
            },
            "regex": {
              "type": "string"
            },
            "type": {
              "type": "number"
            }
          },
          "required": [
            "destination",
            "regex"
          ],
          "additionalProperties": false
        }
      ]
    },
    "HostingRewrites": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "destination": {
              "type": "string"
            },
            "glob": {
              "type": "string"
            }
          },
          "required": [
            "destination",
            "glob"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "function": {
              "type": "string"
            },
            "glob": {
              "type": "string"
            },
            "region": {
              "type": "string"
            }
          },
          "required": [
            "function",
            "glob"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "function": {
              "type": "object",
              "properties": {
                "functionId": {
                  "type": "string"
                },
                "pinTag": {
                  "type": "boolean"
                },
                "region": {
                  "type": "string"
                }
              },
              "required": [
                "functionId"
              ],
              "additionalProperties": false
            },
            "glob": {
              "type": "string"
            }
          },
          "required": [
            "function",
            "glob"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "glob": {
              "type": "string"
            },
            "run": {
              "type": "object",
              "properties": {
                "pinTag": {
                  "type": "boolean"
                },
                "region": {
                  "type": "string"
                },
                "serviceId": {
                  "type": "string"
                }
              },
              "required": [
                "serviceId"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "glob",
            "run"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "dynamicLinks": {
              "type": "boolean"
            },
            "glob": {
              "type": "string"
            }
          },
          "required": [
            "dynamicLinks",
            "glob"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "destination": {
              "type": "string"
            },
            "source": {
              "type": "string"
            }
          },
          "required": [
            "destination",
            "source"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "function": {
              "type": "string"
            },
            "region": {
              "type": "string"
            },
            "source": {
              "type": "string"
            }
          },
          "required": [
            "function",
            "source"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "function": {
              "type": "object",
              "properties": {
                "functionId": {
                  "type": "string"
                },
                "pinTag": {
                  "type": "boolean"
                },
                "region": {
                  "type": "string"
                }
              },
              "required": [
                "functionId"
              ],
              "additionalProperties": false
            },
            "source": {
              "type": "string"
            }
          },
          "required": [
            "function",
            "source"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "run": {
              "type": "object",
              "properties": {
                "pinTag": {
                  "type": "boolean"
                },
                "region": {
                  "type": "string"
                },
                "serviceId": {
                  "type": "string"
                }
              },
              "required": [
                "serviceId"
              ],
              "additionalProperties": false
            },
            "source": {
              "type": "string"
            }
          },
          "required": [
            "run",
            "source"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "dynamicLinks": {
              "type": "boolean"
            },
            "source": {
              "type": "string"
            }
          },
          "required": [
            "dynamicLinks",
            "source"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "destination": {
              "type": "string"
            },
            "regex": {
              "type": "string"
            }
          },
          "required": [
            "destination",
            "regex"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "function": {
              "type": "string"
            },
            "regex": {
              "type": "string"
            },
            "region": {
              "type": "string"
            }
          },
          "required": [
            "function",
            "regex"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "function": {
              "type": "object",
              "properties": {
                "functionId": {
                  "type": "string"
                },
                "pinTag": {
                  "type": "boolean"
                },
                "region": {
                  "type": "string"
                }
              },
              "required": [
                "functionId"
              ],
              "additionalProperties": false
            },
            "regex": {
              "type": "string"
            }
          },
          "required": [
            "function",
            "regex"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "regex": {
              "type": "string"
            },
            "run": {
              "type": "object",
              "properties": {
                "pinTag": {
                  "type": "boolean"
                },
                "region": {
                  "type": "string"
                },
                "serviceId": {
                  "type": "string"
                }
              },
              "required": [
                "serviceId"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "regex",
            "run"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "dynamicLinks": {
              "type": "boolean"
            },
            "regex": {
              "type": "string"
            }
          },
          "required": [
            "dynamicLinks",
            "regex"
          ],
          "additionalProperties": false
        }
      ]
    },
    "HostingSingle": {
      "type": "object",
      "properties": {
        "appAssociation": {
          "enum": [
            "AUTO",
            "NONE"
          ],
          "type": "string"
        },
        "cleanUrls": {
          "type": "boolean"
        },
        "frameworksBackend": {
          "$ref": "#/$defs/FrameworksBackendOptions"
        },
        "headers": {
          "items": {
            "$ref": "#/$defs/HostingHeaders"
          },
          "type": "array"
        },
        "i18n": {
          "type": "object",
          "properties": {
            "root": {
              "type": "string"
            }
          },
          "required": [
            "root"
          ],
          "additionalProperties": false
        },
        "ignore": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "postdeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "predeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "public": {
          "type": "string"
        },
        "redirects": {
          "items": {
            "$ref": "#/$defs/HostingRedirects"
          },
          "type": "array"
        },
        "rewrites": {
          "items": {
            "$ref": "#/$defs/HostingRewrites"
          },
          "type": "array"
        },
        "site": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "target": {
          "type": "string"
        },
        "trailingSlash": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "LocalFunctionConfig": {
      "type": "object",
      "properties": {
        "codebase": {
          "type": "string"
        },
        "configDir": {
          "type": "string"
        },
        "disallowLegacyRuntimeConfig": {
          "type": "boolean"
        },
        "ignore": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "postdeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "predeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "prefix": {
          "type": "string"
        },
        "runtime": {
          "enum": [
            "dart3",
            "nodejs18",
            "nodejs20",
            "nodejs22",
            "nodejs24",
            "python310",
            "python311",
            "python312",
            "python313"
          ],
          "type": "string"
        },
        "source": {
          "type": "string"
        }
      },
      "required": [
        "source"
      ],
      "additionalProperties": false
    },
    "Record<string,string>": {
      "type": "object",
      "additionalProperties": false
    },
    "RemoteConfigConfig": {
      "type": "object",
      "properties": {
        "postdeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "predeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "template": {
          "type": "string"
        }
      },
      "required": [
        "template"
      ],
      "additionalProperties": false
    },
    "RemoteFunctionConfig": {
      "type": "object",
      "properties": {
        "codebase": {
          "type": "string"
        },
        "configDir": {
          "type": "string"
        },
        "ignore": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "postdeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "predeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "prefix": {
          "type": "string"
        },
        "remoteSource": {
          "type": "object",
          "properties": {
            "dir": {
              "type": "string"
            },
            "ref": {
              "type": "string"
            },
            "repository": {
              "type": "string"
            }
          },
          "required": [
            "ref",
            "repository"
          ],
          "additionalProperties": false
        },
        "runtime": {
          "$ref": "#/$defs/ActiveRuntime"
        }
      },
      "required": [
        "remoteSource",
        "runtime"
      ],
      "additionalProperties": false
    },
    "StorageSingle": {
      "type": "object",
      "properties": {
        "postdeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "predeploy": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "rules": {
          "type": "string"
        },
        "target": {
          "type": "string"
        }
      },
      "required": [
        "rules"
      ],
      "additionalProperties": false
    }
  }
}
