{
  "version": 2,
  "outputCapture": "direct-nodejs",
  "$schema": "https://json-schema.org/schema",
  "type": "object",
  "title": "deploy",
  "description": "Deploy a Google Cloud Platform function",
  "properties": {
    "functionName": {
      "type": "string",
      "description": "Name of the function"
    },
    "entryPoint": {
      "type": "string",
      "description": "Entrypoint of the file to use, default is functionName"
    },
    "trigger": {
      "type": "string",
      "description": "Trigger type",
      "enum": [
        "http",
        "bucket",
        "topic",
        "resource",
        "event"
      ]
    },
    "triggerValue": {
      "type": "string",
      "description": "Value of the trigger"
    },
    "runtime": {
      "type": "string",
      "enum": [
        "nodejs16",
        "nodejs18",
        "nodejs20",
        "nodejs22",
        "nodejs24",
        "recommended"
      ]
    },
    "memory": {
      "type": "string",
      "enum": [
        "128MB",
        "256MB",
        "512MB",
        "1024MB",
        "2048MB",
        "4096MB",
        "8192MB",
        "16384MB",
        "32768MB"
      ]
    },
    "allowUnauthenticated": {
      "type": "boolean"
    },
    "maxInstances": {
      "type": "number"
    },
    "envVarsFile": {
      "type": "string"
    },
    "envVars": {
      "type": "object"
    },
    "project": {
      "type": "string"
    },
    "retry": {
      "type": "boolean",
      "default": false
    },
    "ingressSettings": {
      "type": "string",
      "enum": [
        "all",
        "internal-only",
        "internal-and-gclb"
      ]
    },
    "egressSettings": {
      "type": "string",
      "enum": [
        "all",
        "private-ranges-only"
      ]
    },
    "vpcConnector": {
      "type": "string"
    },
    "securityLevel": {
      "type": "string",
      "enum": [
        "secure-optional",
        "secure-always"
      ]
    },
    "gen": {
      "type": "number",
      "default": 2
    },
    "cpu": {
      "type": "number",
      "default": 1
    },
    "concurrency": {
      "type": "number",
      "default": 1
    },
    "timeout": {
      "type": "number"
    },
    "secrets": {
      "oneOf": [
        {
          "type": "array"
        },
        {
          "type": "object"
        }
      ]
    }
  }
}
