{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "definitions": { "ExtensionsConfig": { "additionalProperties": false, "type": "object" } }, "properties": { "database": { "anyOf": [ { "additionalProperties": false, "properties": { "postdeploy": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string" } ] }, "predeploy": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string" } ] }, "rules": { "type": "string" } }, "required": [ "rules" ], "type": "object" }, { "items": { "anyOf": [ { "additionalProperties": false, "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" ], "type": "object" }, { "additionalProperties": false, "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" ], "type": "object" } ] }, "type": "array" } ] }, "emulators": { "additionalProperties": false, "properties": { "auth": { "additionalProperties": false, "properties": { "host": { "type": "string" }, "port": { "type": "number" } }, "type": "object" }, "database": { "additionalProperties": false, "properties": { "host": { "type": "string" }, "port": { "type": "number" } }, "type": "object" }, "eventarc": { "additionalProperties": false, "properties": { "host": { "type": "string" }, "port": { "type": "number" } }, "type": "object" }, "extensions": { "properties": { }, "type": "object" }, "firestore": { "additionalProperties": false, "properties": { "host": { "type": "string" }, "port": { "type": "number" }, "websocketPort": { "type": "number" } }, "type": "object" }, "functions": { "additionalProperties": false, "properties": { "host": { "type": "string" }, "port": { "type": "number" } }, "type": "object" }, "hosting": { "additionalProperties": false, "properties": { "host": { "type": "string" }, "port": { "type": "number" } }, "type": "object" }, "hub": { "additionalProperties": false, "properties": { "host": { "type": "string" }, "port": { "type": "number" } }, "type": "object" }, "logging": { "additionalProperties": false, "properties": { "host": { "type": "string" }, "port": { "type": "number" } }, "type": "object" }, "pubsub": { "additionalProperties": false, "properties": { "host": { "type": "string" }, "port": { "type": "number" } }, "type": "object" }, "singleProjectMode": { "type": "boolean" }, "storage": { "additionalProperties": false, "properties": { "host": { "type": "string" }, "port": { "type": "number" } }, "type": "object" }, "ui": { "additionalProperties": false, "properties": { "enabled": { "type": "boolean" }, "host": { "type": "string" }, "port": { "type": [ "string", "number" ] } }, "type": "object" } }, "type": "object" }, "extensions": { "$ref": "#/definitions/ExtensionsConfig" }, "firestore": { "additionalProperties": false, "properties": { "indexes": { "type": "string" }, "postdeploy": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string" } ] }, "predeploy": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string" } ] }, "rules": { "type": "string" } }, "type": "object" }, "functions": { "anyOf": [ { "additionalProperties": false, "properties": { "codebase": { "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" } ] }, "runtime": { "enum": [ "nodejs10", "nodejs12", "nodejs14", "nodejs16", "nodejs18" ], "type": "string" }, "source": { "type": "string" } }, "type": "object" }, { "items": { "additionalProperties": false, "properties": { "codebase": { "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" } ] }, "runtime": { "enum": [ "nodejs10", "nodejs12", "nodejs14", "nodejs16", "nodejs18" ], "type": "string" }, "source": { "type": "string" } }, "type": "object" }, "type": "array" } ] }, "hosting": { "anyOf": [ { "additionalProperties": false, "properties": { "appAssociation": { "enum": [ "AUTO", "NONE" ], "type": "string" }, "cleanUrls": { "type": "boolean" }, "headers": { "items": { "anyOf": [ { "additionalProperties": false, "properties": { "glob": { "type": "string" }, "headers": { "items": { "additionalProperties": false, "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" } }, "required": [ "glob", "headers" ], "type": "object" }, { "additionalProperties": false, "properties": { "headers": { "items": { "additionalProperties": false, "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "source": { "type": "string" } }, "required": [ "headers", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "headers": { "items": { "additionalProperties": false, "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "regex": { "type": "string" } }, "required": [ "headers", "regex" ], "type": "object" } ] }, "type": "array" }, "i18n": { "additionalProperties": false, "properties": { "root": { "type": "string" } }, "required": [ "root" ], "type": "object" }, "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": { "anyOf": [ { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "glob": { "type": "string" }, "type": { "type": "number" } }, "required": [ "destination", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "source": { "type": "string" }, "type": { "type": "number" } }, "required": [ "destination", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "regex": { "type": "string" }, "type": { "type": "number" } }, "required": [ "destination", "regex" ], "type": "object" } ] }, "type": "array" }, "rewrites": { "items": { "anyOf": [ { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "glob": { "type": "string" } }, "required": [ "destination", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "type": "string" }, "glob": { "type": "string" }, "region": { "type": "string" } }, "required": [ "function", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "additionalProperties": false, "properties": { "functionId": { "type": "string" }, "pinTag": { "type": "boolean" }, "region": { "type": "string" } }, "required": [ "functionId" ], "type": "object" }, "glob": { "type": "string" } }, "required": [ "function", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "glob": { "type": "string" }, "run": { "additionalProperties": false, "properties": { "pinTag": { "type": "boolean" }, "region": { "type": "string" }, "serviceId": { "type": "string" } }, "required": [ "serviceId" ], "type": "object" } }, "required": [ "glob", "run" ], "type": "object" }, { "additionalProperties": false, "properties": { "dynamicLinks": { "type": "boolean" }, "glob": { "type": "string" } }, "required": [ "dynamicLinks", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "source": { "type": "string" } }, "required": [ "destination", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "type": "string" }, "region": { "type": "string" }, "source": { "type": "string" } }, "required": [ "function", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "additionalProperties": false, "properties": { "functionId": { "type": "string" }, "pinTag": { "type": "boolean" }, "region": { "type": "string" } }, "required": [ "functionId" ], "type": "object" }, "source": { "type": "string" } }, "required": [ "function", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "run": { "additionalProperties": false, "properties": { "pinTag": { "type": "boolean" }, "region": { "type": "string" }, "serviceId": { "type": "string" } }, "required": [ "serviceId" ], "type": "object" }, "source": { "type": "string" } }, "required": [ "run", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "dynamicLinks": { "type": "boolean" }, "source": { "type": "string" } }, "required": [ "dynamicLinks", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "regex": { "type": "string" } }, "required": [ "destination", "regex" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "type": "string" }, "regex": { "type": "string" }, "region": { "type": "string" } }, "required": [ "function", "regex" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "additionalProperties": false, "properties": { "functionId": { "type": "string" }, "pinTag": { "type": "boolean" }, "region": { "type": "string" } }, "required": [ "functionId" ], "type": "object" }, "regex": { "type": "string" } }, "required": [ "function", "regex" ], "type": "object" }, { "additionalProperties": false, "properties": { "regex": { "type": "string" }, "run": { "additionalProperties": false, "properties": { "pinTag": { "type": "boolean" }, "region": { "type": "string" }, "serviceId": { "type": "string" } }, "required": [ "serviceId" ], "type": "object" } }, "required": [ "regex", "run" ], "type": "object" }, { "additionalProperties": false, "properties": { "dynamicLinks": { "type": "boolean" }, "regex": { "type": "string" } }, "required": [ "dynamicLinks", "regex" ], "type": "object" } ] }, "type": "array" }, "site": { "type": "string" }, "source": { "type": "string" }, "target": { "type": "string" }, "trailingSlash": { "type": "boolean" } }, "type": "object" }, { "items": { "anyOf": [ { "additionalProperties": false, "properties": { "appAssociation": { "enum": [ "AUTO", "NONE" ], "type": "string" }, "cleanUrls": { "type": "boolean" }, "headers": { "items": { "anyOf": [ { "additionalProperties": false, "properties": { "glob": { "type": "string" }, "headers": { "items": { "additionalProperties": false, "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" } }, "required": [ "glob", "headers" ], "type": "object" }, { "additionalProperties": false, "properties": { "headers": { "items": { "additionalProperties": false, "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "source": { "type": "string" } }, "required": [ "headers", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "headers": { "items": { "additionalProperties": false, "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "regex": { "type": "string" } }, "required": [ "headers", "regex" ], "type": "object" } ] }, "type": "array" }, "i18n": { "additionalProperties": false, "properties": { "root": { "type": "string" } }, "required": [ "root" ], "type": "object" }, "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": { "anyOf": [ { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "glob": { "type": "string" }, "type": { "type": "number" } }, "required": [ "destination", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "source": { "type": "string" }, "type": { "type": "number" } }, "required": [ "destination", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "regex": { "type": "string" }, "type": { "type": "number" } }, "required": [ "destination", "regex" ], "type": "object" } ] }, "type": "array" }, "rewrites": { "items": { "anyOf": [ { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "glob": { "type": "string" } }, "required": [ "destination", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "type": "string" }, "glob": { "type": "string" }, "region": { "type": "string" } }, "required": [ "function", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "additionalProperties": false, "properties": { "functionId": { "type": "string" }, "pinTag": { "type": "boolean" }, "region": { "type": "string" } }, "required": [ "functionId" ], "type": "object" }, "glob": { "type": "string" } }, "required": [ "function", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "glob": { "type": "string" }, "run": { "additionalProperties": false, "properties": { "pinTag": { "type": "boolean" }, "region": { "type": "string" }, "serviceId": { "type": "string" } }, "required": [ "serviceId" ], "type": "object" } }, "required": [ "glob", "run" ], "type": "object" }, { "additionalProperties": false, "properties": { "dynamicLinks": { "type": "boolean" }, "glob": { "type": "string" } }, "required": [ "dynamicLinks", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "source": { "type": "string" } }, "required": [ "destination", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "type": "string" }, "region": { "type": "string" }, "source": { "type": "string" } }, "required": [ "function", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "additionalProperties": false, "properties": { "functionId": { "type": "string" }, "pinTag": { "type": "boolean" }, "region": { "type": "string" } }, "required": [ "functionId" ], "type": "object" }, "source": { "type": "string" } }, "required": [ "function", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "run": { "additionalProperties": false, "properties": { "pinTag": { "type": "boolean" }, "region": { "type": "string" }, "serviceId": { "type": "string" } }, "required": [ "serviceId" ], "type": "object" }, "source": { "type": "string" } }, "required": [ "run", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "dynamicLinks": { "type": "boolean" }, "source": { "type": "string" } }, "required": [ "dynamicLinks", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "regex": { "type": "string" } }, "required": [ "destination", "regex" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "type": "string" }, "regex": { "type": "string" }, "region": { "type": "string" } }, "required": [ "function", "regex" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "additionalProperties": false, "properties": { "functionId": { "type": "string" }, "pinTag": { "type": "boolean" }, "region": { "type": "string" } }, "required": [ "functionId" ], "type": "object" }, "regex": { "type": "string" } }, "required": [ "function", "regex" ], "type": "object" }, { "additionalProperties": false, "properties": { "regex": { "type": "string" }, "run": { "additionalProperties": false, "properties": { "pinTag": { "type": "boolean" }, "region": { "type": "string" }, "serviceId": { "type": "string" } }, "required": [ "serviceId" ], "type": "object" } }, "required": [ "regex", "run" ], "type": "object" }, { "additionalProperties": false, "properties": { "dynamicLinks": { "type": "boolean" }, "regex": { "type": "string" } }, "required": [ "dynamicLinks", "regex" ], "type": "object" } ] }, "type": "array" }, "site": { "type": "string" }, "source": { "type": "string" }, "target": { "type": "string" }, "trailingSlash": { "type": "boolean" } }, "required": [ "target" ], "type": "object" }, { "additionalProperties": false, "properties": { "appAssociation": { "enum": [ "AUTO", "NONE" ], "type": "string" }, "cleanUrls": { "type": "boolean" }, "headers": { "items": { "anyOf": [ { "additionalProperties": false, "properties": { "glob": { "type": "string" }, "headers": { "items": { "additionalProperties": false, "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" } }, "required": [ "glob", "headers" ], "type": "object" }, { "additionalProperties": false, "properties": { "headers": { "items": { "additionalProperties": false, "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "source": { "type": "string" } }, "required": [ "headers", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "headers": { "items": { "additionalProperties": false, "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "regex": { "type": "string" } }, "required": [ "headers", "regex" ], "type": "object" } ] }, "type": "array" }, "i18n": { "additionalProperties": false, "properties": { "root": { "type": "string" } }, "required": [ "root" ], "type": "object" }, "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": { "anyOf": [ { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "glob": { "type": "string" }, "type": { "type": "number" } }, "required": [ "destination", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "source": { "type": "string" }, "type": { "type": "number" } }, "required": [ "destination", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "regex": { "type": "string" }, "type": { "type": "number" } }, "required": [ "destination", "regex" ], "type": "object" } ] }, "type": "array" }, "rewrites": { "items": { "anyOf": [ { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "glob": { "type": "string" } }, "required": [ "destination", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "type": "string" }, "glob": { "type": "string" }, "region": { "type": "string" } }, "required": [ "function", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "additionalProperties": false, "properties": { "functionId": { "type": "string" }, "pinTag": { "type": "boolean" }, "region": { "type": "string" } }, "required": [ "functionId" ], "type": "object" }, "glob": { "type": "string" } }, "required": [ "function", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "glob": { "type": "string" }, "run": { "additionalProperties": false, "properties": { "pinTag": { "type": "boolean" }, "region": { "type": "string" }, "serviceId": { "type": "string" } }, "required": [ "serviceId" ], "type": "object" } }, "required": [ "glob", "run" ], "type": "object" }, { "additionalProperties": false, "properties": { "dynamicLinks": { "type": "boolean" }, "glob": { "type": "string" } }, "required": [ "dynamicLinks", "glob" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "source": { "type": "string" } }, "required": [ "destination", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "type": "string" }, "region": { "type": "string" }, "source": { "type": "string" } }, "required": [ "function", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "additionalProperties": false, "properties": { "functionId": { "type": "string" }, "pinTag": { "type": "boolean" }, "region": { "type": "string" } }, "required": [ "functionId" ], "type": "object" }, "source": { "type": "string" } }, "required": [ "function", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "run": { "additionalProperties": false, "properties": { "pinTag": { "type": "boolean" }, "region": { "type": "string" }, "serviceId": { "type": "string" } }, "required": [ "serviceId" ], "type": "object" }, "source": { "type": "string" } }, "required": [ "run", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "dynamicLinks": { "type": "boolean" }, "source": { "type": "string" } }, "required": [ "dynamicLinks", "source" ], "type": "object" }, { "additionalProperties": false, "properties": { "destination": { "type": "string" }, "regex": { "type": "string" } }, "required": [ "destination", "regex" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "type": "string" }, "regex": { "type": "string" }, "region": { "type": "string" } }, "required": [ "function", "regex" ], "type": "object" }, { "additionalProperties": false, "properties": { "function": { "additionalProperties": false, "properties": { "functionId": { "type": "string" }, "pinTag": { "type": "boolean" }, "region": { "type": "string" } }, "required": [ "functionId" ], "type": "object" }, "regex": { "type": "string" } }, "required": [ "function", "regex" ], "type": "object" }, { "additionalProperties": false, "properties": { "regex": { "type": "string" }, "run": { "additionalProperties": false, "properties": { "pinTag": { "type": "boolean" }, "region": { "type": "string" }, "serviceId": { "type": "string" } }, "required": [ "serviceId" ], "type": "object" } }, "required": [ "regex", "run" ], "type": "object" }, { "additionalProperties": false, "properties": { "dynamicLinks": { "type": "boolean" }, "regex": { "type": "string" } }, "required": [ "dynamicLinks", "regex" ], "type": "object" } ] }, "type": "array" }, "site": { "type": "string" }, "source": { "type": "string" }, "target": { "type": "string" }, "trailingSlash": { "type": "boolean" } }, "required": [ "site" ], "type": "object" } ] }, "type": "array" } ] }, "remoteconfig": { "additionalProperties": false, "properties": { "postdeploy": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string" } ] }, "predeploy": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string" } ] }, "template": { "type": "string" } }, "required": [ "template" ], "type": "object" }, "storage": { "anyOf": [ { "additionalProperties": false, "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" ], "type": "object" }, { "items": { "additionalProperties": false, "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" ], "type": "object" }, "type": "array" } ] } }, "type": "object" }