{
  "$id": "https://firefox-ci-tc.services.mozilla.com/schemas/common/values.schema.json#",
  "$schema": "http://json-schema.org/draft-06/schema#",
  "additionalProperties": false,
  "properties": {
    "applicationName": {
      "description": "The name of this deployment of Taskcluster.",
      "type": "string"
    },
    "auth": {
      "additionalProperties": false,
      "properties": {
        "audit_retention_days": {
          "type": "string"
        },
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "aws_credentials_allowed_buckets": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "azure_accounts": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "azure_crypto_key": {
          "type": "string"
        },
        "db_crypto_keys": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "docs_bucket": {
          "type": "string"
        },
        "gcp_credentials_allowed_projects": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "keep_alive_timeout_seconds": {
          "type": "number"
        },
        "level": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "purgeAuditHistory": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "purgeExpiredClients": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web",
            "purgeExpiredClients",
            "purgeAuditHistory"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "pulse_password": {
          "type": "string"
        },
        "pulse_username": {
          "type": "string"
        },
        "read_db_url": {
          "type": "string"
        },
        "refs_bucket": {
          "type": "string"
        },
        "schemas_bucket": {
          "type": "string"
        },
        "sentry_auth_token": {
          "type": "string"
        },
        "sentry_host": {
          "type": "string"
        },
        "sentry_key_prefix": {
          "type": "string"
        },
        "sentry_organization": {
          "type": "string"
        },
        "sentry_team": {
          "type": "string"
        },
        "static_clients": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "websocktunnel_secret": {
          "type": "string"
        },
        "write_db_url": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "static_clients",
        "read_db_url",
        "write_db_url",
        "pulse_username",
        "pulse_password"
      ],
      "title": "Configuration options for auth",
      "type": "object"
    },
    "built_in_workers": {
      "additionalProperties": false,
      "properties": {
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "level": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "server": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "server"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "taskcluster_access_token": {
          "type": "string"
        },
        "taskcluster_client_id": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "taskcluster_client_id",
        "taskcluster_access_token"
      ],
      "title": "Configuration options for built-in-workers",
      "type": "object"
    },
    "certManagerClusterIssuerName": {
      "description": "Name of the cluster issuer, i.e. \"letsencrypt-prod\"",
      "type": "string"
    },
    "dockerImage": {
      "description": "The docker image containing taskcluster.",
      "type": "string"
    },
    "errorConfig": {
      "additionalProperties": true,
      "description": "Error reporting configuration for lib-monitor.",
      "properties": {
        "reporter": {
          "description": "Which reporter to use.",
          "type": "string"
        }
      },
      "required": [
        "reporter"
      ],
      "type": "object"
    },
    "forceSSL": {
      "description": "If true, all connections must use ssl",
      "type": "boolean"
    },
    "gatewayClassName": {
      "description": "GatewayClass name for the Gateway API gateway, e.g. \"gke-l7-regional-external-managed\". Required when using Gateway API (ingressType: \"gateway\").",
      "type": "string"
    },
    "gatewayStaticIpName": {
      "description": "Name of the reserved static IP address for the Gateway, e.g. \"tc-dev-gateway-ip\".",
      "type": "string"
    },
    "gcpManagedCertName": {
      "description": "Name of the GCP Certificate Manager certificate for the Gateway, e.g. \"tc-dev-gw-cert\".",
      "type": "string"
    },
    "github": {
      "additionalProperties": false,
      "properties": {
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "bot_username": {
          "type": "string"
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "github_app_id": {
          "type": "string"
        },
        "github_private_pem": {
          "type": "string"
        },
        "keep_alive_timeout_seconds": {
          "type": "number"
        },
        "level": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "sync": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "worker": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web",
            "worker",
            "sync"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "provisioner_id": {
          "type": "string"
        },
        "pulse_password": {
          "type": "string"
        },
        "pulse_username": {
          "type": "string"
        },
        "read_db_url": {
          "type": "string"
        },
        "taskcluster_access_token": {
          "type": "string"
        },
        "taskcluster_client_id": {
          "type": "string"
        },
        "webhook_secret": {
          "type": "string"
        },
        "worker_type": {
          "type": "string"
        },
        "write_db_url": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "bot_username",
        "taskcluster_client_id",
        "taskcluster_access_token",
        "github_private_pem",
        "github_app_id",
        "webhook_secret",
        "read_db_url",
        "write_db_url",
        "pulse_username",
        "pulse_password"
      ],
      "title": "Configuration options for github",
      "type": "object"
    },
    "hooks": {
      "additionalProperties": false,
      "properties": {
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "azure_crypto_key": {
          "type": "string"
        },
        "db_crypto_keys": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "influx_connection": {
          "type": "string"
        },
        "keep_alive_timeout_seconds": {
          "type": "number"
        },
        "level": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "expires": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "listeners": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "scheduler": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web",
            "scheduler",
            "listeners",
            "expires"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "pulse_password": {
          "type": "string"
        },
        "pulse_username": {
          "type": "string"
        },
        "read_db_url": {
          "type": "string"
        },
        "taskcluster_access_token": {
          "type": "string"
        },
        "taskcluster_client_id": {
          "type": "string"
        },
        "write_db_url": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "read_db_url",
        "write_db_url",
        "taskcluster_client_id",
        "taskcluster_access_token",
        "pulse_username",
        "pulse_password"
      ],
      "title": "Configuration options for hooks",
      "type": "object"
    },
    "imagePullSecret": {
      "description": "Secret name with docker credentials for private registry",
      "type": "string"
    },
    "index": {
      "additionalProperties": false,
      "properties": {
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "keep_alive_timeout_seconds": {
          "type": "number"
        },
        "level": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "expire": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "handlers": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web",
            "handlers",
            "expire"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "pulse_password": {
          "type": "string"
        },
        "pulse_username": {
          "type": "string"
        },
        "read_db_url": {
          "type": "string"
        },
        "taskcluster_access_token": {
          "type": "string"
        },
        "taskcluster_client_id": {
          "type": "string"
        },
        "write_db_url": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "read_db_url",
        "write_db_url",
        "taskcluster_client_id",
        "taskcluster_access_token",
        "pulse_username",
        "pulse_password"
      ],
      "title": "Configuration options for index",
      "type": "object"
    },
    "ingressCertName": {
      "description": "A google certificate name that the ingress can use to set up tls.",
      "type": "string"
    },
    "ingressStaticIpName": {
      "description": "A google static ip object that the ingress can use to maintain the same ip address.",
      "type": "string"
    },
    "ingressTlsSecretName": {
      "description": "Name of the secret where cert is stored, i.e. \"dev-cert\". This can be provisioned manually or automatically, by using cert-manager",
      "type": "string"
    },
    "ingressType": {
      "description": "Allows to use non-GLB ingress types: \"nginx\" for ingress-nginx, or \"gateway\" for Gateway API",
      "type": "string"
    },
    "meta": {
      "additionalProperties": true,
      "description": "Metadata about a deployment. This is not interpreted by Helm and can be used to store arbitrary metadata\nabout the configuration for use by other tooling.  It is automatically generated by `yarn dev:init`.",
      "type": "object"
    },
    "newRelic": {
      "additionalProperties": {
        "type": "string"
      },
      "description": "If present, configuration for New Relic to be used by all services.  The properties and values of this\nobject are environment variables as given in\nhttps://docs.newrelic.com/docs/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration\nIf omitted, the New Relic library will not be loaded.",
      "propertyNames": {
        "pattern": "^NEW_RELIC_[A-Z0-9_]*$"
      },
      "type": "object"
    },
    "nodeEnv": {
      "description": "You almost certainly want \"production\" here.",
      "type": "string"
    },
    "notify": {
      "additionalProperties": false,
      "properties": {
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "aws_access_key_id": {
          "type": "string"
        },
        "aws_region": {
          "type": "string"
        },
        "aws_secret_access_key": {
          "type": "string"
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "email_blacklist": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "email_source_address": {
          "type": "string"
        },
        "keep_alive_timeout_seconds": {
          "type": "number"
        },
        "level": {
          "type": "string"
        },
        "matrix_access_token": {
          "type": "string"
        },
        "matrix_base_url": {
          "type": "string"
        },
        "matrix_user_id": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "handler": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web",
            "handler"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "pulse_password": {
          "type": "string"
        },
        "pulse_username": {
          "type": "string"
        },
        "read_db_url": {
          "type": "string"
        },
        "slack_access_token": {
          "type": "string"
        },
        "slack_api_url": {
          "type": "string"
        },
        "taskcluster_access_token": {
          "type": "string"
        },
        "taskcluster_client_id": {
          "type": "string"
        },
        "write_db_url": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "email_source_address",
        "taskcluster_client_id",
        "taskcluster_access_token",
        "read_db_url",
        "write_db_url",
        "aws_access_key_id",
        "aws_secret_access_key",
        "pulse_username",
        "pulse_password"
      ],
      "title": "Configuration options for notify",
      "type": "object"
    },
    "object": {
      "additionalProperties": false,
      "properties": {
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "backend_map": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "backends": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "db_crypto_keys": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "keep_alive_timeout_seconds": {
          "type": "number"
        },
        "level": {
          "type": "string"
        },
        "middleware": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "expire": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web",
            "expire"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "read_db_url": {
          "type": "string"
        },
        "taskcluster_access_token": {
          "type": "string"
        },
        "taskcluster_client_id": {
          "type": "string"
        },
        "write_db_url": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "taskcluster_client_id",
        "taskcluster_access_token",
        "read_db_url",
        "write_db_url"
      ],
      "title": "Configuration options for object",
      "type": "object"
    },
    "prometheus": {
      "additionalProperties": false,
      "description": "Prometheus configuration\nPodMonitoring resource will be created if prometheus.enabled is true",
      "properties": {
        "enabled": {
          "description": "Enable PodMonitoring",
          "type": "boolean"
        },
        "prefix": {
          "description": "Optional prefix for all metrics",
          "type": "string"
        },
        "push": {
          "additionalProperties": false,
          "properties": {
            "gateway": {
              "description": "URL to push metrics to, i.e. http://pushgateway:9091",
              "type": "string"
            },
            "groupings": {
              "description": "Groupings to use when pushing metrics",
              "type": "object"
            },
            "jobName": {
              "description": "Job name to use when pushing metrics",
              "type": "string"
            }
          },
          "type": "object"
        },
        "server": {
          "additionalProperties": false,
          "description": "Metrics server configuration, one that will serve /metrics endpoint",
          "properties": {
            "ip": {
              "description": "IP address to listen on, default is 127.0.0.1",
              "type": "string"
            },
            "port": {
              "description": "Port to listen on, default is 9100",
              "type": "integer"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "pulseAmqps": {
      "description": "whether to use amqps (TLS) to communicate with pulse (default true)",
      "type": "boolean"
    },
    "pulseHostname": {
      "description": "A rabbitmq cluster",
      "type": "string"
    },
    "pulseVhost": {
      "description": "The vhost this deployment will use on the rabbitmq cluster",
      "type": "string"
    },
    "purge_cache": {
      "additionalProperties": false,
      "properties": {
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "keep_alive_timeout_seconds": {
          "type": "number"
        },
        "level": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "expireCachePurges": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web",
            "expireCachePurges"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "read_db_url": {
          "type": "string"
        },
        "taskcluster_access_token": {
          "type": "string"
        },
        "taskcluster_client_id": {
          "type": "string"
        },
        "write_db_url": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "read_db_url",
        "write_db_url",
        "taskcluster_client_id",
        "taskcluster_access_token"
      ],
      "title": "Configuration options for purge-cache",
      "type": "object"
    },
    "queue": {
      "additionalProperties": false,
      "properties": {
        "artifact_region": {
          "type": "string"
        },
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "aws_access_key_id": {
          "type": "string"
        },
        "aws_endpoint": {
          "type": "string"
        },
        "aws_force_path_style": {
          "type": "boolean"
        },
        "aws_secret_access_key": {
          "type": "string"
        },
        "aws_skip_cors_configuration": {
          "type": "boolean"
        },
        "aws_use_bulk_delete": {
          "type": "boolean"
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "expire_artifacts_batch_size": {
          "type": "number"
        },
        "keep_alive_timeout_seconds": {
          "type": "number"
        },
        "level": {
          "type": "string"
        },
        "max_task_deadline_days": {
          "type": "number"
        },
        "private_artifact_bucket": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "claimResolver": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "deadlineResolver": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "dependencyResolver": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "expireArtifacts": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "expireQueueMessages": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "expireTask": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "expireTaskDependency": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "expireTaskGroups": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "expireWorkerInfo": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "workerMetrics": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "workerRemovedResolver": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web",
            "claimResolver",
            "workerRemovedResolver",
            "deadlineResolver",
            "dependencyResolver",
            "expireArtifacts",
            "expireTask",
            "expireTaskGroups",
            "expireTaskDependency",
            "expireQueueMessages",
            "expireWorkerInfo",
            "workerMetrics"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "public_artifact_bucket": {
          "type": "string"
        },
        "public_artifact_bucket_cdn": {
          "type": "string"
        },
        "pulse_password": {
          "type": "string"
        },
        "pulse_username": {
          "type": "string"
        },
        "read_db_url": {
          "type": "string"
        },
        "sign_public_artifact_urls": {
          "type": "boolean"
        },
        "task_cache_max_size": {
          "type": "number"
        },
        "task_claim_timeout": {
          "type": "number"
        },
        "task_max_dependencies": {
          "type": "number"
        },
        "taskcluster_access_token": {
          "type": "string"
        },
        "taskcluster_client_id": {
          "type": "string"
        },
        "worker_info_update_frequency": {
          "type": "string"
        },
        "write_db_url": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "public_artifact_bucket",
        "private_artifact_bucket",
        "taskcluster_client_id",
        "taskcluster_access_token",
        "read_db_url",
        "write_db_url",
        "pulse_username",
        "pulse_password",
        "aws_access_key_id",
        "aws_secret_access_key",
        "artifact_region"
      ],
      "title": "Configuration options for queue",
      "type": "object"
    },
    "references": {
      "additionalProperties": false,
      "properties": {
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web"
          ],
          "title": "Process settings for this service",
          "type": "object"
        }
      },
      "required": [
        "procs"
      ],
      "title": "Configuration options for references",
      "type": "object"
    },
    "rootUrl": {
      "description": "The url pointing to your deployment's ingress.",
      "format": "uri",
      "type": "string"
    },
    "secrets": {
      "additionalProperties": false,
      "properties": {
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "azure_crypto_key": {
          "type": "string"
        },
        "db_crypto_keys": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "keep_alive_timeout_seconds": {
          "type": "number"
        },
        "level": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "expire": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web",
            "expire"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "read_db_url": {
          "type": "string"
        },
        "taskcluster_access_token": {
          "type": "string"
        },
        "taskcluster_client_id": {
          "type": "string"
        },
        "write_db_url": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "taskcluster_client_id",
        "taskcluster_access_token",
        "read_db_url",
        "write_db_url"
      ],
      "title": "Configuration options for secrets",
      "type": "object"
    },
    "skipResourceTypes": {
      "description": "A list of kubernetes resource types to skip creating.  Useful when some resources are being managed externally.",
      "items": {
        "enum": [
          "configmap",
          "secret",
          "ingress",
          "gateway",
          "httproute",
          "healthcheckpolicy",
          "serviceaccount",
          "podmonitoring"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "trustProxy": {
      "description": "If true, only the external ingress needs to use ssl. connections to services are allowed however.",
      "type": "boolean"
    },
    "ui": {
      "additionalProperties": false,
      "properties": {
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "banner_message": {
          "type": "string"
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "graphql_endpoint": {
          "type": "string"
        },
        "graphql_subscription_endpoint": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "site_specific": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "ui_login_strategy_names": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "graphql_subscription_endpoint",
        "graphql_endpoint",
        "ui_login_strategy_names"
      ],
      "title": "Configuration options for ui",
      "type": "object"
    },
    "useKubernetesDnsServiceDiscovery": {
      "description": "If true, requests will not pass back in through load balancer to pass between services.",
      "type": "boolean"
    },
    "web_server": {
      "additionalProperties": false,
      "properties": {
        "additional_allowed_cors_origin": {
          "type": "string"
        },
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "azure_crypto_key": {
          "type": "string"
        },
        "db_crypto_keys": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "keep_alive_timeout_seconds": {
          "type": "number"
        },
        "level": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "cleanup_expire_access_tokens": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "cleanup_expire_auth_codes": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "cleanup_session_storage": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "scanner": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web",
            "scanner",
            "cleanup_session_storage",
            "cleanup_expire_auth_codes",
            "cleanup_expire_access_tokens"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "public_url": {
          "type": "string"
        },
        "pulse_password": {
          "type": "string"
        },
        "pulse_username": {
          "type": "string"
        },
        "read_db_url": {
          "type": "string"
        },
        "registered_clients": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "session_secret": {
          "type": "string"
        },
        "taskcluster_access_token": {
          "type": "string"
        },
        "taskcluster_client_id": {
          "type": "string"
        },
        "ui_login_strategies": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "write_db_url": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "public_url",
        "additional_allowed_cors_origin",
        "taskcluster_client_id",
        "taskcluster_access_token",
        "read_db_url",
        "write_db_url",
        "pulse_username",
        "pulse_password",
        "registered_clients",
        "ui_login_strategies",
        "session_secret"
      ],
      "title": "Configuration options for web-server",
      "type": "object"
    },
    "worker_manager": {
      "additionalProperties": false,
      "properties": {
        "autoscaling": {
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "default": false,
              "description": "Whether to enable autoscaling for this service",
              "type": "boolean"
            },
            "maxReplicas": {
              "default": 100,
              "description": "Maximum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "minReplicas": {
              "default": 1,
              "description": "Minimum number of replicas",
              "minimum": 1,
              "type": "integer"
            },
            "targetCPUUtilizationPercentage": {
              "default": 80,
              "description": "Target CPU utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "targetMemoryUtilizationPercentage": {
              "default": 80,
              "description": "Target memory utilization percentage",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "enabled",
            "minReplicas",
            "maxReplicas",
            "targetCPUUtilizationPercentage"
          ],
          "title": "Autoscaling configuration for this service",
          "type": "object"
        },
        "db_crypto_keys": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "debug": {
          "title": "node debug env var",
          "type": "string"
        },
        "keep_alive_timeout_seconds": {
          "type": "number"
        },
        "level": {
          "type": "string"
        },
        "procs": {
          "additionalProperties": false,
          "properties": {
            "expire_errors": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "expire_launch_configs": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "expire_worker_pools": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "expire_workers": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                }
              },
              "required": [
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "provisioner": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "web": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "workerscanner": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            },
            "workerscanner_azure": {
              "additionalProperties": false,
              "properties": {
                "cpu": {
                  "type": "string"
                },
                "memory": {
                  "type": "string"
                },
                "metrics": {
                  "type": "boolean"
                },
                "replicas": {
                  "type": "integer"
                }
              },
              "required": [
                "replicas",
                "memory",
                "cpu"
              ],
              "type": "object"
            }
          },
          "required": [
            "web",
            "provisioner",
            "workerscanner",
            "workerscanner_azure",
            "expire_workers",
            "expire_worker_pools",
            "expire_launch_configs",
            "expire_errors"
          ],
          "title": "Process settings for this service",
          "type": "object"
        },
        "providers": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "provisioner_iterate_config": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "pulse_password": {
          "type": "string"
        },
        "pulse_username": {
          "type": "string"
        },
        "read_db_url": {
          "type": "string"
        },
        "taskcluster_access_token": {
          "type": "string"
        },
        "taskcluster_client_id": {
          "type": "string"
        },
        "worker_scanner_concurrency": {
          "type": "number"
        },
        "worker_scanner_iterate_config": {
          "oneOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "write_db_url": {
          "type": "string"
        }
      },
      "required": [
        "procs",
        "taskcluster_client_id",
        "taskcluster_access_token",
        "read_db_url",
        "write_db_url",
        "pulse_username",
        "pulse_password",
        "providers"
      ],
      "title": "Configuration options for worker-manager",
      "type": "object"
    }
  },
  "required": [
    "rootUrl",
    "dockerImage",
    "pulseHostname",
    "pulseVhost",
    "forceSSL",
    "trustProxy",
    "nodeEnv",
    "useKubernetesDnsServiceDiscovery",
    "auth",
    "built_in_workers",
    "github",
    "hooks",
    "index",
    "notify",
    "object",
    "purge_cache",
    "queue",
    "secrets",
    "web_server",
    "worker_manager",
    "ui",
    "references"
  ],
  "title": "Taskcluster Configuration Values",
  "type": "object"
}