Definitions for @turbot/gcp-appengine

ApiConfigHandler

{
"description": "Google Cloud Endpoints (https://cloud.google.com/endpoints) configuration for API handlers.",
"properties": {
"authFailAction": {
"description": "Action to take when users access resources that require authentication. Defaults to redirect.",
"enum": [
"AUTH_FAIL_ACTION_UNSPECIFIED",
"AUTH_FAIL_ACTION_REDIRECT",
"AUTH_FAIL_ACTION_UNAUTHORIZED"
],
"type": "string"
},
"login": {
"description": "Level of login required to access this resource. Defaults to optional.",
"enum": [
"LOGIN_UNSPECIFIED",
"LOGIN_OPTIONAL",
"LOGIN_ADMIN",
"LOGIN_REQUIRED"
],
"type": "string"
},
"script": {
"description": "Path to the script from the application root directory.",
"type": "string"
},
"securityLevel": {
"description": "Security (HTTPS) enforcement for this URL.",
"enum": [
"SECURE_UNSPECIFIED",
"SECURE_DEFAULT",
"SECURE_NEVER",
"SECURE_OPTIONAL",
"SECURE_ALWAYS"
],
"type": "string"
},
"url": {
"description": "URL to serve the endpoint at.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/ApiConfigHandler",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

ApiEndpointHandler

{
"description": "Uses Google Cloud Endpoints to handle requests.",
"properties": {
"scriptPath": {
"description": "Path to the script from the application root directory.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/ApiEndpointHandler",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

appEngine

{
"allOf": [
{
"$ref": "turbot#/definitions/service"
},
{
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/appEngineName"
},
"state": {
"$ref": "gcp#/definitions/state"
},
"turbot": {
"type": "object",
"properties": {
"akas": {
"type": "array",
"items": {
"$ref": "#/definitions/appEngineAka"
}
},
"title": {
"type": "string"
},
"custom": {
"type": "object",
"properties": {
"gcp": {
"$ref": "gcp#/definitions/gcpMetadata"
}
}
}
}
}
},
"required": [
"name",
"turbot"
],
"additionalProperties": true,
"tests": [
{
"description": "Valid - base test",
"input": {
"name": "projects/932405488407/services/appengine.googleapis.com",
"turbot": {
"akas": [
"gcp://serviceusage.googleapis.com/projects/932405488407/services/appengine.googleapis.com"
],
"title": "App Engine API",
"custom": {
"gcp": {
"projectId": "cse-legolas-2"
}
}
}
}
},
{
"description": "Invalid - name property is missing",
"input": {
"turbot": {
"akas": [
"gcp://serviceusage.googleapis.com/projects/932405488407/services/appengine.googleapis.com"
],
"title": "App Engine API",
"custom": {
"gcp": {
"projectId": "cse-legolas-2"
}
}
}
},
"expected": false
}
]
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/appEngine",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

appEngineAka

{
"type": "string",
"pattern": "^gcp://serviceusage.googleapis.com/projects/[0-9]{12}/services/appengine.googleapis.com",
"tests": [
{
"description": "base",
"input": "gcp://serviceusage.googleapis.com/projects/932405488407/services/appengine.googleapis.com"
},
{
"description": "invalid aka",
"input": "gcp://serviceusage.googleapis.com/projectss/932405488407/services/appengine.googleapis.com",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/appEngineAka",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

appEngineName

{
"type": "string",
"pattern": "^projects/[0-9]{12}/services/appengine.googleapis.com",
"tests": [
{
"input": "projects/932405488407/services/appengine.googleapis.com"
},
{
"description": "invalid - wrong service name",
"input": "projects/932405488407/services/test01",
"expected": false
},
{
"description": "invalid - project id not passed",
"input": "projects//services/appengine.googleapis.com",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/appEngineName",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

appEngineSupportedRegions

{
"type": "array",
"items": {
"$ref": "#/definitions/regionName"
},
"minItems": 1,
"example": [
[
"us-central1",
"us-east1"
]
],
"default": [
"us-west2",
"us-central1",
"us-east1",
"us-east4",
"northamerica-northeast1",
"southamerica-east1",
"europe-west2",
"europe-west1",
"europe-west3",
"asia-south1",
"asia-east2",
"asia-northeast1",
"australia-southeast1"
],
"tests": [
{
"description": "one region",
"input": [
"us-east1"
]
},
{
"description": "all supported regions",
"input": [
"us-west2",
"us-central1",
"us-east1",
"us-east4",
"northamerica-northeast1",
"southamerica-east1",
"europe-west2",
"europe-west1",
"europe-west3",
"asia-south1",
"asia-east2",
"asia-northeast1",
"australia-southeast1"
]
},
{
"description": "invalid - no regions",
"input": [],
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/appEngineSupportedRegions",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

application

{
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/applicationName"
},
"id": {
"$ref": "gcp#/definitions/projectName"
},
"dispatchRules": {
"type": "array"
},
"authDomain": {
"type": "string"
},
"locationId": {
"type": "string"
},
"codeBucket": {
"type": "string"
},
"defaultCookieExpiration": {
"type": "string"
},
"servingStatus": {
"$ref": "gcp#/definitions/applicationServingStatus"
},
"defaultHostname": {
"type": "string"
},
"defaultBucket": {
"type": "string"
},
"iap": {
"type": "object"
},
"gcrDomain": {
"type": "string"
},
"databaseType": {
"$ref": "gcp#/definitions/applicationDatabaseType"
},
"featureSettings": {
"type": "object"
},
"turbot": {
"type": "object",
"properties": {
"akas": {
"type": "array",
"items": {
"$ref": "#/definitions/applicationAka"
}
},
"title": {
"$ref": "#/definitions/applicationName"
},
"custom": {
"type": "object",
"properties": {
"gcp": {
"$ref": "gcp#/definitions/gcpMetadata"
},
"createTimestamp": {
"$ref": "turbot#/definitions/isoTimestamp"
},
"lastUsedTimestamp": {
"$ref": "turbot#/definitions/isoTimestamp"
}
}
}
}
}
},
"additionalProperties": true,
"tests": [
{
"description": "Valid - All properties",
"input": {
"id": "parker-aaa",
"name": "apps/parker-aaa",
"turbot": {
"title": "apps/parker-aaa",
"akas": [
"gcp://appengine.googleapis.com/projects/parker-aaa/apps/parker-aaa"
],
"custom": {
"gcp": {
"projectId": "parker-aaa"
}
}
}
}
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/application",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

Application

{
"description": "An Application resource contains the top-level configuration of an App Engine application.",
"properties": {
"authDomain": {
"description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.",
"type": "string"
},
"codeBucket": {
"description": "Output only. Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly",
"readOnly": true,
"type": "string"
},
"databaseType": {
"description": "The type of the Cloud Firestore or Cloud Datastore database associated with this application.",
"enum": [
"DATABASE_TYPE_UNSPECIFIED",
"CLOUD_DATASTORE",
"CLOUD_FIRESTORE",
"CLOUD_DATASTORE_COMPATIBILITY"
],
"type": "string"
},
"defaultBucket": {
"description": "Output only. Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly",
"readOnly": true,
"type": "string"
},
"defaultCookieExpiration": {
"description": "Cookie expiration policy for this application.",
"type": "string"
},
"defaultHostname": {
"description": "Output only. Hostname used to reach this application, as resolved by App Engine.@OutputOnly",
"readOnly": true,
"type": "string"
},
"dispatchRules": {
"description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported.",
"items": {
"$ref": "#/definitions/UrlDispatchRule"
},
"type": "array"
},
"featureSettings": {
"$ref": "#/definitions/FeatureSettings",
"description": "The feature specific settings to be used in the application."
},
"gcrDomain": {
"description": "Output only. The Google Container Registry domain used for storing managed build docker images for this application.",
"readOnly": true,
"type": "string"
},
"generatedCustomerMetadata": {
"additionalProperties": {
"description": "Properties of the object. Contains field @type with type URL."
},
"description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetApplicationRequest",
"type": "object"
},
"iap": {
"$ref": "#/definitions/IdentityAwareProxy"
},
"id": {
"description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.",
"type": "string"
},
"locationId": {
"description": "Location from which this application runs. Application instances run out of the data centers in the specified location, which is also where all of the application's end user content is stored.Defaults to us-central.View the list of supported locations (https://cloud.google.com/appengine/docs/locations).",
"type": "string"
},
"name": {
"description": "Output only. Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly",
"readOnly": true,
"type": "string"
},
"serviceAccount": {
"description": "The service account associated with the application. This is the app-level default identity. If no identity provided during create version, Admin API will fallback to this one.",
"type": "string"
},
"servingStatus": {
"description": "Serving status of this application.",
"enum": [
"UNSPECIFIED",
"SERVING",
"USER_DISABLED",
"SYSTEM_DISABLED"
],
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/Application",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

applicationAka

{
"type": "string",
"pattern": "^gcp://appengine.googleapis.com/projects/[a-z0-9-]{5,29}[a-z0-9]{1}/apps/[a-z0-9-]{5,29}[a-z0-9]{1}$",
"tests": [
{
"descritpion": "base case",
"input": "gcp://appengine.googleapis.com/projects/aar-a4b6d489/apps/aar-a4b6d489"
},
{
"description": "invalid - invalid id",
"input": "gcp://appengine.googleapis.com/projects/aar-a4b6d489/apps/aar-*/+0",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/applicationAka",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

applicationDatabaseType

{
"type": "string",
"enum": [
"CLOUD_DATASTORE",
"CLOUD_DATASTORE_COMPATIBILITY",
"CLOUD_FIRESTORE",
"DATABASE_TYPE_UNSPECIFIED"
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/applicationDatabaseType",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

applicationName

{
"type": "string",
"pattern": "^apps/[a-z0-9-]{5,29}[a-z0-9]{1}$",
"tests": [
{
"description": "Valid case",
"input": "apps/test-project"
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/applicationName",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

applicationServiceNow

{
"defaultColumns": {
"application_name": {
"column": "enabled",
"path": "data.name",
"label": "Name"
},
"code_bucket": {
"column": "enabled"
},
"default_bucket": {
"column": "enabled"
},
"default_hostname": {
"column": "enabled"
},
"database_type": {
"column": "enabled"
},
"feature_settings": {
"column": "enabled"
},
"id": {
"column": "enabled",
"label": "ID"
},
"location_id": {
"column": "enabled",
"type": "string",
"label": "Location ID"
},
"project": {
"column": "enabled",
"type": "string",
"path": "metadata.gcp.projectId"
},
"service_account": {
"column": "enabled"
},
"serving_status": {
"column": "enabled"
}
},
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/applicationServiceNow",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

applicationServingStatus

{
"type": "string",
"enum": [
"SERVING",
"SYSTEM_DISABLED",
"UNSPECIFIED",
"USER_DISABLED"
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/applicationServingStatus",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

AutomaticScaling

{
"description": "Automatic scaling is based on request rate, response latencies, and other application metrics.",
"properties": {
"coolDownPeriod": {
"description": "The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment.",
"type": "string"
},
"cpuUtilization": {
"$ref": "#/definitions/CpuUtilization",
"description": "Target scaling by CPU usage."
},
"diskUtilization": {
"$ref": "#/definitions/DiskUtilization",
"description": "Target scaling by disk usage."
},
"maxConcurrentRequests": {
"description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.",
"type": "integer"
},
"maxIdleInstances": {
"description": "Maximum number of idle instances that should be maintained for this version.",
"type": "integer"
},
"maxPendingLatency": {
"description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.",
"type": "string"
},
"maxTotalInstances": {
"description": "Maximum number of instances that should be started to handle requests for this version.",
"type": "integer"
},
"minIdleInstances": {
"description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.",
"type": "integer"
},
"minPendingLatency": {
"description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.",
"type": "string"
},
"minTotalInstances": {
"description": "Minimum number of running instances that should be maintained for this version.",
"type": "integer"
},
"networkUtilization": {
"$ref": "#/definitions/NetworkUtilization",
"description": "Target scaling by network usage."
},
"requestUtilization": {
"$ref": "#/definitions/RequestUtilization",
"description": "Target scaling by request utilization."
},
"standardSchedulerSettings": {
"$ref": "#/definitions/StandardSchedulerSettings",
"description": "Scheduler settings for standard environment."
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/AutomaticScaling",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

BasicScaling

{
"description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.",
"properties": {
"idleTimeout": {
"description": "Duration of time after the last request that an instance must wait before the instance is shut down.",
"type": "string"
},
"maxInstances": {
"description": "Maximum number of instances to create for this version.",
"type": "integer"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/BasicScaling",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

CloudBuildOptions

{
"description": "Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly.",
"properties": {
"appYamlPath": {
"description": "Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details.",
"type": "string"
},
"cloudBuildTimeout": {
"description": "The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/CloudBuildOptions",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

ContainerInfo

{
"description": "Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment.",
"properties": {
"image": {
"description": "URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: \"gcr.io/my-project/image:tag\" or \"gcr.io/my-project/image@digest\"",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/ContainerInfo",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

CpuUtilization

{
"description": "Target scaling by CPU usage.",
"properties": {
"aggregationWindowLength": {
"description": "Period of time over which CPU utilization is calculated.",
"type": "string"
},
"targetUtilization": {
"description": "Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.",
"type": "number"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/CpuUtilization",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

Deployment

{
"description": "Code and application artifacts used to deploy a version to App Engine.",
"properties": {
"cloudBuildOptions": {
"$ref": "#/definitions/CloudBuildOptions",
"description": "Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip."
},
"container": {
"$ref": "#/definitions/ContainerInfo",
"description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment."
},
"files": {
"additionalProperties": {
"$ref": "#/definitions/FileInfo"
},
"description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.",
"type": "object"
},
"zip": {
"$ref": "#/definitions/ZipInfo",
"description": "The zip file for this deployment, if this is a zip deployment."
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/Deployment",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

DiskUtilization

{
"description": "Target scaling by disk usage. Only applicable in the App Engine flexible environment.",
"properties": {
"targetReadBytesPerSecond": {
"description": "Target bytes read per second.",
"type": "integer"
},
"targetReadOpsPerSecond": {
"description": "Target ops read per seconds.",
"type": "integer"
},
"targetWriteBytesPerSecond": {
"description": "Target bytes written per second.",
"type": "integer"
},
"targetWriteOpsPerSecond": {
"description": "Target ops written per second.",
"type": "integer"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/DiskUtilization",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

EndpointsApiService

{
"description": "Google Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy. Only valid for App Engine Flexible environment deployments.The fields here refer to the name and configuration ID of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).",
"properties": {
"configId": {
"description": "Endpoints service configuration ID as specified by the Service Management API. For example \"2016-09-19r1\".By default, the rollout strategy for Endpoints is RolloutStrategy.FIXED. This means that Endpoints starts up with a particular configuration ID. When a new configuration is rolled out, Endpoints must be given the new configuration ID. The config_id field is used to give the configuration ID and is required in this case.Endpoints also has a rollout strategy called RolloutStrategy.MANAGED. When using this, Endpoints fetches the latest configuration and does not need the configuration ID. In this case, config_id must be omitted.",
"type": "string"
},
"disableTraceSampling": {
"description": "Enable or disable trace sampling. By default, this is set to false for enabled.",
"type": "boolean"
},
"name": {
"description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API. For example \"myapi.endpoints.myproject.cloud.goog\"",
"type": "string"
},
"rolloutStrategy": {
"description": "Endpoints rollout strategy. If FIXED, config_id must be specified. If MANAGED, config_id must be omitted.",
"enum": [
"UNSPECIFIED_ROLLOUT_STRATEGY",
"FIXED",
"MANAGED"
],
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/EndpointsApiService",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

Entrypoint

{
"description": "The entrypoint for the application.",
"properties": {
"shell": {
"description": "The format should be a shell command that can be fed to bash -c.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/Entrypoint",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

ErrorHandler

{
"description": "Custom static error page to be served when an error occurs.",
"properties": {
"errorCode": {
"description": "Error condition this handler applies to.",
"enum": [
"ERROR_CODE_UNSPECIFIED",
"ERROR_CODE_DEFAULT",
"ERROR_CODE_OVER_QUOTA",
"ERROR_CODE_DOS_API_DENIAL",
"ERROR_CODE_TIMEOUT"
],
"type": "string"
},
"mimeType": {
"description": "MIME type of file. Defaults to text/html.",
"type": "string"
},
"staticFile": {
"description": "Static file content to be served for this error.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/ErrorHandler",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

FeatureSettings

{
"description": "The feature specific settings to be used in the application. These define behaviors that are user configurable.",
"properties": {
"splitHealthChecks": {
"description": "Boolean value indicating if split health checks should be used instead of the legacy health checks. At an app.yaml level, this means defaulting to 'readiness_check' and 'liveness_check' values instead of 'health_check' ones. Once the legacy 'health_check' behavior is deprecated, and this value is always true, this setting can be removed.",
"type": "boolean"
},
"useContainerOptimizedOs": {
"description": "If true, use Container-Optimized OS (https://cloud.google.com/container-optimized-os/) base image for VMs, rather than a base Debian image.",
"type": "boolean"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/FeatureSettings",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

firewallRule

{
"type": "object",
"properties": {
"priority": {
"$ref": "#/definitions/firewallRulePriority"
},
"action": {
"$ref": "#/definitions/firewallRuleAction"
},
"sourceRange": {
"type": "string"
},
"description": {
"type": "string"
},
"turbot": {
"type": "object",
"properties": {
"akas": {
"type": "array",
"items": {
"$ref": "#/definitions/firewallRuleAka"
}
},
"title": {
"type": "string"
},
"custom": {
"type": "object",
"properties": {
"createTimestamp": {
"$ref": "turbot#/definitions/isoTimestamp"
},
"gcp": {
"$ref": "gcp#/definitions/gcpMetadata"
}
}
}
}
}
},
"additionalProperties": true,
"tests": [
{
"description": "All details provided",
"input": {
"priority": 1024,
"turbot": {
"akas": [
"gcp://appengine.googleapis.com/projects/cse-legolas/apps/cse-legolas/firewallRules/1024"
],
"title": 1024,
"custom": {
"appId": "cse-legolas",
"createTimestamp": "2017-03-05T13:58:05.590Z",
"gcp": {
"projectId": "cse-legolas"
}
}
}
}
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/firewallRule",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

FirewallRule

{
"description": "A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.",
"properties": {
"action": {
"description": "The action to take on matched requests.",
"enum": [
"UNSPECIFIED_ACTION",
"ALLOW",
"DENY"
],
"type": "string"
},
"description": {
"description": "An optional string description of this rule. This field has a maximum length of 400 characters.",
"type": "string"
},
"priority": {
"description": "A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.",
"type": "integer"
},
"sourceRange": {
"description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/FirewallRule",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

firewallRuleAction

{
"type": "string",
"enum": [
"UNSPECIFIED_ACTION",
"ALLOW",
"DENY"
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/firewallRuleAction",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

firewallRuleAka

{
"type": "string",
"pattern": "^gcp://appengine.googleapis.com/projects/[a-z0-9-]{3,29}[a-z0-9]{1}/apps/[a-z0-9-]{3,29}[a-z0-9]{1}/firewallRules/([0-9]+)$",
"tests": [
{
"descritpion": "base case",
"input": "gcp://appengine.googleapis.com/projects/cse-legolas-2/apps/cse-legolas-2/firewallRules/1024"
},
{
"description": "invalid - invalid Aka",
"input": "gcp://appengine.googleapis.com/projects/cse-legolas-2/regions/us-east1/cse-legolas-2/services/test01",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/firewallRuleAka",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

firewallRulePriority

{
"type": "number",
"min": 1,
"max": 2147483647,
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/firewallRulePriority",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

firewallRuleServiceNow

{
"defaultColumns": {
"action": {
"column": "enabled"
},
"description": {
"column": "enabled",
"type": "strings"
},
"priority": {
"column": "enabled"
},
"project": {
"column": "enabled",
"type": "string",
"path": "metadata.gcp.projectId"
},
"source_range": {
"column": "enabled"
}
},
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/firewallRuleServiceNow",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

FlexibleRuntimeSettings

{
"description": "Runtime settings for the App Engine flexible environment.",
"properties": {
"operatingSystem": {
"description": "The operating system of the application runtime.",
"type": "string"
},
"runtimeVersion": {
"description": "The runtime version of an App Engine flexible application.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/FlexibleRuntimeSettings",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

HealthCheck

{
"description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.",
"properties": {
"checkInterval": {
"description": "Interval between health checks.",
"type": "string"
},
"disableHealthCheck": {
"description": "Whether to explicitly disable health checks for this instance.",
"type": "boolean"
},
"healthyThreshold": {
"description": "Number of consecutive successful health checks required before receiving traffic.",
"type": "integer"
},
"host": {
"description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"",
"type": "string"
},
"restartThreshold": {
"description": "Number of consecutive failed health checks required before an instance is restarted.",
"type": "integer"
},
"timeout": {
"description": "Time before the health check is considered failed.",
"type": "string"
},
"unhealthyThreshold": {
"description": "Number of consecutive failed health checks required before removing traffic.",
"type": "integer"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/HealthCheck",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

IdentityAwareProxy

{
"description": "Identity-Aware Proxy",
"properties": {
"enabled": {
"description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty.",
"type": "boolean"
},
"oauth2ClientId": {
"description": "OAuth2 client ID to use for the authentication flow.",
"type": "string"
},
"oauth2ClientSecret": {
"description": "OAuth2 client secret to use for the authentication flow.For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly",
"type": "string"
},
"oauth2ClientSecretSha256": {
"description": "Output only. Hex-encoded SHA-256 hash of the client secret.@OutputOnly",
"readOnly": true,
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/IdentityAwareProxy",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

instance

{
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/instanceName"
},
"id": {
"type": "string"
},
"appEngineRelease": {
"type": "string"
},
"availability": {
"$ref": "#/definitions/instanceAvailability"
},
"vmName": {
"type": "string"
},
"vmZoneName": {
"type": "string"
},
"vmId": {
"type": "string"
},
"startTime": {
"type": "string"
},
"requests": {
"type": "integer"
},
"errors": {
"type": "integer"
},
"qps": {
"type": "number"
},
"averageLatency": {
"type": "integer"
},
"memoryUsage": {
"type": "string"
},
"vmStatus": {
"type": "string"
},
"vmDebugEnabled": {
"type": "boolean"
},
"vmIp": {
"type": "string"
},
"vmLiveness": {
"$ref": "#/definitions/instanceVmLiveness"
},
"turbot": {
"type": "object",
"properties": {
"akas": {
"type": "array",
"items": {
"$ref": "#/definitions/instanceAka"
}
},
"title": {
"type": "string"
},
"custom": {
"type": "object",
"properties": {
"createTimestamp": {
"$ref": "turbot#/definitions/isoTimestamp"
},
"gcp": {
"$ref": "gcp#/definitions/gcpMetadata"
}
}
}
}
}
},
"additionalProperties": true,
"tests": [
{
"description": "All details provided",
"input": {
"name": "apps/cse-legolas/services/test01/versions/v1/instances/instance-1",
"turbot": {
"akas": [
"gcp://appengine.googleapis.com/projects/cse-legolas/apps/cse-legolas/services/test01/versions/v1/instances/instance-1"
],
"title": "instance-1",
"custom": {
"appId": "cse-legolas-2",
"serviceId": "test01",
"versionsId": "v1",
"createTimestamp": "2017-03-05T13:58:05.590Z",
"gcp": {
"projectId": "cse-legolas"
}
}
}
}
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/instance",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

Instance

{
"description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.",
"properties": {
"appEngineRelease": {
"description": "Output only. App Engine release this instance is running on.",
"readOnly": true,
"type": "string"
},
"availability": {
"description": "Output only. Availability of the instance.",
"enum": [
"UNSPECIFIED",
"RESIDENT",
"DYNAMIC"
],
"readOnly": true,
"type": "string"
},
"averageLatency": {
"description": "Output only. Average latency (ms) over the last minute.",
"readOnly": true,
"type": "integer"
},
"errors": {
"description": "Output only. Number of errors since this instance was started.",
"readOnly": true,
"type": "integer"
},
"id": {
"description": "Output only. Relative name of the instance within the version. Example: instance-1.",
"readOnly": true,
"type": "string"
},
"memoryUsage": {
"description": "Output only. Total memory in use (bytes).",
"readOnly": true,
"type": "string"
},
"name": {
"description": "Output only. Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.",
"readOnly": true,
"type": "string"
},
"qps": {
"description": "Output only. Average queries per second (QPS) over the last minute.",
"readOnly": true,
"type": "number"
},
"requests": {
"description": "Output only. Number of requests since this instance was started.",
"readOnly": true,
"type": "integer"
},
"startTime": {
"description": "Output only. Time that this instance was started.@OutputOnly",
"readOnly": true,
"type": "string"
},
"vmDebugEnabled": {
"description": "Output only. Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.",
"readOnly": true,
"type": "boolean"
},
"vmId": {
"description": "Output only. Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.",
"readOnly": true,
"type": "string"
},
"vmIp": {
"description": "Output only. The IP address of this instance. Only applicable for instances in App Engine flexible environment.",
"readOnly": true,
"type": "string"
},
"vmLiveness": {
"description": "Output only. The liveness health check of this instance. Only applicable for instances in App Engine flexible environment.",
"enum": [
"LIVENESS_STATE_UNSPECIFIED",
"UNKNOWN",
"HEALTHY",
"UNHEALTHY",
"DRAINING",
"TIMEOUT"
],
"readOnly": true,
"type": "string"
},
"vmName": {
"description": "Output only. Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.",
"readOnly": true,
"type": "string"
},
"vmStatus": {
"description": "Output only. Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.",
"readOnly": true,
"type": "string"
},
"vmZoneName": {
"description": "Output only. Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.",
"readOnly": true,
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/Instance",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

instanceAka

{
"type": "string",
"pattern": "^gcp://appengine.googleapis.com/projects/[a-z0-9-]{3,29}[a-z0-9]{1}/apps/[a-z0-9-]{3,29}[a-z0-9]{1}/services/[a-z][-a-z0-9]{0,39}/versions/[a-z][-a-z0-9]{0,39}/instances/[a-z][-a-z0-9]{0,39}$",
"tests": [
{
"descritpion": "base case",
"input": "gcp://appengine.googleapis.com/projects/cse-legolas-2/apps/cse-legolas-2/services/test01/versions/v1/instances/instance-1"
},
{
"description": "invalid - invalid Aka",
"input": "gcp://appengine.googleapis.com/projects/cse-legolas-2/apps/cse-legolas-2/services//versions/v1/instances/instance-1",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/instanceAka",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

instanceAvailability

{
"type": "string",
"enum": [
"UNSPECIFIED",
"RESIDENT",
"DYNAMIC"
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/instanceAvailability",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

instanceName

{
"type": "string",
"pattern": "^apps/[a-z0-9-]{3,29}[a-z0-9]{1}/services/[a-z][-a-z0-9]{0,39}/versions/[a-z][-a-z0-9]{0,39}/instances/[a-z][-a-z0-9]{0,39}$",
"tests": [
{
"input": "apps/cse-legolas/services/test01/versions/v1/instances/instance-1"
},
{
"description": "invalid case - using underscore character",
"input": "apps/cse-legolas/services/test01/versions/v1/instances/instance_1",
"expected": false
},
{
"description": "invalid case - using special characters other than hypens",
"input": "apps/cse-legolas/services/test01/versions/v1/instances/instance@1",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/instanceName",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

instanceServiceNow

{
"defaultColumns": {
"app_engine_release": {
"column": "enabled"
},
"availability": {
"column": "enabled"
},
"id": {
"column": "enabled",
"label": "ID"
},
"instance_name": {
"column": "enabled",
"label": "Name",
"path": "data.name"
},
"project": {
"column": "enabled",
"type": "string",
"path": "metadata.gcp.projectId"
},
"service_id": {
"column": "enabled",
"label": "Service ID",
"path": "metadata.serviceId"
},
"version_id": {
"column": "enabled",
"label": "Version ID",
"path": "metadata.versionId"
},
"vm_id": {
"column": "enabled",
"label": "VM ID"
},
"vm_ip": {
"column": "enabled",
"label": "VM IP"
},
"vm_name": {
"column": "enabled"
},
"vm_status": {
"column": "enabled"
}
},
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/instanceServiceNow",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

instanceVmLiveness

{
"type": "string",
"enum": [
"LIVENESS_STATE_UNSPECIFIED",
"UNKNOWN",
"HEALTHY",
"UNHEALTHY",
"DRAINING",
"TIMEOUT"
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/instanceVmLiveness",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

Library

{
"description": "Third-party Python runtime library that is required by the application.",
"properties": {
"name": {
"description": "Name of the library. Example: \"django\".",
"type": "string"
},
"version": {
"description": "Version of the library to select, or \"latest\".",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/Library",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

LivenessCheck

{
"description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.",
"properties": {
"checkInterval": {
"description": "Interval between health checks.",
"type": "string"
},
"failureThreshold": {
"description": "Number of consecutive failed checks required before considering the VM unhealthy.",
"type": "integer"
},
"host": {
"description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\"",
"type": "string"
},
"initialDelay": {
"description": "The initial delay before starting to execute the checks.",
"type": "string"
},
"path": {
"description": "The request path.",
"type": "string"
},
"successThreshold": {
"description": "Number of consecutive successful checks required before considering the VM healthy.",
"type": "integer"
},
"timeout": {
"description": "Time before the check is considered failed.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/LivenessCheck",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

ManualScaling

{
"description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.",
"properties": {
"instances": {
"description": "Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.",
"type": "integer"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/ManualScaling",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

Network

{
"description": "Extra network settings. Only applicable in the App Engine flexible environment.",
"properties": {
"forwardedPorts": {
"description": "List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable in the App Engine flexible environment.",
"items": {
"type": "string"
},
"type": "array"
},
"instanceIpMode": {
"description": "The IP mode for instances. Only applicable in the App Engine flexible environment.",
"enum": [
"INSTANCE_IP_MODE_UNSPECIFIED",
"EXTERNAL",
"INTERNAL"
],
"type": "string"
},
"instanceTag": {
"description": "Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment.",
"type": "string"
},
"name": {
"description": "Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.",
"type": "string"
},
"sessionAffinity": {
"description": "Enable session affinity. Only applicable in the App Engine flexible environment.",
"type": "boolean"
},
"subnetworkName": {
"description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network that the instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network that the instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network that the instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/Network",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

NetworkSettings

{
"description": "A NetworkSettings resource is a container for ingress settings for a version or service.",
"properties": {
"ingressTrafficAllowed": {
"description": "The ingress settings for version or service.",
"enum": [
"INGRESS_TRAFFIC_ALLOWED_UNSPECIFIED",
"INGRESS_TRAFFIC_ALLOWED_ALL",
"INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY",
"INGRESS_TRAFFIC_ALLOWED_INTERNAL_AND_LB"
],
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/NetworkSettings",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

NetworkUtilization

{
"description": "Target scaling by network usage. Only applicable in the App Engine flexible environment.",
"properties": {
"targetReceivedBytesPerSecond": {
"description": "Target bytes received per second.",
"type": "integer"
},
"targetReceivedPacketsPerSecond": {
"description": "Target packets received per second.",
"type": "integer"
},
"targetSentBytesPerSecond": {
"description": "Target bytes sent per second.",
"type": "integer"
},
"targetSentPacketsPerSecond": {
"description": "Target packets sent per second.",
"type": "integer"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/NetworkUtilization",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

ReadinessCheck

{
"description": "Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation.",
"properties": {
"appStartTimeout": {
"description": "A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic.",
"type": "string"
},
"checkInterval": {
"description": "Interval between health checks.",
"type": "string"
},
"failureThreshold": {
"description": "Number of consecutive failed checks required before removing traffic.",
"type": "integer"
},
"host": {
"description": "Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\"",
"type": "string"
},
"path": {
"description": "The request path.",
"type": "string"
},
"successThreshold": {
"description": "Number of consecutive successful checks required before receiving traffic.",
"type": "integer"
},
"timeout": {
"description": "Time before the check is considered failed.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/ReadinessCheck",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

regionName

{
"type": "string",
"enum": [
"us-west2",
"us-central1",
"us-east1",
"us-east4",
"northamerica-northeast1",
"southamerica-east1",
"europe-west2",
"europe-west1",
"europe-west3",
"asia-south1",
"asia-east2",
"asia-northeast1",
"australia-southeast1"
],
"tests": [
{
"description": "valid",
"input": "us-east1"
},
{
"description": "invalid - usea1",
"input": "usea1",
"expected": false
},
{
"description": "invalid - au-north-1",
"input": "au-north-1",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/regionName",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

RequestUtilization

{
"description": "Target scaling by request utilization. Only applicable in the App Engine flexible environment.",
"properties": {
"targetConcurrentRequests": {
"description": "Target number of concurrent requests.",
"type": "integer"
},
"targetRequestCountPerSecond": {
"description": "Target requests per second.",
"type": "integer"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/RequestUtilization",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

Resources

{
"description": "Machine resources for a version.",
"properties": {
"cpu": {
"description": "Number of CPU cores needed.",
"type": "number"
},
"diskGb": {
"description": "Disk size (GB) needed.",
"type": "number"
},
"kmsKeyReference": {
"description": "The name of the encryption key that is stored in Google Cloud KMS. Only should be used by Cloud Composer to encrypt the vm disk",
"type": "string"
},
"memoryGb": {
"description": "Memory (GB) needed.",
"type": "number"
},
"volumes": {
"description": "User specified volumes.",
"items": {
"$ref": "#/definitions/Volume"
},
"type": "array"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/Resources",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

ScriptHandler

{
"description": "Executes a script to handle the request that matches the URL pattern.",
"properties": {
"scriptPath": {
"description": "Path to the script from the application root directory.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/ScriptHandler",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

service

{
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/serviceName"
},
"id": {
"type": "string"
},
"split": {
"type": "object"
},
"networkSettings": {
"type": "object"
},
"labels": {
"$ref": "gcp#/definitions/labels"
},
"turbot": {
"type": "object",
"properties": {
"akas": {
"type": "array",
"items": {
"$ref": "#/definitions/serviceAka"
}
},
"tags": {
"$ref": "gcp#/definitions/labels"
},
"title": {
"type": "string"
},
"custom": {
"type": "object",
"properties": {
"createTimestamp": {
"$ref": "turbot#/definitions/isoTimestamp"
},
"gcp": {
"$ref": "gcp#/definitions/gcpMetadata"
}
}
}
}
}
},
"additionalProperties": true,
"tests": [
{
"description": "All details provided",
"input": {
"name": "apps/cse-legolas/services/test01",
"labels": {
"foo": "bar",
"foo1": "bar1"
},
"turbot": {
"akas": [
"gcp://appengine.googleapis.com/projects/cse-legolas/apps/cse-legolas/services/test01"
],
"tags": {
"foo": "bar",
"foo1": "bar1"
},
"title": "test01",
"custom": {
"appId": "cse-legolas",
"createTimestamp": "2017-03-05T13:58:05.590Z",
"gcp": {
"projectId": "cse-legolas"
}
}
}
}
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/service",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

Service

{
"description": "A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle tasks such as backend data analysis or API requests from mobile devices. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.",
"properties": {
"generatedCustomerMetadata": {
"additionalProperties": {
"description": "Properties of the object. Contains field @type with type URL."
},
"description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetServiceRequest",
"type": "object"
},
"id": {
"description": "Relative name of the service within the application. Example: default.@OutputOnly",
"type": "string"
},
"labels": {
"additionalProperties": {
"type": "string"
},
"description": "A set of labels to apply to this service. Labels are key/value pairs that describe the service and all resources that belong to it (e.g., versions). The labels can be used to search and group resources, and are propagated to the usage and billing reports, enabling fine-grain analysis of costs. An example of using labels is to tag resources belonging to different environments (e.g., \"env=prod\", \"env=qa\"). Label keys and values can be no longer than 63 characters and can only contain lowercase letters, numeric characters, underscores, dashes, and international characters. Label keys must start with a lowercase letter or an international character. Each service can have at most 32 labels.",
"type": "object"
},
"name": {
"description": "Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly",
"type": "string"
},
"networkSettings": {
"$ref": "#/definitions/NetworkSettings",
"description": "Ingress settings for this service. Will apply to all versions."
},
"split": {
"$ref": "#/definitions/TrafficSplit",
"description": "Mapping that defines fractional HTTP traffic diversion to different versions within the service."
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/Service",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

serviceAka

{
"type": "string",
"pattern": "^gcp://appengine.googleapis.com/projects/[a-z0-9-]{3,29}[a-z0-9]{1}/apps/[a-z0-9-]{3,29}[a-z0-9]{1}/services/[^/]+",
"tests": [
{
"descritpion": "base case",
"input": "gcp://appengine.googleapis.com/projects/cse-legolas-2/apps/cse-legolas-2/services/test01"
},
{
"description": "invalid - invalid Aka",
"input": "gcp://appengine.googleapis.com/projects/cse-legolas-2/regions/us-east1/cse-legolas-2/services/test01",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/serviceAka",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

serviceName

{
"type": "string",
"pattern": "^apps/[a-z0-9-]{3,29}[a-z0-9]{1}/services/[a-z][-a-z0-9]{0,39}$",
"tests": [
{
"input": "apps/cse-legolas/services/test12387"
},
{
"description": "invalid case - using underscore character",
"input": "apps/cse-legolas/services/test_12387",
"expected": false
},
{
"description": "invalid case - using special characters other than hypens",
"input": "apps/cse-legolas/services/test@12387",
"expected": false
},
{
"description": "invalid - services is not passed",
"input": "apps/cse-legolas//test01",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/serviceName",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

serviceServiceNow

{
"defaultColumns": {
"id": {
"column": "enabled",
"label": "ID"
},
"labels": {
"column": "enabled",
"type": "string",
"size": 1000
},
"network_settings": {
"column": "enabled",
"type": "string",
"size": 1000
},
"project": {
"column": "enabled",
"type": "string",
"path": "metadata.gcp.projectId"
},
"service_name": {
"column": "enabled",
"path": "data.name"
},
"split": {
"column": "enabled",
"type": "string",
"size": 1000
}
},
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/serviceServiceNow",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

StandardSchedulerSettings

{
"description": "Scheduler settings for standard environment.",
"properties": {
"maxInstances": {
"description": "Maximum number of instances to run for this version. Set to zero to disable max_instances configuration.",
"type": "integer"
},
"minInstances": {
"description": "Minimum number of instances to run for this version. Set to zero to disable min_instances configuration.",
"type": "integer"
},
"targetCpuUtilization": {
"description": "Target CPU utilization ratio to maintain when scaling.",
"type": "number"
},
"targetThroughputUtilization": {
"description": "Target throughput utilization ratio to maintain when scaling",
"type": "number"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/StandardSchedulerSettings",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

StaticFilesHandler

{
"description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.",
"properties": {
"applicationReadable": {
"description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.",
"type": "boolean"
},
"expiration": {
"description": "Time a static file served by this handler should be cached by web proxies and browsers.",
"type": "string"
},
"httpHeaders": {
"additionalProperties": {
"type": "string"
},
"description": "HTTP headers to use for all responses from these URLs.",
"type": "object"
},
"mimeType": {
"description": "MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.",
"type": "string"
},
"path": {
"description": "Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.",
"type": "string"
},
"requireMatchingFile": {
"description": "Whether this handler should match the request if the file referenced by the handler does not exist.",
"type": "boolean"
},
"uploadPathRegex": {
"description": "Regular expression that matches the file paths for all files that should be referenced by this handler.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/StaticFilesHandler",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

TrafficSplit

{
"description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.",
"properties": {
"allocations": {
"additionalProperties": {
"type": "number"
},
"description": "Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated cannot be deleted until either the service is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.",
"type": "object"
},
"shardBy": {
"description": "Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed.",
"enum": [
"UNSPECIFIED",
"COOKIE",
"IP",
"RANDOM"
],
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/TrafficSplit",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

UrlDispatchRule

{
"description": "Rules to match an HTTP request and dispatch that request to a service.",
"properties": {
"domain": {
"description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\".",
"type": "string"
},
"path": {
"description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.The sum of the lengths of the domain and path may not exceed 100 characters.",
"type": "string"
},
"service": {
"description": "Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/UrlDispatchRule",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

UrlMap

{
"description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.",
"properties": {
"apiEndpoint": {
"$ref": "#/definitions/ApiEndpointHandler",
"description": "Uses API Endpoints to handle requests."
},
"authFailAction": {
"description": "Action to take when users access resources that require authentication. Defaults to redirect.",
"enum": [
"AUTH_FAIL_ACTION_UNSPECIFIED",
"AUTH_FAIL_ACTION_REDIRECT",
"AUTH_FAIL_ACTION_UNAUTHORIZED"
],
"type": "string"
},
"login": {
"description": "Level of login required to access this resource. Not supported for Node.js in the App Engine standard environment.",
"enum": [
"LOGIN_UNSPECIFIED",
"LOGIN_OPTIONAL",
"LOGIN_ADMIN",
"LOGIN_REQUIRED"
],
"type": "string"
},
"redirectHttpResponseCode": {
"description": "30x code to use when performing redirects for the secure field. Defaults to 302.",
"enum": [
"REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED",
"REDIRECT_HTTP_RESPONSE_CODE_301",
"REDIRECT_HTTP_RESPONSE_CODE_302",
"REDIRECT_HTTP_RESPONSE_CODE_303",
"REDIRECT_HTTP_RESPONSE_CODE_307"
],
"type": "string"
},
"script": {
"$ref": "#/definitions/ScriptHandler",
"description": "Executes a script to handle the requests that match this URL pattern. Only the auto value is supported for Node.js in the App Engine standard environment, for example \"script\": \"auto\"."
},
"securityLevel": {
"description": "Security (HTTPS) enforcement for this URL.",
"enum": [
"SECURE_UNSPECIFIED",
"SECURE_DEFAULT",
"SECURE_NEVER",
"SECURE_OPTIONAL",
"SECURE_ALWAYS"
],
"type": "string"
},
"staticFiles": {
"$ref": "#/definitions/StaticFilesHandler",
"description": "Returns the contents of a file, such as an image, as the response."
},
"urlRegex": {
"description": "URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/UrlMap",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

version

{
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/versionName"
},
"id": {
"type": "string"
},
"inboundServices": {
"type": "array"
},
"instanceClass": {
"type": "string"
},
"network": {
"type": "object"
},
"zones": {
"type": "array"
},
"resources": {
"type": "object"
},
"runtime": {
"type": "string"
},
"runtimeChannel": {
"type": "string"
},
"threadsafe": {
"type": "boolean"
},
"vm": {
"type": "boolean"
},
"appEngineApis": {
"type": "boolean"
},
"betaSettings": {
"type": "object"
},
"env": {
"type": "string"
},
"servingStatus": {
"$ref": "#/definitions/versionServingStatus"
},
"createdBy": {
"type": "string"
},
"createTime": {
"$ref": "turbot#/definitions/isoTimestamp"
},
"diskUsageBytes": {
"type": "string"
},
"runtimeApiVersion": {
"type": "string"
},
"runtimeMainExecutablePath": {
"type": "string"
},
"serviceAccount": {
"type": "string"
},
"handlers": {
"type": "array"
},
"errorHandlers": {
"type": "array"
},
"libraries": {
"type": "array"
},
"apiConfig": {
"type": "object"
},
"envVariables": {
"type": "object"
},
"buildEnvVariables": {
"type": "object"
},
"defaultExpiration": {
"type": "string"
},
"healthCheck": {
"type": "object"
},
"readinessCheck": {
"type": "object"
},
"livenessCheck": {
"type": "object"
},
"nobuildFilesRegex": {
"type": "string"
},
"deployment": {
"type": "object"
},
"versionUrl": {
"type": "string"
},
"endpointsApiService": {
"type": "object"
},
"entrypoint": {
"type": "object"
},
"vpcAccessConnector": {
"type": "object"
},
"turbot": {
"type": "object",
"properties": {
"akas": {
"type": "array",
"items": {
"$ref": "#/definitions/versionAka"
}
},
"title": {
"type": "string"
},
"custom": {
"type": "object",
"properties": {
"createTimestamp": {
"$ref": "turbot#/definitions/isoTimestamp"
},
"gcp": {
"$ref": "gcp#/definitions/gcpMetadata"
}
}
}
}
}
},
"additionalProperties": true,
"tests": [
{
"description": "all details provided",
"input": {
"name": "apps/cse-legolas/services/test01/versions/v1",
"id": "v1",
"turbot": {
"akas": [
"gcp://appengine.googleapis.com/projects/cse-legolas/apps/cse-legolas/services/test01/versions/v1"
],
"title": "v1",
"custom": {
"appId": "cse-legolas",
"serviceId": "test01",
"createTimestamp": "2017-03-05T13:58:05.590Z",
"gcp": {
"projectId": "cse-legolas",
"regionName": "us-east1"
}
}
}
}
},
{
"description": "invalid - name property is missing",
"input": {
"turbot": {
"akas": [
"gcp://appengine.googleapis.com/projects/cse-legolas/regions/us-east1/apps/cse-legolas/services/test01/versions/v1"
],
"title": "v1",
"custom": {
"appId": "cse-legolas",
"serviceId": "test01",
"createTimestamp": "2017-03-05T13:58:05.590Z",
"gcp": {
"projectId": "cse-legolas",
"regionName": "us-east1"
}
}
}
},
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/version",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

Version

{
"description": "A Version resource is a specific set of source code and configuration files that are deployed into a service.",
"properties": {
"apiConfig": {
"$ref": "#/definitions/ApiConfigHandler",
"deprecated": true,
"description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/endpoints).Only returned in GET requests if view=FULL is set."
},
"appEngineApis": {
"description": "Allows App Engine second generation runtimes to access the legacy bundled services.",
"type": "boolean"
},
"automaticScaling": {
"$ref": "#/definitions/AutomaticScaling",
"description": "Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic."
},
"basicScaling": {
"$ref": "#/definitions/BasicScaling",
"description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity."
},
"betaSettings": {
"additionalProperties": {
"type": "string"
},
"description": "Metadata settings that are supplied to this version to enable beta runtime features.",
"type": "object"
},
"buildEnvVariables": {
"additionalProperties": {
"type": "string"
},
"description": "Environment variables available to the build environment.Only returned in GET requests if view=FULL is set.",
"type": "object"
},
"createTime": {
"description": "Time that this version was created.@OutputOnly",
"type": "string"
},
"createdBy": {
"description": "Email address of the user who created this version.@OutputOnly",
"type": "string"
},
"defaultExpiration": {
"description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.",
"type": "string"
},
"deployment": {
"$ref": "#/definitions/Deployment",
"description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set."
},
"diskUsageBytes": {
"description": "Total size in bytes of all the files that are included in this version and currently hosted on the App Engine disk.@OutputOnly",
"type": "string"
},
"endpointsApiService": {
"$ref": "#/definitions/EndpointsApiService",
"description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app."
},
"entrypoint": {
"$ref": "#/definitions/Entrypoint",
"description": "The entrypoint for the application."
},
"env": {
"description": "App Engine execution environment for this version.Defaults to standard.",
"type": "string"
},
"envVariables": {
"additionalProperties": {
"type": "string"
},
"description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set.",
"type": "object"
},
"errorHandlers": {
"description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.",
"items": {
"$ref": "#/definitions/ErrorHandler"
},
"type": "array"
},
"flexibleRuntimeSettings": {
"$ref": "#/definitions/FlexibleRuntimeSettings",
"description": "Settings for App Engine flexible runtimes."
},
"generatedCustomerMetadata": {
"additionalProperties": {
"description": "Properties of the object. Contains field @type with type URL."
},
"description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetVersionRequest",
"type": "object"
},
"handlers": {
"description": "An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.",
"items": {
"$ref": "#/definitions/UrlMap"
},
"type": "array"
},
"healthCheck": {
"$ref": "#/definitions/HealthCheck",
"description": "Configures health checking for instances. Unhealthy instances are stopped and replaced with new instances. Only applicable in the App Engine flexible environment."
},
"id": {
"description": "Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".",
"type": "string"
},
"inboundServices": {
"description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.",
"items": {
"enum": [
"INBOUND_SERVICE_UNSPECIFIED",
"INBOUND_SERVICE_MAIL",
"INBOUND_SERVICE_MAIL_BOUNCE",
"INBOUND_SERVICE_XMPP_ERROR",
"INBOUND_SERVICE_XMPP_MESSAGE",
"INBOUND_SERVICE_XMPP_SUBSCRIBE",
"INBOUND_SERVICE_XMPP_PRESENCE",
"INBOUND_SERVICE_CHANNEL_PRESENCE",
"INBOUND_SERVICE_WARMUP"
],
"type": "string"
},
"type": "array"
},
"instanceClass": {
"description": "Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.",
"type": "string"
},
"libraries": {
"description": "Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.",
"items": {
"$ref": "#/definitions/Library"
},
"type": "array"
},
"livenessCheck": {
"$ref": "#/definitions/LivenessCheck",
"description": "Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instances"
},
"manualScaling": {
"$ref": "#/definitions/ManualScaling",
"description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. Manually scaled versions are sometimes referred to as \"backends\"."
},
"name": {
"description": "Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly",
"type": "string"
},
"network": {
"$ref": "#/definitions/Network",
"description": "Extra network settings. Only applicable in the App Engine flexible environment."
},
"nobuildFilesRegex": {
"description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.",
"type": "string"
},
"readinessCheck": {
"$ref": "#/definitions/ReadinessCheck",
"description": "Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation."
},
"resources": {
"$ref": "#/definitions/Resources",
"description": "Machine resources for this version. Only applicable in the App Engine flexible environment."
},
"runtime": {
"description": "Desired runtime. Example: python27.",
"type": "string"
},
"runtimeApiVersion": {
"description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard//config/appref",
"type": "string"
},
"runtimeChannel": {
"description": "The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.",
"type": "string"
},
"runtimeMainExecutablePath": {
"description": "The path or name of the app's main executable.",
"type": "string"
},
"serviceAccount": {
"description": "The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag.",
"type": "string"
},
"servingStatus": {
"description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.",
"enum": [
"SERVING_STATUS_UNSPECIFIED",
"SERVING",
"STOPPED"
],
"type": "string"
},
"threadsafe": {
"description": "Whether multiple requests can be dispatched to this version at once.",
"type": "boolean"
},
"versionUrl": {
"description": "Serving URL for this version. Example: \"https://myversion-dot-myservice-dot-myapp.appspot.com\"@OutputOnly",
"type": "string"
},
"vm": {
"description": "Whether to deploy this version in a container on a virtual machine.",
"type": "boolean"
},
"vpcAccessConnector": {
"$ref": "#/definitions/VpcAccessConnector",
"description": "Enables VPC connectivity for standard apps."
},
"zones": {
"description": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/Version",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

versionAka

{
"type": "string",
"pattern": "^gcp://appengine.googleapis.com/projects/[a-z0-9-]{3,29}[a-z0-9]{1}/apps/[a-z0-9-]{3,29}[a-z0-9]{1}/services/[a-z0-9-]{3,29}[a-z0-9]{1}/versions/[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])$",
"tests": [
{
"descritpion": "base case",
"input": "gcp://appengine.googleapis.com/projects/cse-legolas-2/apps/cse-legolas-2/services/test01/versions/v1"
},
{
"description": "invalid - invalid Aka",
"input": "gcp://appengine.googleapis.com/projects/cse-legolas-2/regions/us-east1/apps/cse-legolas-2/services//versions/v1",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/versionAka",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

versionName

{
"type": "string",
"pattern": "^apps/[a-z0-9-]{3,29}[a-z0-9]{1}/services/[a-z0-9-]{3,29}[a-z0-9]{1}/versions/[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])$",
"tests": [
{
"input": "apps/cse-legolas/services/test01/versions/v1"
},
{
"description": "invalid case - using underscore character",
"input": "apps/cse-legolas/services/test01/versions/ver_761",
"expected": false
},
{
"description": "invalid case - using special characters other than hypens",
"input": "apps/cse-legolas/services/test01/versions/v@1",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/versionName",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

versionServiceNow

{
"defaultColumns": {
"env": {
"column": "enabled"
},
"id": {
"column": "enabled",
"label": "ID"
},
"instance_class": {
"column": "enabled"
},
"network": {
"column": "enabled",
"type": "string",
"size": 1000
},
"project": {
"column": "enabled",
"type": "string",
"path": "metadata.gcp.projectId"
},
"runtime": {
"column": "enabled"
},
"service_id": {
"column": "enabled",
"label": "Service ID",
"path": "metadata.serviceId"
},
"serving_status": {
"column": "enabled"
},
"threadsafe": {
"column": "enabled"
},
"version_name": {
"column": "enabled",
"path": "data.name"
},
"version_url": {
"column": "enabled",
"type": "string",
"label": "Version URL"
}
},
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/versionServiceNow",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

versionServingStatus

{
"type": "string",
"enum": [
"SERVING_STATUS_UNSPECIFIED",
"SERVING",
"STOPPED"
],
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/versionServingStatus",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

Volume

{
"description": "Volumes mounted within the app container. Only applicable in the App Engine flexible environment.",
"properties": {
"name": {
"description": "Unique name for the volume.",
"type": "string"
},
"sizeGb": {
"description": "Volume size in gigabytes.",
"type": "number"
},
"volumeType": {
"description": "Underlying volume type, e.g. 'tmpfs'.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/Volume",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

VpcAccessConnector

{
"description": "VPC access connector specification.",
"properties": {
"egressSetting": {
"description": "The egress setting for the connector, controlling what traffic is diverted through it.",
"enum": [
"EGRESS_SETTING_UNSPECIFIED",
"ALL_TRAFFIC",
"PRIVATE_IP_RANGES"
],
"type": "string"
},
"name": {
"description": "Full Serverless VPC Access Connector name e.g. projects/my-project/locations/us-central1/connectors/c1.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/VpcAccessConnector",
"modUri": "tmod:@turbot/gcp-appengine"
}
}

ZipInfo

{
"description": "The zip file information for a zip deployment.",
"properties": {
"filesCount": {
"description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.",
"type": "integer"
},
"sourceUrl": {
"description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-appengine#/definitions/ZipInfo",
"modUri": "tmod:@turbot/gcp-appengine"
}
}