Method: haControllers.get

Returns all the details of a specific HaController.

HTTP request


GET https://compute.googleapis.com/compute/v1/projects/{project}/regions/{region}/haControllers/{haController}

The URLs use gRPC Transcoding syntax.

Path parameters

Parameters
project

string

Project ID for this request.

region

string

Name of the region for this request.

haController

string

Name of the HaController resource to return.

Request body

The request body must be empty.

Response body

HaController handles failover for a VM Instance.

If successful, the response body contains data with the following structure:

JSON representation
{
  "kind": string,
  "id": string,
  "creationTimestamp": string,
  "name": string,
  "description": string,
  "selfLink": string,
  "selfLinkWithId": string,
  "region": string,
  "zoneConfigurations": {
    string: {
      "reservationAffinity": {
        "consumeReservationType": enum,
        "key": string,
        "values": [
          string
        ]
      },
      "nodeAffinities": [
        {
          "key": string,
          "operator": enum,
          "values": [
            string
          ]
        }
      ]
    },
    ...
  },
  "instanceName": string,
  "status": {
    "primaryZone": string,
    "primaryInstance": string,
    "ongoingFailover": boolean,
    "readyForFailover": boolean,
    "failoverProgress": {
      "failoverTrigger": enum,
      "failoverTriggerTimestamp": string,
      "failoverCompleteTimestamp": string,
      "lastFailoverAttempt": {
        "errors": {
          "errors": [
            {
              "code": string,
              "location": string,
              "message": string,
              "errorDetails": [
                {

                  // The following is a list of mutually exclusive fields. At most one of the
                  // fields will be set in a response:
                  "errorInfo": {
                    "reason": string,
                    "domain": string,
                    "metadatas": {
                      string: string,
                      ...
                    }
                  },
                  "quotaInfo": {
                    "metricName": string,
                    "limitName": string,
                    "dimensions": {
                      string: string,
                      ...
                    },
                    "limit": number,
                    "futureLimit": number,
                    "rolloutStatus": enum
                  },
                  "help": {
                    "links": [
                      {
                        "description": string,
                        "url": string
                      }
                    ]
                  },
                  "localizedMessage": {
                    "locale": string,
                    "message": string
                  }
                  // End of mutually exclusive fields.
                }
              ]
            }
          ]
        },
        "timestamp": string
      },
      "failoverDuration": string
    },
    "lastFailoverInfo": {
      "failoverTrigger": enum,
      "failoverTriggerTimestamp": string,
      "failoverCompleteTimestamp": string,
      "lastFailoverAttempt": {
        "errors": {
          "errors": [
            {
              "code": string,
              "location": string,
              "message": string,
              "errorDetails": [
                {

                  // The following is a list of mutually exclusive fields. At most one of the
                  // fields will be set in a response:
                  "errorInfo": {
                    "reason": string,
                    "domain": string,
                    "metadatas": {
                      string: string,
                      ...
                    }
                  },
                  "quotaInfo": {
                    "metricName": string,
                    "limitName": string,
                    "dimensions": {
                      string: string,
                      ...
                    },
                    "limit": number,
                    "futureLimit": number,
                    "rolloutStatus": enum
                  },
                  "help": {
                    "links": [
                      {
                        "description": string,
                        "url": string
                      }
                    ]
                  },
                  "localizedMessage": {
                    "locale": string,
                    "message": string
                  }
                  // End of mutually exclusive fields.
                }
              ]
            }
          ]
        },
        "timestamp": string
      },
      "failoverDuration": string
    },
    "zoneStatus": {
      string: {
        "isPrimary": boolean,
        "isZoneReady": boolean,
        "lastError": {
          "errors": {
            "errors": [
              {
                "code": string,
                "location": string,
                "message": string,
                "errorDetails": [
                  {
                    "errorInfo": {
                      "reason": string,
                      "domain": string,
                      "metadatas": {
                        string: string,
                        ...
                      }
                    },
                    "quotaInfo": {
                      "metricName": string,
                      "limitName": string,
                      "dimensions": {
                        string: string,
                        ...
                      },
                      "limit": number,
                      "futureLimit": number,
                      "rolloutStatus": enum
                    },
                    "help": {
                      "links": [
                        {
                          "description": string,
                          "url": string
                        }
                      ]
                    },
                    "localizedMessage": {
                      "locale": string,
                      "message": string
                    }
                  }
                ]
              }
            ]
          },
          "timestamp": string
        }
      },
      ...
    }
  },
  "failoverInitiation": enum,
  "networkingAutoConfiguration": {
    "internal": {
      "stackType": enum,
      "ipAddress": string,
      "ipv6Address": string
    }
  },
  "backendServices": [
    string
  ],
  "state": enum
}
Fields
kind

string

Output only. Type of the resource. Always compute#haController for HaControllers.

id

string (uint64 format)

Output only. The unique identifier for the resource. This identifier is defined by the server.

creationTimestamp

string

Output only. Creation timestamp in RFC3339 text format.

name

string

Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.

description

string

An optional description of this resource. Provide this property when you create the resource.

region

string

Output only. URL of the region where the resource resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.

zoneConfigurations[]

map (key: string, value: object)

Map of zone configurations Key: name of the zone Value: ZoneConfiguration

Available from 2026-10-01-preview..

zoneConfigurations[].reservationAffinity

object

Specifies the reservations that the instance can consume from.

zoneConfigurations[].reservationAffinity.consumeReservationType

enum

Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See Consuming reserved instances for examples.

zoneConfigurations[].reservationAffinity.key

string

Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify googleapis.com/reservation-name as the key and specify the name of your reservation as its value.

zoneConfigurations[].reservationAffinity.values[]

string

Corresponds to the label values of a reservation resource. This can be either a name to a reservation in the same project or "projects/different-project/reservations/some-reservation-name" to target a shared reservation in the same zone but in a different project.

zoneConfigurations[].nodeAffinities[]

object

A set of node affinity configurations. Refer to Configuring node affinity for more information. Overrides reservationAffinity.

zoneConfigurations[].nodeAffinities[].key

string

Corresponds to the label key of Node resource.

zoneConfigurations[].nodeAffinities[].operator

enum

Defines the operation of node selection. Valid operators are IN for affinity and NOT_IN for anti-affinity.

zoneConfigurations[].nodeAffinities[].values[]

string

Corresponds to the label values of Node resource.

instanceName

string

Name of the instance that HaController is in charge of. If not specified the HaController's resource name will be used instead. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.

status

object

Output only. Status information for the HaController resource.

Available from 2026-10-01-preview..

status.primaryZone

string

Output only. The name of the zone that is intended to be primary at this moment. Primary zone will be changed at the very beginning of a failover operation. The zone may not be operational in the middle of a failover operation.

status.primaryInstance

string

Output only. The URL to the instance that is intended to be primary at this moment. Primary instance will be changed at the very beginning of a failover operation.

status.ongoingFailover

boolean

Output only. Indicates if the failover is currently in-progress.

status.readyForFailover

boolean

Output only. Indicates if the resource is ready for initiating a failover to the secondary zone.

status.failoverProgress

object

Output only. Contains the details of the ongoing failover. This message is not displayed if failover is NOT in progress.

status.failoverProgress.failoverTrigger

enum

Output only. Indicates if failover has been triggered automatically or manually.

status.failoverProgress.failoverTriggerTimestamp

string (Timestamp format)

Output only. Timestamp of the last failover trigger.

Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".

status.failoverProgress.failoverCompleteTimestamp

string (Timestamp format)

Output only. Timestamp of the failover completion. Filled only if the failover is completed, in lastFailoverInfo.

Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".

status.failoverProgress.lastFailoverAttempt

object

Output only. Contains details of the last failed failover. This field is filled only if the current failover is failing

status.failoverProgress.lastFailoverAttempt.errors

object

Output only. Encountered errors during the last attempt to process failover.

status.failoverProgress.lastFailoverAttempt.errors.errors[]

object

Output only. The array of errors encountered while processing this operation.

status.failoverProgress.lastFailoverAttempt.errors.errors[].code

string

Output only. The error type identifier for this error.

status.failoverProgress.lastFailoverAttempt.errors.errors[].location

string

Output only. Indicates the field in the request that caused the error. This property is optional.

status.failoverProgress.lastFailoverAttempt.errors.errors[].message

string

Output only. An optional, human-readable error message.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[]

object

Output only. An optional list of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].errorInfo

object

Error information containing structured domain, reason, and metadata.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].errorInfo.reason

string

The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of [A-Z][A-Z0-9_]+[A-Z0-9], which represents UPPER_SNAKE_CASE.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].errorInfo.domain

string

The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is "googleapis.com".

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].errorInfo.metadatas

map (key: string, value: string)

Additional structured details about this error.

Keys must match a regular expression of [a-z][a-zA-Z0-9-_]+ but should ideally be lowerCamelCase. Also, they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {"instanceLimit": "100/request"}, should be returned as, {"instanceLimitPerRequest": "100"}, if the client exceeds the number of instances that can be created in a single (batch) request.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo

object

Details about quota limits and metrics when a quota is exceeded.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.metricName

string

The Compute Engine quota metric name.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.limitName

string

The name of the quota limit.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.dimensions

map (key: string, value: string)

The map holding related quota dimensions.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.limit

number

Current effective quota limit. The limit's unit depends on the quota type or metric.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.futureLimit

number

Future quota limit being rolled out. The limit's unit depends on the quota type or metric.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.rolloutStatus

enum

Rollout status of the future quota limit.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].help

object

Links and information to help the user resolve the error.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].help.links[]

object

URL(s) pointing to additional information on handling the current error.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].help.links[].description

string

Describes what the link offers.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].help.links[].url

string

The URL of the link.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].localizedMessage

object

A localized human-readable error message intended for end users.

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].localizedMessage.locale

string

The locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: "en-US", "fr-CH", "es-MX"

status.failoverProgress.lastFailoverAttempt.errors.errors[].errorDetails[].localizedMessage.message

string

The localized error message in the above locale.

status.failoverProgress.lastFailoverAttempt.timestamp

string (Timestamp format)

Output only. Show timestamp only if there is an error. RFC3339 text format.

Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".

status.failoverProgress.failoverDuration

string (Duration format)

Output only. The duration of the last failover.

A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

status.lastFailoverInfo

object

Output only. Contains the details of the last successful failover.

status.lastFailoverInfo.failoverTrigger

enum

Output only. Indicates if failover has been triggered automatically or manually.

status.lastFailoverInfo.failoverTriggerTimestamp

string (Timestamp format)

Output only. Timestamp of the last failover trigger.

Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".

status.lastFailoverInfo.failoverCompleteTimestamp

string (Timestamp format)

Output only. Timestamp of the failover completion. Filled only if the failover is completed, in lastFailoverInfo.

Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".

status.lastFailoverInfo.lastFailoverAttempt

object

Output only. Contains details of the last failed failover. This field is filled only if the current failover is failing

status.lastFailoverInfo.lastFailoverAttempt.errors

object

Output only. Encountered errors during the last attempt to process failover.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[]

object

Output only. The array of errors encountered while processing this operation.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].code

string

Output only. The error type identifier for this error.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].location

string

Output only. Indicates the field in the request that caused the error. This property is optional.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].message

string

Output only. An optional, human-readable error message.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[]

object

Output only. An optional list of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].errorInfo

object

Error information containing structured domain, reason, and metadata.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].errorInfo.reason

string

The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of [A-Z][A-Z0-9_]+[A-Z0-9], which represents UPPER_SNAKE_CASE.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].errorInfo.domain

string

The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is "googleapis.com".

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].errorInfo.metadatas

map (key: string, value: string)

Additional structured details about this error.

Keys must match a regular expression of [a-z][a-zA-Z0-9-_]+ but should ideally be lowerCamelCase. Also, they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {"instanceLimit": "100/request"}, should be returned as, {"instanceLimitPerRequest": "100"}, if the client exceeds the number of instances that can be created in a single (batch) request.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo

object

Details about quota limits and metrics when a quota is exceeded.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.metricName

string

The Compute Engine quota metric name.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.limitName

string

The name of the quota limit.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.dimensions

map (key: string, value: string)

The map holding related quota dimensions.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.limit

number

Current effective quota limit. The limit's unit depends on the quota type or metric.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.futureLimit

number

Future quota limit being rolled out. The limit's unit depends on the quota type or metric.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].quotaInfo.rolloutStatus

enum

Rollout status of the future quota limit.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].help

object

Links and information to help the user resolve the error.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].help.links[]

object

URL(s) pointing to additional information on handling the current error.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].help.links[].description

string

Describes what the link offers.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].help.links[].url

string

The URL of the link.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].localizedMessage

object

A localized human-readable error message intended for end users.

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].localizedMessage.locale

string

The locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: "en-US", "fr-CH", "es-MX"

status.lastFailoverInfo.lastFailoverAttempt.errors.errors[].errorDetails[].localizedMessage.message

string

The localized error message in the above locale.

status.lastFailoverInfo.lastFailoverAttempt.timestamp

string (Timestamp format)

Output only. Show timestamp only if there is an error. RFC3339 text format.

Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".

status.lastFailoverInfo.failoverDuration

string (Duration format)

Output only. The duration of the last failover.

A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

status.zoneStatus[]

map (key: string, value: object)

Output only. Map of zone statuses. Key: name of the zone Value: ZoneStatus

status.zoneStatus[].isPrimary

boolean

Output only. Indicates if the zone is primary at this moment.

status.zoneStatus[].isZoneReady

boolean

Output only. Indicates if the zone is ready for initiating a failover.

status.zoneStatus[].lastError

object

Output only. This field is filled only if the current operation is failing.

status.zoneStatus[].lastError.errors

object

Output only. Encountered errors.

status.zoneStatus[].lastError.errors.errors[]

object

Output only. The array of errors encountered while processing this operation.

status.zoneStatus[].lastError.errors.errors[].code

string

Output only. The error type identifier for this error.

status.zoneStatus[].lastError.errors.errors[].location

string

Output only. Indicates the field in the request that caused the error. This property is optional.

status.zoneStatus[].lastError.errors.errors[].message

string

Output only. An optional, human-readable error message.

status.zoneStatus[].lastError.errors.errors[].errorDetails[]

object

Output only. An optional list of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].errorInfo

object

Error information containing structured domain, reason, and metadata.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].errorInfo.reason

string

The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of [A-Z][A-Z0-9_]+[A-Z0-9], which represents UPPER_SNAKE_CASE.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].errorInfo.domain

string

The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is "googleapis.com".

status.zoneStatus[].lastError.errors.errors[].errorDetails[].errorInfo.metadatas

map (key: string, value: string)

Additional structured details about this error.

Keys must match a regular expression of [a-z][a-zA-Z0-9-_]+ but should ideally be lowerCamelCase. Also, they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {"instanceLimit": "100/request"}, should be returned as, {"instanceLimitPerRequest": "100"}, if the client exceeds the number of instances that can be created in a single (batch) request.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].quotaInfo

object

Details about quota limits and metrics when a quota is exceeded.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].quotaInfo.metricName

string

The Compute Engine quota metric name.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].quotaInfo.limitName

string

The name of the quota limit.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].quotaInfo.dimensions

map (key: string, value: string)

The map holding related quota dimensions.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].quotaInfo.limit

number

Current effective quota limit. The limit's unit depends on the quota type or metric.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].quotaInfo.futureLimit

number

Future quota limit being rolled out. The limit's unit depends on the quota type or metric.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].quotaInfo.rolloutStatus

enum

Rollout status of the future quota limit.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].help

object

Links and information to help the user resolve the error.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].help.links[]

object

URL(s) pointing to additional information on handling the current error.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].help.links[].description

string

Describes what the link offers.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].help.links[].url

string

The URL of the link.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].localizedMessage

object

A localized human-readable error message intended for end users.

status.zoneStatus[].lastError.errors.errors[].errorDetails[].localizedMessage.locale

string

The locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: "en-US", "fr-CH", "es-MX"

status.zoneStatus[].lastError.errors.errors[].errorDetails[].localizedMessage.message

string

The localized error message in the above locale.

status.zoneStatus[].lastError.timestamp

string (Timestamp format)

Output only. Show timestamp only if there is an error. RFC3339 text format.

Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30".

failoverInitiation

enum

Indicates how failover should be initiated.

Available from 2026-10-01-preview..

networkingAutoConfiguration

object

Basic networking configuration. Required backend services and forwarding rules will be automatically created with default parameters.

Available from 2026-10-01-preview..

networkingAutoConfiguration.internal

object

Internal networking configuration

networkingAutoConfiguration.internal.stackType

enum

Determine which IP addresses to automatically create. Field and option naming consistent with NetworkInterface configuration on Instances.

networkingAutoConfiguration.internal.ipAddress

string

Optional. IP addresses will be automatically allocated according to StackType if not provided.

networkingAutoConfiguration.internal.ipv6Address

string

backendServices[]

string

Advanced configuration option. If specified, these Backend Services need to be pre-created.

Currently, only one backend service can be specified, and it must be L4 Internal Load Balancer (ILB).

Available from 2026-10-01-preview..

state

enum

Output only. The current state of the HA Controller.

Available from 2026-10-01-preview..

Authorization scopes

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/compute.readonly
  • https://www.googleapis.com/auth/compute
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Authentication Overview.

IAM Permissions

In addition to any permissions specified on the fields above, authorization requires one or more of the following IAM permissions:

  • compute.haControllers.get

To find predefined roles that contain those permissions, see Compute Engine IAM Roles.