// Copyright 2025 Google LLC.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Code generated file. DO NOT EDIT.

// Package batch provides access to the Batch API.
//
// For product documentation, see: https://cloud.google.com/batch/
//
// # Library status
//
// These client libraries are officially supported by Google. However, this
// library is considered complete and is in maintenance mode. This means
// that we will address critical bugs and security issues but will not add
// any new features.
//
// When possible, we recommend using our newer
// [Cloud Client Libraries for Go](https://pkg.go.dev/cloud.google.com/go)
// that are still actively being worked and iterated on.
//
// # Creating a client
//
// Usage example:
//
//	import "google.golang.org/api/batch/v1"
//	...
//	ctx := context.Background()
//	batchService, err := batch.NewService(ctx)
//
// In this example, Google Application Default Credentials are used for
// authentication. For information on how to create and obtain Application
// Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
//
// # Other authentication options
//
// To use an API key for authentication (note: some APIs do not support API
// keys), use [google.golang.org/api/option.WithAPIKey]:
//
//	batchService, err := batch.NewService(ctx, option.WithAPIKey("AIza..."))
//
// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth
// flow, use [google.golang.org/api/option.WithTokenSource]:
//
//	config := &oauth2.Config{...}
//	// ...
//	token, err := config.Exchange(ctx, ...)
//	batchService, err := batch.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See [google.golang.org/api/option.ClientOption] for details on options.
package batch // import "google.golang.org/api/batch/v1"

import (
	"bytes"
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"log/slog"
	"net/http"
	"net/url"
	"strconv"
	"strings"

	"github.com/googleapis/gax-go/v2/internallog"
	googleapi "google.golang.org/api/googleapi"
	internal "google.golang.org/api/internal"
	gensupport "google.golang.org/api/internal/gensupport"
	option "google.golang.org/api/option"
	internaloption "google.golang.org/api/option/internaloption"
	htransport "google.golang.org/api/transport/http"
)

// Always reference these packages, just in case the auto-generated code
// below doesn't.
var _ = bytes.NewBuffer
var _ = strconv.Itoa
var _ = fmt.Sprintf
var _ = json.NewDecoder
var _ = io.Copy
var _ = url.Parse
var _ = gensupport.MarshalJSON
var _ = googleapi.Version
var _ = errors.New
var _ = strings.Replace
var _ = context.Canceled
var _ = internaloption.WithDefaultEndpoint
var _ = internal.Version
var _ = internallog.New

const apiId = "batch:v1"
const apiName = "batch"
const apiVersion = "v1"
const basePath = "https://batch.googleapis.com/"
const basePathTemplate = "https://batch.UNIVERSE_DOMAIN/"
const mtlsBasePath = "https://batch.mtls.googleapis.com/"

// OAuth2 scopes used by this API.
const (
	// See, edit, configure, and delete your Google Cloud data and see the email
	// address for your Google Account.
	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
)

// NewService creates a new Service.
func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
	scopesOption := internaloption.WithDefaultScopes(
		"https://www.googleapis.com/auth/cloud-platform",
	)
	// NOTE: prepend, so we don't override user-specified scopes.
	opts = append([]option.ClientOption{scopesOption}, opts...)
	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
	opts = append(opts, internaloption.WithDefaultEndpointTemplate(basePathTemplate))
	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
	opts = append(opts, internaloption.EnableNewAuthLibrary())
	client, endpoint, err := htransport.NewClient(ctx, opts...)
	if err != nil {
		return nil, err
	}
	s := &Service{client: client, BasePath: basePath, logger: internaloption.GetLogger(opts)}
	s.Projects = NewProjectsService(s)
	if err != nil {
		return nil, err
	}
	if endpoint != "" {
		s.BasePath = endpoint
	}
	return s, nil
}

// New creates a new Service. It uses the provided http.Client for requests.
//
// Deprecated: please use NewService instead.
// To provide a custom HTTP client, use option.WithHTTPClient.
// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
func New(client *http.Client) (*Service, error) {
	if client == nil {
		return nil, errors.New("client is nil")
	}
	return NewService(context.Background(), option.WithHTTPClient(client))
}

type Service struct {
	client    *http.Client
	logger    *slog.Logger
	BasePath  string // API endpoint base URL
	UserAgent string // optional additional User-Agent fragment

	Projects *ProjectsService
}

func (s *Service) userAgent() string {
	if s.UserAgent == "" {
		return googleapi.UserAgent
	}
	return googleapi.UserAgent + " " + s.UserAgent
}

func NewProjectsService(s *Service) *ProjectsService {
	rs := &ProjectsService{s: s}
	rs.Locations = NewProjectsLocationsService(s)
	return rs
}

type ProjectsService struct {
	s *Service

	Locations *ProjectsLocationsService
}

func NewProjectsLocationsService(s *Service) *ProjectsLocationsService {
	rs := &ProjectsLocationsService{s: s}
	rs.Jobs = NewProjectsLocationsJobsService(s)
	rs.Operations = NewProjectsLocationsOperationsService(s)
	rs.State = NewProjectsLocationsStateService(s)
	return rs
}

type ProjectsLocationsService struct {
	s *Service

	Jobs *ProjectsLocationsJobsService

	Operations *ProjectsLocationsOperationsService

	State *ProjectsLocationsStateService
}

func NewProjectsLocationsJobsService(s *Service) *ProjectsLocationsJobsService {
	rs := &ProjectsLocationsJobsService{s: s}
	rs.TaskGroups = NewProjectsLocationsJobsTaskGroupsService(s)
	return rs
}

type ProjectsLocationsJobsService struct {
	s *Service

	TaskGroups *ProjectsLocationsJobsTaskGroupsService
}

func NewProjectsLocationsJobsTaskGroupsService(s *Service) *ProjectsLocationsJobsTaskGroupsService {
	rs := &ProjectsLocationsJobsTaskGroupsService{s: s}
	rs.Tasks = NewProjectsLocationsJobsTaskGroupsTasksService(s)
	return rs
}

type ProjectsLocationsJobsTaskGroupsService struct {
	s *Service

	Tasks *ProjectsLocationsJobsTaskGroupsTasksService
}

func NewProjectsLocationsJobsTaskGroupsTasksService(s *Service) *ProjectsLocationsJobsTaskGroupsTasksService {
	rs := &ProjectsLocationsJobsTaskGroupsTasksService{s: s}
	return rs
}

type ProjectsLocationsJobsTaskGroupsTasksService struct {
	s *Service
}

func NewProjectsLocationsOperationsService(s *Service) *ProjectsLocationsOperationsService {
	rs := &ProjectsLocationsOperationsService{s: s}
	return rs
}

type ProjectsLocationsOperationsService struct {
	s *Service
}

func NewProjectsLocationsStateService(s *Service) *ProjectsLocationsStateService {
	rs := &ProjectsLocationsStateService{s: s}
	return rs
}

type ProjectsLocationsStateService struct {
	s *Service
}

// Accelerator: Accelerator describes Compute Engine accelerators to be
// attached to the VM.
type Accelerator struct {
	// Count: The number of accelerators of this type.
	Count int64 `json:"count,omitempty,string"`
	// DriverVersion: Optional. The NVIDIA GPU driver version that should be
	// installed for this type. You can define the specific driver version such as
	// "470.103.01", following the driver version requirements in
	// https://cloud.google.com/compute/docs/gpus/install-drivers-gpu#minimum-driver.
	// Batch will install the specific accelerator driver if qualified.
	DriverVersion string `json:"driverVersion,omitempty"`
	// InstallGpuDrivers: Deprecated: please use instances[0].install_gpu_drivers
	// instead.
	InstallGpuDrivers bool `json:"installGpuDrivers,omitempty"`
	// Type: The accelerator type. For example, "nvidia-tesla-t4". See `gcloud
	// compute accelerator-types list`.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Count") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Accelerator) MarshalJSON() ([]byte, error) {
	type NoMethod Accelerator
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ActionCondition: Conditions for actions to deal with task failures.
type ActionCondition struct {
	// ExitCodes: Exit codes of a task execution. If there are more than 1 exit
	// codes, when task executes with any of the exit code in the list, the
	// condition is met and the action will be executed.
	ExitCodes []int64 `json:"exitCodes,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ExitCodes") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ExitCodes") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ActionCondition) MarshalJSON() ([]byte, error) {
	type NoMethod ActionCondition
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentContainer: Container runnable representation on the agent side.
type AgentContainer struct {
	// Commands: Overrides the `CMD` specified in the container. If there is an
	// ENTRYPOINT (either in the container image or with the entrypoint field
	// below) then commands are appended as arguments to the ENTRYPOINT.
	Commands []string `json:"commands,omitempty"`
	// Entrypoint: Overrides the `ENTRYPOINT` specified in the container.
	Entrypoint string `json:"entrypoint,omitempty"`
	// ImageUri: The URI to pull the container image from.
	ImageUri string `json:"imageUri,omitempty"`
	// Options: Arbitrary additional options to include in the "docker run" command
	// when running this container, e.g. "--network host".
	Options string `json:"options,omitempty"`
	// Volumes: Volumes to mount (bind mount) from the host machine files or
	// directories into the container, formatted to match docker run's --volume
	// option, e.g. /foo:/bar, or /foo:/bar:ro
	Volumes []string `json:"volumes,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Commands") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Commands") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentContainer) MarshalJSON() ([]byte, error) {
	type NoMethod AgentContainer
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentEnvironment: AgentEnvironment is the Environment representation between
// Agent and CLH communication. The environment is used in both task level and
// agent level.
type AgentEnvironment struct {
	// EncryptedVariables: An encrypted JSON dictionary where the key/value pairs
	// correspond to environment variable names and their values.
	EncryptedVariables *AgentKMSEnvMap `json:"encryptedVariables,omitempty"`
	// SecretVariables: A map of environment variable names to Secret Manager
	// secret names. The VM will access the named secrets to set the value of each
	// environment variable.
	SecretVariables map[string]string `json:"secretVariables,omitempty"`
	// Variables: A map of environment variable names to values.
	Variables map[string]string `json:"variables,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EncryptedVariables") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EncryptedVariables") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentEnvironment) MarshalJSON() ([]byte, error) {
	type NoMethod AgentEnvironment
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentInfo: VM Agent Info.
type AgentInfo struct {
	// JobId: Optional. The assigned Job ID
	JobId string `json:"jobId,omitempty"`
	// ReportTime: When the AgentInfo is generated.
	ReportTime string `json:"reportTime,omitempty"`
	// State: Agent state.
	//
	// Possible values:
	//   "AGENT_STATE_UNSPECIFIED" - Unspecified state.
	//   "AGENT_STARTING" - The agent is starting on the VM instance.
	//   "AGENT_RUNNING" - The agent is running. The agent in the RUNNING state can
	// never go back to the STARTING state.
	//   "AGENT_STOPPED" - The agent has stopped, either on request or due to a
	// failure.
	State string `json:"state,omitempty"`
	// TaskGroupId: The assigned task group ID.
	TaskGroupId string `json:"taskGroupId,omitempty"`
	// Tasks: Task Info.
	Tasks []*AgentTaskInfo `json:"tasks,omitempty"`
	// ForceSendFields is a list of field names (e.g. "JobId") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "JobId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AgentInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentKMSEnvMap: AgentKMSEnvMap contains the encrypted key/value pair to be
// used in the environment on the Agent side.
type AgentKMSEnvMap struct {
	// CipherText: The value of the cipherText response from the `encrypt` method.
	CipherText string `json:"cipherText,omitempty"`
	// KeyName: The name of the KMS key that will be used to decrypt the cipher
	// text.
	KeyName string `json:"keyName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CipherText") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CipherText") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentKMSEnvMap) MarshalJSON() ([]byte, error) {
	type NoMethod AgentKMSEnvMap
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentMetadata: VM Agent Metadata.
type AgentMetadata struct {
	// CreationTime: When the VM agent started. Use agent_startup_time instead.
	CreationTime string `json:"creationTime,omitempty"`
	// Creator: Full name of the entity that created this vm. For MIG, this path
	// is: projects/{project}/regions/{region}/InstanceGroupManagers/{igm} The
	// value is retrieved from the vm metadata key of "created-by".
	Creator string `json:"creator,omitempty"`
	// ImageVersion: image version for the VM that this agent is installed on.
	ImageVersion string `json:"imageVersion,omitempty"`
	// Instance: GCP instance name (go/instance-name).
	Instance string `json:"instance,omitempty"`
	// InstanceId: GCP instance ID (go/instance-id).
	InstanceId uint64 `json:"instanceId,omitempty,string"`
	// InstancePreemptionNoticeReceived: If the GCP instance has received
	// preemption notice.
	InstancePreemptionNoticeReceived bool `json:"instancePreemptionNoticeReceived,omitempty"`
	// MachineType: Optional. machine type of the VM
	MachineType string `json:"machineType,omitempty"`
	// OsRelease: parsed contents of /etc/os-release
	OsRelease map[string]string `json:"osRelease,omitempty"`
	// Version: agent binary version running on VM
	Version string `json:"version,omitempty"`
	// Zone: Agent zone.
	Zone string `json:"zone,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreationTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreationTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod AgentMetadata
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentScript: Script runnable representation on the agent side.
type AgentScript struct {
	// Path: Script file path on the host VM. To specify an interpreter, please add
	// a `#!`(also known as shebang line
	// (https://en.wikipedia.org/wiki/Shebang_(Unix))) as the first line of the
	// file.(For example, to execute the script using bash, `#!/bin/bash` should be
	// the first line of the file. To execute the script using`Python3`,
	// `#!/usr/bin/env python3` should be the first line of the file.) Otherwise,
	// the file will by default be executed by `/bin/sh`.
	Path string `json:"path,omitempty"`
	// Text: Shell script text. To specify an interpreter, please add a `#!\n` at
	// the beginning of the text.(For example, to execute the script using bash,
	// `#!/bin/bash\n` should be added. To execute the script using`Python3`,
	// `#!/usr/bin/env python3\n` should be added.) Otherwise, the script will by
	// default be executed by `/bin/sh`.
	Text string `json:"text,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Path") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Path") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentScript) MarshalJSON() ([]byte, error) {
	type NoMethod AgentScript
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentTask: TODO(b/182501497) The message needs to be redefined when the
// Agent API server updates data in storage per the backend design.
type AgentTask struct {
	// AgentTaskSpec: AgentTaskSpec is the taskSpec representation between Agent
	// and CLH communication. This field will replace the TaskSpec field above in
	// future to have a better separation between user-facaing API and internal
	// API.
	AgentTaskSpec *AgentTaskSpec `json:"agentTaskSpec,omitempty"`
	// IntendedState: The intended state of the task.
	//
	// Possible values:
	//   "INTENDED_STATE_UNSPECIFIED" - Unspecified state.
	//   "ASSIGNED" - Assigned state (includes running and finished).
	//   "CANCELLED" - The agent should cancel the execution of this task.
	//   "DELETED" - Delete task from agent storage, stop reporting its state.
	IntendedState string `json:"intendedState,omitempty"`
	// ReachedBarrier: The highest barrier reached by all tasks in the task's
	// TaskGroup.
	ReachedBarrier int64 `json:"reachedBarrier,omitempty,string"`
	// Spec: Task Spec. This field will be replaced by agent_task_spec below in
	// future.
	Spec *TaskSpec `json:"spec,omitempty"`
	// Status: Task status.
	Status *TaskStatus `json:"status,omitempty"`
	// Task: Task name.
	Task string `json:"task,omitempty"`
	// TaskSource: TaskSource represents the source of the task.
	//
	// Possible values:
	//   "TASK_SOURCE_UNSPECIFIED" - Unspecified task source.
	//   "BATCH_INTERNAL" - The AgentTask from this source is generated by Batch
	// server. E.g. all the VMActions are from this source. When Batch Agent
	// execute AgentTask from BATCH_INTERNAL, it will log stdout/err with
	// "batch_agent_logs" log name.
	//   "USER" - The AgentTask from this source is provided by Batch users. When
	// Batch Agent execute AgentTask from USER, it will log stdout/err with
	// "batch_task_logs" log name.
	TaskSource string `json:"taskSource,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AgentTaskSpec") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AgentTaskSpec") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentTask) MarshalJSON() ([]byte, error) {
	type NoMethod AgentTask
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentTaskInfo: Task Info
type AgentTaskInfo struct {
	// Runnable: The highest index of a runnable started by the agent for this
	// task. The runnables are indexed from 1. Value 0 is undefined.
	Runnable int64 `json:"runnable,omitempty,string"`
	// TaskId: ID of the Task
	TaskId string `json:"taskId,omitempty"`
	// TaskStatus: The status of the Task. If we need agent specific fields we
	// should fork the public TaskStatus into an agent specific one. Or add them
	// below.
	TaskStatus *TaskStatus `json:"taskStatus,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Runnable") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Runnable") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentTaskInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AgentTaskInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentTaskLoggingOption: AgentTaskLoggingOption contains the options for the
// logging of the task.
type AgentTaskLoggingOption struct {
	// Labels: Labels to be added to the log entry. Now only cloud logging is
	// supported.
	Labels map[string]string `json:"labels,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Labels") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Labels") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentTaskLoggingOption) MarshalJSON() ([]byte, error) {
	type NoMethod AgentTaskLoggingOption
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentTaskRunnable: AgentTaskRunnable is the Runnable representation between
// Agent and CLH communication.
type AgentTaskRunnable struct {
	// AlwaysRun: By default, after a Runnable fails, no further Runnable are
	// executed. This flag indicates that this Runnable must be run even if the
	// Task has already failed. This is useful for Runnables that copy output files
	// off of the VM or for debugging. The always_run flag does not override the
	// Task's overall max_run_duration. If the max_run_duration has expired then no
	// further Runnables will execute, not even always_run Runnables.
	AlwaysRun bool `json:"alwaysRun,omitempty"`
	// Background: This flag allows a Runnable to continue running in the
	// background while the Task executes subsequent Runnables. This is useful to
	// provide services to other Runnables (or to provide debugging support tools
	// like SSH servers).
	Background bool `json:"background,omitempty"`
	// Container: Container runnable.
	Container *AgentContainer `json:"container,omitempty"`
	// Environment: Environment variables for this Runnable (overrides variables
	// set for the whole Task or TaskGroup).
	Environment *AgentEnvironment `json:"environment,omitempty"`
	// IgnoreExitStatus: Normally, a non-zero exit status causes the Task to fail.
	// This flag allows execution of other Runnables to continue instead.
	IgnoreExitStatus bool `json:"ignoreExitStatus,omitempty"`
	// Script: Script runnable.
	Script *AgentScript `json:"script,omitempty"`
	// Timeout: Timeout for this Runnable.
	Timeout string `json:"timeout,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AlwaysRun") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AlwaysRun") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentTaskRunnable) MarshalJSON() ([]byte, error) {
	type NoMethod AgentTaskRunnable
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentTaskSpec: AgentTaskSpec is the user's TaskSpec representation between
// Agent and CLH communication.
type AgentTaskSpec struct {
	// Environment: Environment variables to set before running the Task.
	Environment *AgentEnvironment `json:"environment,omitempty"`
	// LoggingOption: Logging option for the task.
	LoggingOption *AgentTaskLoggingOption `json:"loggingOption,omitempty"`
	// MaxRunDuration: Maximum duration the task should run before being
	// automatically retried (if enabled) or automatically failed. Format the value
	// of this field as a time limit in seconds followed by `s`—for example,
	// `3600s` for 1 hour. The field accepts any value between 0 and the maximum
	// listed for the `Duration` field type at
	// https://protobuf.dev/reference/protobuf/google.protobuf/#duration; however,
	// the actual maximum run time for a job will be limited to the maximum run
	// time for a job listed at
	// https://cloud.google.com/batch/quotas#max-job-duration.
	MaxRunDuration string `json:"maxRunDuration,omitempty"`
	// Runnables: AgentTaskRunnable is runanbles that will be executed on the
	// agent.
	Runnables []*AgentTaskRunnable `json:"runnables,omitempty"`
	// UserAccount: User account on the VM to run the runnables in the
	// agentTaskSpec. If not set, the runnable will be run under root user.
	UserAccount *AgentTaskUserAccount `json:"userAccount,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Environment") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Environment") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentTaskSpec) MarshalJSON() ([]byte, error) {
	type NoMethod AgentTaskSpec
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentTaskUserAccount: AgentTaskUserAccount contains the information of a
// POSIX account on the guest os which is used to execute the runnables.
type AgentTaskUserAccount struct {
	// Gid: gid id an unique identifier of the POSIX account group corresponding to
	// the user account.
	Gid int64 `json:"gid,omitempty,string"`
	// Uid: uid is an unique identifier of the POSIX account corresponding to the
	// user account.
	Uid int64 `json:"uid,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "Gid") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Gid") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentTaskUserAccount) MarshalJSON() ([]byte, error) {
	type NoMethod AgentTaskUserAccount
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AgentTimingInfo: VM timing information
type AgentTimingInfo struct {
	// AgentStartupTime: Agent startup time
	AgentStartupTime string `json:"agentStartupTime,omitempty"`
	// BootTime: Boot timestamp of the VM OS
	BootTime string `json:"bootTime,omitempty"`
	// ScriptStartupTime: Startup time of the Batch VM script.
	ScriptStartupTime string `json:"scriptStartupTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AgentStartupTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AgentStartupTime") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AgentTimingInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AgentTimingInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AllocationPolicy: A Job's resource allocation policy describes when, where,
// and how compute resources should be allocated for the Job.
type AllocationPolicy struct {
	// Instances: Describe instances that can be created by this AllocationPolicy.
	// Only instances[0] is supported now.
	Instances []*InstancePolicyOrTemplate `json:"instances,omitempty"`
	// Labels: Custom labels to apply to the job and all the Compute Engine
	// resources that both are created by this allocation policy and support
	// labels. Use labels to group and describe the resources they are applied to.
	// Batch automatically applies predefined labels and supports multiple `labels`
	// fields for each job, which each let you apply custom labels to various
	// resources. Label names that start with "goog-" or "google-" are reserved for
	// predefined labels. For more information about labels with Batch, see
	// Organize resources using labels
	// (https://cloud.google.com/batch/docs/organize-resources-using-labels).
	Labels map[string]string `json:"labels,omitempty"`
	// Location: Location where compute resources should be allocated for the Job.
	Location *LocationPolicy `json:"location,omitempty"`
	// Network: The network policy. If you define an instance template in the
	// `InstancePolicyOrTemplate` field, Batch will use the network settings in the
	// instance template instead of this field.
	Network *NetworkPolicy `json:"network,omitempty"`
	// Placement: The placement policy.
	Placement *PlacementPolicy `json:"placement,omitempty"`
	// ServiceAccount: Defines the service account for Batch-created VMs. If
	// omitted, the default Compute Engine service account
	// (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account)
	// is used. Must match the service account specified in any used instance
	// template configured in the Batch job. Includes the following fields: *
	// email: The service account's email address. If not set, the default Compute
	// Engine service account is used. * scopes: Additional OAuth scopes to grant
	// the service account, beyond the default cloud-platform scope. (list of
	// strings)
	ServiceAccount *ServiceAccount `json:"serviceAccount,omitempty"`
	// Tags: Optional. Tags applied to the VM instances. The tags identify valid
	// sources or targets for network firewalls. Each tag must be 1-63 characters
	// long, and comply with RFC1035 (https://www.ietf.org/rfc/rfc1035.txt).
	Tags []string `json:"tags,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Instances") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Instances") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AllocationPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod AllocationPolicy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AttachedDisk: A new or an existing persistent disk (PD) or a local ssd
// attached to a VM instance.
type AttachedDisk struct {
	// DeviceName: Device name that the guest operating system will see. It is used
	// by Runnable.volumes field to mount disks. So please specify the device_name
	// if you want Batch to help mount the disk, and it should match the
	// device_name field in volumes.
	DeviceName string `json:"deviceName,omitempty"`
	// ExistingDisk: Name of an existing PD.
	ExistingDisk string `json:"existingDisk,omitempty"`
	NewDisk      *Disk  `json:"newDisk,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeviceName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DeviceName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AttachedDisk) MarshalJSON() ([]byte, error) {
	type NoMethod AttachedDisk
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Barrier: A barrier runnable automatically blocks the execution of subsequent
// runnables until all the tasks in the task group reach the barrier.
type Barrier struct {
	// Name: Barriers are identified by their index in runnable list. Names are not
	// required, but if present should be an identifier.
	Name string `json:"name,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Barrier) MarshalJSON() ([]byte, error) {
	type NoMethod Barrier
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CancelOperationRequest: The request message for Operations.CancelOperation.
type CancelOperationRequest struct {
}

// CloudLoggingOption: `CloudLoggingOption` contains additional settings for
// Cloud Logging logs generated by Batch job.
type CloudLoggingOption struct {
	// UseGenericTaskMonitoredResource: Optional. Set this field to `true` to
	// change the monitored resource type
	// (https://cloud.google.com/monitoring/api/resources) for Cloud Logging logs
	// generated by this Batch job from the `batch.googleapis.com/Job`
	// (https://cloud.google.com/monitoring/api/resources#tag_batch.googleapis.com/Job)
	// type to the formerly used `generic_task`
	// (https://cloud.google.com/monitoring/api/resources#tag_generic_task) type.
	UseGenericTaskMonitoredResource bool `json:"useGenericTaskMonitoredResource,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "UseGenericTaskMonitoredResource") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "UseGenericTaskMonitoredResource")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CloudLoggingOption) MarshalJSON() ([]byte, error) {
	type NoMethod CloudLoggingOption
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ComputeResource: Compute resource requirements. ComputeResource defines the
// amount of resources required for each task. Make sure your tasks have enough
// resources to successfully run. If you also define the types of resources for
// a job to use with the InstancePolicyOrTemplate
// (https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicyortemplate)
// field, make sure both fields are compatible with each other.
type ComputeResource struct {
	// BootDiskMib: Extra boot disk size in MiB for each task.
	BootDiskMib int64 `json:"bootDiskMib,omitempty,string"`
	// CpuMilli: The milliCPU count. `cpuMilli` defines the amount of CPU resources
	// per task in milliCPU units. For example, `1000` corresponds to 1 vCPU per
	// task. If undefined, the default value is `2000`. If you also define the VM's
	// machine type using the `machineType` in InstancePolicy
	// (https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicy)
	// field or inside the `instanceTemplate` in the InstancePolicyOrTemplate
	// (https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicyortemplate)
	// field, make sure the CPU resources for both fields are compatible with each
	// other and with how many tasks you want to allow to run on the same VM at the
	// same time. For example, if you specify the `n2-standard-2` machine type,
	// which has 2 vCPUs each, you are recommended to set `cpuMilli` no more than
	// `2000`, or you are recommended to run two tasks on the same VM if you set
	// `cpuMilli` to `1000` or less.
	CpuMilli int64 `json:"cpuMilli,omitempty,string"`
	// MemoryMib: Memory in MiB. `memoryMib` defines the amount of memory per task
	// in MiB units. If undefined, the default value is `2000`. If you also define
	// the VM's machine type using the `machineType` in InstancePolicy
	// (https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicy)
	// field or inside the `instanceTemplate` in the InstancePolicyOrTemplate
	// (https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicyortemplate)
	// field, make sure the memory resources for both fields are compatible with
	// each other and with how many tasks you want to allow to run on the same VM
	// at the same time. For example, if you specify the `n2-standard-2` machine
	// type, which has 8 GiB each, you are recommended to set `memoryMib` to no
	// more than `8192`, or you are recommended to run two tasks on the same VM if
	// you set `memoryMib` to `4096` or less.
	MemoryMib int64 `json:"memoryMib,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "BootDiskMib") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BootDiskMib") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ComputeResource) MarshalJSON() ([]byte, error) {
	type NoMethod ComputeResource
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Container: Container runnable.
type Container struct {
	// BlockExternalNetwork: If set to true, external network access to and from
	// container will be blocked, containers that are with block_external_network
	// as true can still communicate with each other, network cannot be specified
	// in the `container.options` field.
	BlockExternalNetwork bool `json:"blockExternalNetwork,omitempty"`
	// Commands: Required for some container images. Overrides the `CMD` specified
	// in the container. If there is an `ENTRYPOINT` (either in the container image
	// or with the `entrypoint` field below) then these commands are appended as
	// arguments to the `ENTRYPOINT`.
	Commands []string `json:"commands,omitempty"`
	// EnableImageStreaming: Optional. If set to true, this container runnable uses
	// Image streaming. Use Image streaming to allow the runnable to initialize
	// without waiting for the entire container image to download, which can
	// significantly reduce startup time for large container images. When
	// `enableImageStreaming` is set to true, the container runtime is containerd
	// (https://containerd.io/) instead of Docker. Additionally, this container
	// runnable only supports the following `container` subfields: `imageUri`,
	// `commands[]`, `entrypoint`, and `volumes[]`; any other `container` subfields
	// are ignored. For more information about the requirements and limitations for
	// using Image streaming with Batch, see the `image-streaming` sample on GitHub
	// (https://github.com/GoogleCloudPlatform/batch-samples/tree/main/api-samples/image-streaming).
	EnableImageStreaming bool `json:"enableImageStreaming,omitempty"`
	// Entrypoint: Required for some container images. Overrides the `ENTRYPOINT`
	// specified in the container.
	Entrypoint string `json:"entrypoint,omitempty"`
	// ImageUri: Required. The URI to pull the container image from.
	ImageUri string `json:"imageUri,omitempty"`
	// Options: Required for some container images. Arbitrary additional options to
	// include in the `docker run` command when running this container—for
	// example, `--network host`. For the `--volume` option, use the `volumes`
	// field for the container.
	Options string `json:"options,omitempty"`
	// Password: Required if the container image is from a private Docker registry.
	// The password to login to the Docker registry that contains the image. For
	// security, it is strongly recommended to specify an encrypted password by
	// using a Secret Manager secret: `projects/*/secrets/*/versions/*`. Warning:
	// If you specify the password using plain text, you risk the password being
	// exposed to any users who can view the job or its logs. To avoid this risk,
	// specify a secret that contains the password instead. Learn more about Secret
	// Manager (https://cloud.google.com/secret-manager/docs/) and using Secret
	// Manager with Batch
	// (https://cloud.google.com/batch/docs/create-run-job-secret-manager).
	Password string `json:"password,omitempty"`
	// Username: Required if the container image is from a private Docker registry.
	// The username to login to the Docker registry that contains the image. You
	// can either specify the username directly by using plain text or specify an
	// encrypted username by using a Secret Manager secret:
	// `projects/*/secrets/*/versions/*`. However, using a secret is recommended
	// for enhanced security. Caution: If you specify the username using plain
	// text, you risk the username being exposed to any users who can view the job
	// or its logs. To avoid this risk, specify a secret that contains the username
	// instead. Learn more about Secret Manager
	// (https://cloud.google.com/secret-manager/docs/) and using Secret Manager
	// with Batch
	// (https://cloud.google.com/batch/docs/create-run-job-secret-manager).
	Username string `json:"username,omitempty"`
	// Volumes: Volumes to mount (bind mount) from the host machine files or
	// directories into the container, formatted to match `--volume` option for the
	// `docker run` command—for example, `/foo:/bar` or `/foo:/bar:ro`. If the
	// `TaskSpec.Volumes` field is specified but this field is not, Batch will
	// mount each volume from the host machine to the container with the same mount
	// path by default. In this case, the default mount option for containers will
	// be read-only (`ro`) for existing persistent disks and read-write (`rw`) for
	// other volume types, regardless of the original mount options specified in
	// `TaskSpec.Volumes`. If you need different mount settings, you can explicitly
	// configure them in this field.
	Volumes []string `json:"volumes,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BlockExternalNetwork") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BlockExternalNetwork") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Container) MarshalJSON() ([]byte, error) {
	type NoMethod Container
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Disk: A new persistent disk or a local ssd. A VM can only have one local SSD
// setting but multiple local SSD partitions. See
// https://cloud.google.com/compute/docs/disks#pdspecs and
// https://cloud.google.com/compute/docs/disks#localssds.
type Disk struct {
	// DiskInterface: Local SSDs are available through both "SCSI" and "NVMe"
	// interfaces. If not indicated, "NVMe" will be the default one for local ssds.
	// This field is ignored for persistent disks as the interface is chosen
	// automatically. See
	// https://cloud.google.com/compute/docs/disks/persistent-disks#choose_an_interface.
	DiskInterface string `json:"diskInterface,omitempty"`
	// Image: URL for a VM image to use as the data source for this disk. For
	// example, the following are all valid URLs: * Specify the image by its family
	// name: projects/{project}/global/images/family/{image_family} * Specify the
	// image version: projects/{project}/global/images/{image_version} You can also
	// use Batch customized image in short names. The following image values are
	// supported for a boot disk: * `batch-debian`: use Batch Debian images. *
	// `batch-cos`: use Batch Container-Optimized images. * `batch-hpc-rocky`: use
	// Batch HPC Rocky Linux images.
	Image string `json:"image,omitempty"`
	// SizeGb: Disk size in GB. **Non-Boot Disk**: If the `type` specifies a
	// persistent disk, this field is ignored if `data_source` is set as `image` or
	// `snapshot`. If the `type` specifies a local SSD, this field should be a
	// multiple of 375 GB, otherwise, the final size will be the next greater
	// multiple of 375 GB. **Boot Disk**: Batch will calculate the boot disk size
	// based on source image and task requirements if you do not speicify the size.
	// If both this field and the `boot_disk_mib` field in task spec's
	// `compute_resource` are defined, Batch will only honor this field. Also, this
	// field should be no smaller than the source disk's size when the
	// `data_source` is set as `snapshot` or `image`. For example, if you set an
	// image as the `data_source` field and the image's default disk size 30 GB,
	// you can only use this field to make the disk larger or equal to 30 GB.
	SizeGb int64 `json:"sizeGb,omitempty,string"`
	// Snapshot: Name of a snapshot used as the data source. Snapshot is not
	// supported as boot disk now.
	Snapshot string `json:"snapshot,omitempty"`
	// Type: Disk type as shown in `gcloud compute disk-types list`. For example,
	// local SSD uses type "local-ssd". Persistent disks and boot disks use
	// "pd-balanced", "pd-extreme", "pd-ssd" or "pd-standard". If not specified,
	// "pd-standard" will be used as the default type for non-boot disks,
	// "pd-balanced" will be used as the default type for boot disks.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DiskInterface") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DiskInterface") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Disk) MarshalJSON() ([]byte, error) {
	type NoMethod Disk
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Empty: A generic empty message that you can re-use to avoid defining
// duplicated empty messages in your APIs. A typical example is to use it as
// the request or the response type of an API method. For instance: service Foo
// { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
type Empty struct {
	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
}

// Environment: An Environment describes a collection of environment variables
// to set when executing Tasks.
type Environment struct {
	// EncryptedVariables: An encrypted JSON dictionary where the key/value pairs
	// correspond to environment variable names and their values.
	EncryptedVariables *KMSEnvMap `json:"encryptedVariables,omitempty"`
	// SecretVariables: A map of environment variable names to Secret Manager
	// secret names. The VM will access the named secrets to set the value of each
	// environment variable.
	SecretVariables map[string]string `json:"secretVariables,omitempty"`
	// Variables: A map of environment variable names to values.
	Variables map[string]string `json:"variables,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EncryptedVariables") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EncryptedVariables") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Environment) MarshalJSON() ([]byte, error) {
	type NoMethod Environment
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GCS: Represents a Google Cloud Storage volume.
type GCS struct {
	// RemotePath: Remote path, either a bucket name or a subdirectory of a bucket,
	// e.g.: bucket_name, bucket_name/subdirectory/
	RemotePath string `json:"remotePath,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RemotePath") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "RemotePath") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GCS) MarshalJSON() ([]byte, error) {
	type NoMethod GCS
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InstancePolicy: InstancePolicy describes an instance type and resources
// attached to each VM created by this InstancePolicy.
type InstancePolicy struct {
	// Accelerators: The accelerators attached to each VM instance.
	Accelerators []*Accelerator `json:"accelerators,omitempty"`
	// BootDisk: Boot disk to be created and attached to each VM by this
	// InstancePolicy. Boot disk will be deleted when the VM is deleted. Batch API
	// now only supports booting from image.
	BootDisk *Disk `json:"bootDisk,omitempty"`
	// Disks: Non-boot disks to be attached for each VM created by this
	// InstancePolicy. New disks will be deleted when the VM is deleted. A non-boot
	// disk is a disk that can be of a device with a file system or a raw storage
	// drive that is not ready for data storage and accessing.
	Disks []*AttachedDisk `json:"disks,omitempty"`
	// MachineType: The Compute Engine machine type.
	MachineType string `json:"machineType,omitempty"`
	// MinCpuPlatform: The minimum CPU platform. See
	// https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform.
	MinCpuPlatform string `json:"minCpuPlatform,omitempty"`
	// ProvisioningModel: The provisioning model.
	//
	// Possible values:
	//   "PROVISIONING_MODEL_UNSPECIFIED" - Unspecified.
	//   "STANDARD" - Standard VM.
	//   "SPOT" - SPOT VM.
	//   "PREEMPTIBLE" - Preemptible VM (PVM). Above SPOT VM is the preferable
	// model for preemptible VM instances: the old preemptible VM model (indicated
	// by this field) is the older model, and has been migrated to use the SPOT
	// model as the underlying technology. This old model will still be supported.
	ProvisioningModel string `json:"provisioningModel,omitempty"`
	// Reservation: Optional. If not specified (default), VMs will consume any
	// applicable reservation. If "NO_RESERVATION" is specified, VMs will not
	// consume any reservation. Otherwise, if specified, VMs will consume only the
	// specified reservation.
	Reservation string `json:"reservation,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Accelerators") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Accelerators") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InstancePolicy) MarshalJSON() ([]byte, error) {
	type NoMethod InstancePolicy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InstancePolicyOrTemplate: InstancePolicyOrTemplate lets you define the type
// of resources to use for this job either with an InstancePolicy or an
// instance template. If undefined, Batch picks the type of VM to use and
// doesn't include optional VM resources such as GPUs and extra disks.
type InstancePolicyOrTemplate struct {
	// BlockProjectSshKeys: Optional. Set this field to `true` if you want Batch to
	// block project-level SSH keys from accessing this job's VMs. Alternatively,
	// you can configure the job to specify a VM instance template that blocks
	// project-level SSH keys. In either case, Batch blocks project-level SSH keys
	// while creating the VMs for this job. Batch allows project-level SSH keys for
	// a job's VMs only if all the following are true: + This field is undefined or
	// set to `false`. + The job's VM instance template (if any) doesn't block
	// project-level SSH keys. Notably, you can override this behavior by manually
	// updating a VM to block or allow project-level SSH keys. For more information
	// about blocking project-level SSH keys, see the Compute Engine documentation:
	// https://cloud.google.com/compute/docs/connect/restrict-ssh-keys#block-keys
	BlockProjectSshKeys bool `json:"blockProjectSshKeys,omitempty"`
	// InstallGpuDrivers: Set this field true if you want Batch to help fetch
	// drivers from a third party location and install them for GPUs specified in
	// `policy.accelerators` or `instance_template` on your behalf. Default is
	// false. For Container-Optimized Image cases, Batch will install the
	// accelerator driver following milestones of
	// https://cloud.google.com/container-optimized-os/docs/release-notes. For non
	// Container-Optimized Image cases, following
	// https://github.com/GoogleCloudPlatform/compute-gpu-installation/blob/main/linux/install_gpu_driver.py.
	InstallGpuDrivers bool `json:"installGpuDrivers,omitempty"`
	// InstallOpsAgent: Optional. Set this field true if you want Batch to install
	// Ops Agent on your behalf. Default is false.
	InstallOpsAgent bool `json:"installOpsAgent,omitempty"`
	// InstanceTemplate: Name of an instance template used to create VMs. Named the
	// field as 'instance_template' instead of 'template' to avoid C++ keyword
	// conflict. Batch only supports global instance templates from the same
	// project as the job. You can specify the global instance template as a full
	// or partial URL.
	InstanceTemplate string `json:"instanceTemplate,omitempty"`
	// Policy: InstancePolicy.
	Policy *InstancePolicy `json:"policy,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BlockProjectSshKeys") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BlockProjectSshKeys") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InstancePolicyOrTemplate) MarshalJSON() ([]byte, error) {
	type NoMethod InstancePolicyOrTemplate
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InstanceStatus: VM instance status.
type InstanceStatus struct {
	// BootDisk: The VM boot disk.
	BootDisk *Disk `json:"bootDisk,omitempty"`
	// MachineType: The Compute Engine machine type.
	MachineType string `json:"machineType,omitempty"`
	// ProvisioningModel: The VM instance provisioning model.
	//
	// Possible values:
	//   "PROVISIONING_MODEL_UNSPECIFIED" - Unspecified.
	//   "STANDARD" - Standard VM.
	//   "SPOT" - SPOT VM.
	//   "PREEMPTIBLE" - Preemptible VM (PVM). Above SPOT VM is the preferable
	// model for preemptible VM instances: the old preemptible VM model (indicated
	// by this field) is the older model, and has been migrated to use the SPOT
	// model as the underlying technology. This old model will still be supported.
	ProvisioningModel string `json:"provisioningModel,omitempty"`
	// TaskPack: The max number of tasks can be assigned to this instance type.
	TaskPack int64 `json:"taskPack,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "BootDisk") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BootDisk") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s InstanceStatus) MarshalJSON() ([]byte, error) {
	type NoMethod InstanceStatus
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Job: The Cloud Batch Job description.
type Job struct {
	// AllocationPolicy: Compute resource allocation for all TaskGroups in the Job.
	AllocationPolicy *AllocationPolicy `json:"allocationPolicy,omitempty"`
	// CreateTime: Output only. When the Job was created.
	CreateTime string `json:"createTime,omitempty"`
	// Labels: Custom labels to apply to the job and any Cloud Logging LogEntry
	// (https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry) that
	// it generates. Use labels to group and describe the resources they are
	// applied to. Batch automatically applies predefined labels and supports
	// multiple `labels` fields for each job, which each let you apply custom
	// labels to various resources. Label names that start with "goog-" or
	// "google-" are reserved for predefined labels. For more information about
	// labels with Batch, see Organize resources using labels
	// (https://cloud.google.com/batch/docs/organize-resources-using-labels).
	Labels map[string]string `json:"labels,omitempty"`
	// LogsPolicy: Log preservation policy for the Job.
	LogsPolicy *LogsPolicy `json:"logsPolicy,omitempty"`
	// Name: Output only. Job name. For example:
	// "projects/123456/locations/us-central1/jobs/job01".
	Name string `json:"name,omitempty"`
	// Notifications: Notification configurations.
	Notifications []*JobNotification `json:"notifications,omitempty"`
	// Priority: Priority of the Job. The valid value range is [0, 100). Default
	// value is 0. Higher value indicates higher priority. A job with higher
	// priority value is more likely to run earlier if all other requirements are
	// satisfied.
	Priority int64 `json:"priority,omitempty,string"`
	// Status: Output only. Job status. It is read only for users.
	Status *JobStatus `json:"status,omitempty"`
	// TaskGroups: Required. TaskGroups in the Job. Only one TaskGroup is supported
	// now.
	TaskGroups []*TaskGroup `json:"taskGroups,omitempty"`
	// Uid: Output only. A system generated unique ID for the Job.
	Uid string `json:"uid,omitempty"`
	// UpdateTime: Output only. The last time the Job was updated.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AllocationPolicy") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AllocationPolicy") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Job) MarshalJSON() ([]byte, error) {
	type NoMethod Job
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// JobNotification: Notification configurations.
type JobNotification struct {
	// Message: The attribute requirements of messages to be sent to this Pub/Sub
	// topic. Without this field, no message will be sent.
	Message *Message `json:"message,omitempty"`
	// PubsubTopic: The Pub/Sub topic where notifications for the job, like state
	// changes, will be published. If undefined, no Pub/Sub notifications are sent
	// for this job. Specify the topic using the following format:
	// `projects/{project}/topics/{topic}`. Notably, if you want to specify a
	// Pub/Sub topic that is in a different project than the job, your
	// administrator must grant your project's Batch service agent permission to
	// publish to that topic. For more information about configuring Pub/Sub
	// notifications for a job, see
	// https://cloud.google.com/batch/docs/enable-notifications.
	PubsubTopic string `json:"pubsubTopic,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Message") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Message") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s JobNotification) MarshalJSON() ([]byte, error) {
	type NoMethod JobNotification
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// JobStatus: Job status.
type JobStatus struct {
	// RunDuration: The duration of time that the Job spent in status RUNNING.
	RunDuration string `json:"runDuration,omitempty"`
	// State: Job state
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Job state unspecified.
	//   "QUEUED" - Job is admitted (validated and persisted) and waiting for
	// resources.
	//   "SCHEDULED" - Job is scheduled to run as soon as resource allocation is
	// ready. The resource allocation may happen at a later time but with a high
	// chance to succeed.
	//   "RUNNING" - Resource allocation has been successful. At least one Task in
	// the Job is RUNNING.
	//   "SUCCEEDED" - All Tasks in the Job have finished successfully.
	//   "FAILED" - At least one Task in the Job has failed.
	//   "DELETION_IN_PROGRESS" - The Job will be deleted, but has not been deleted
	// yet. Typically this is because resources used by the Job are still being
	// cleaned up.
	State string `json:"state,omitempty"`
	// StatusEvents: Job status events
	StatusEvents []*StatusEvent `json:"statusEvents,omitempty"`
	// TaskGroups: Aggregated task status for each TaskGroup in the Job. The map
	// key is TaskGroup ID.
	TaskGroups map[string]TaskGroupStatus `json:"taskGroups,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RunDuration") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "RunDuration") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s JobStatus) MarshalJSON() ([]byte, error) {
	type NoMethod JobStatus
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type KMSEnvMap struct {
	// CipherText: The value of the cipherText response from the `encrypt` method.
	CipherText string `json:"cipherText,omitempty"`
	// KeyName: The name of the KMS key that will be used to decrypt the cipher
	// text.
	KeyName string `json:"keyName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CipherText") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CipherText") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s KMSEnvMap) MarshalJSON() ([]byte, error) {
	type NoMethod KMSEnvMap
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LifecyclePolicy: LifecyclePolicy describes how to deal with task failures
// based on different conditions.
type LifecyclePolicy struct {
	// Action: Action to execute when ActionCondition is true. When RETRY_TASK is
	// specified, we will retry failed tasks if we notice any exit code match and
	// fail tasks if no match is found. Likewise, when FAIL_TASK is specified, we
	// will fail tasks if we notice any exit code match and retry tasks if no match
	// is found.
	//
	// Possible values:
	//   "ACTION_UNSPECIFIED" - Action unspecified.
	//   "RETRY_TASK" - Action that tasks in the group will be scheduled to
	// re-execute.
	//   "FAIL_TASK" - Action that tasks in the group will be stopped immediately.
	Action string `json:"action,omitempty"`
	// ActionCondition: Conditions that decide why a task failure is dealt with a
	// specific action.
	ActionCondition *ActionCondition `json:"actionCondition,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Action") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Action") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LifecyclePolicy) MarshalJSON() ([]byte, error) {
	type NoMethod LifecyclePolicy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListJobsResponse: ListJob Response.
type ListJobsResponse struct {
	// Jobs: Jobs.
	Jobs []*Job `json:"jobs,omitempty"`
	// NextPageToken: Next page token.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Unreachable: Locations that could not be reached.
	Unreachable []string `json:"unreachable,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Jobs") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Jobs") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListJobsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListJobsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListLocationsResponse: The response message for Locations.ListLocations.
type ListLocationsResponse struct {
	// Locations: A list of locations that matches the specified filter in the
	// request.
	Locations []*Location `json:"locations,omitempty"`
	// NextPageToken: The standard List next-page token.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Locations") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Locations") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListLocationsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListLocationsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListOperationsResponse: The response message for Operations.ListOperations.
type ListOperationsResponse struct {
	// NextPageToken: The standard List next-page token.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Operations: A list of operations that matches the specified filter in the
	// request.
	Operations []*Operation `json:"operations,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListOperationsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListOperationsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListTasksResponse: ListTasks Response.
type ListTasksResponse struct {
	// NextPageToken: Next page token.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Tasks: Tasks.
	Tasks []*Task `json:"tasks,omitempty"`
	// Unreachable: Locations that could not be reached.
	Unreachable []string `json:"unreachable,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListTasksResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListTasksResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Location: A resource that represents a Google Cloud location.
type Location struct {
	// DisplayName: The friendly name for this location, typically a nearby city
	// name. For example, "Tokyo".
	DisplayName string `json:"displayName,omitempty"`
	// Labels: Cross-service attributes for the location. For example
	// {"cloud.googleapis.com/region": "us-east1"}
	Labels map[string]string `json:"labels,omitempty"`
	// LocationId: The canonical id for this location. For example: "us-east1".
	LocationId string `json:"locationId,omitempty"`
	// Metadata: Service-specific metadata. For example the available capacity at
	// the given location.
	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
	// Name: Resource name for the location, which may vary between
	// implementations. For example:
	// "projects/example-project/locations/us-east1"
	Name string `json:"name,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Location) MarshalJSON() ([]byte, error) {
	type NoMethod Location
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type LocationPolicy struct {
	// AllowedLocations: A list of allowed location names represented by internal
	// URLs. Each location can be a region or a zone. Only one region or multiple
	// zones in one region is supported now. For example, ["regions/us-central1"]
	// allow VMs in any zones in region us-central1. ["zones/us-central1-a",
	// "zones/us-central1-c"] only allow VMs in zones us-central1-a and
	// us-central1-c. Mixing locations from different regions would cause errors.
	// For example, ["regions/us-central1", "zones/us-central1-a",
	// "zones/us-central1-b", "zones/us-west1-a"] contains locations from two
	// distinct regions: us-central1 and us-west1. This combination will trigger an
	// error.
	AllowedLocations []string `json:"allowedLocations,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AllowedLocations") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AllowedLocations") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LocationPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod LocationPolicy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LogsPolicy: LogsPolicy describes if and how a job's logs are preserved. Logs
// include information that is automatically written by the Batch service agent
// and any information that you configured the job's runnables to write to the
// `stdout` or `stderr` streams.
type LogsPolicy struct {
	// CloudLoggingOption: Optional. When `destination` is set to `CLOUD_LOGGING`,
	// you can optionally set this field to configure additional settings for Cloud
	// Logging.
	CloudLoggingOption *CloudLoggingOption `json:"cloudLoggingOption,omitempty"`
	// Destination: If and where logs should be saved.
	//
	// Possible values:
	//   "DESTINATION_UNSPECIFIED" - (Default) Logs are not preserved.
	//   "CLOUD_LOGGING" - Logs are streamed to Cloud Logging. Optionally, you can
	// configure additional settings in the `cloudLoggingOption` field.
	//   "PATH" - Logs are saved to the file path specified in the `logsPath`
	// field.
	Destination string `json:"destination,omitempty"`
	// LogsPath: When `destination` is set to `PATH`, you must set this field to
	// the path where you want logs to be saved. This path can point to a local
	// directory on the VM or (if congifured) a directory under the mount path of
	// any Cloud Storage bucket, network file system (NFS), or writable persistent
	// disk that is mounted to the job. For example, if the job has a bucket with
	// `mountPath` set to `/mnt/disks/my-bucket`, you can write logs to the root
	// directory of the `remotePath` of that bucket by setting this field to
	// `/mnt/disks/my-bucket/`.
	LogsPath string `json:"logsPath,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CloudLoggingOption") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CloudLoggingOption") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LogsPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod LogsPolicy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Message: Message details. Describe the conditions under which messages will
// be sent. If no attribute is defined, no message will be sent by default. One
// message should specify either the job or the task level attributes, but not
// both. For example, job level: JOB_STATE_CHANGED and/or a specified
// new_job_state; task level: TASK_STATE_CHANGED and/or a specified
// new_task_state.
type Message struct {
	// NewJobState: The new job state.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Job state unspecified.
	//   "QUEUED" - Job is admitted (validated and persisted) and waiting for
	// resources.
	//   "SCHEDULED" - Job is scheduled to run as soon as resource allocation is
	// ready. The resource allocation may happen at a later time but with a high
	// chance to succeed.
	//   "RUNNING" - Resource allocation has been successful. At least one Task in
	// the Job is RUNNING.
	//   "SUCCEEDED" - All Tasks in the Job have finished successfully.
	//   "FAILED" - At least one Task in the Job has failed.
	//   "DELETION_IN_PROGRESS" - The Job will be deleted, but has not been deleted
	// yet. Typically this is because resources used by the Job are still being
	// cleaned up.
	NewJobState string `json:"newJobState,omitempty"`
	// NewTaskState: The new task state.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Unknown state.
	//   "PENDING" - The Task is created and waiting for resources.
	//   "ASSIGNED" - The Task is assigned to at least one VM.
	//   "RUNNING" - The Task is running.
	//   "FAILED" - The Task has failed.
	//   "SUCCEEDED" - The Task has succeeded.
	//   "UNEXECUTED" - The Task has not been executed when the Job finishes.
	NewTaskState string `json:"newTaskState,omitempty"`
	// Type: The message type.
	//
	// Possible values:
	//   "TYPE_UNSPECIFIED" - Unspecified.
	//   "JOB_STATE_CHANGED" - Notify users that the job state has changed.
	//   "TASK_STATE_CHANGED" - Notify users that the task state has changed.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "NewJobState") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NewJobState") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Message) MarshalJSON() ([]byte, error) {
	type NoMethod Message
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// NFS: Represents an NFS volume.
type NFS struct {
	// RemotePath: Remote source path exported from the NFS, e.g., "/share".
	RemotePath string `json:"remotePath,omitempty"`
	// Server: The IP address of the NFS.
	Server string `json:"server,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RemotePath") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "RemotePath") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s NFS) MarshalJSON() ([]byte, error) {
	type NoMethod NFS
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// NetworkInterface: A network interface.
type NetworkInterface struct {
	// Network: The URL of an existing network resource. You can specify the
	// network as a full or partial URL. For example, the following are all valid
	// URLs: *
	// https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
	// * projects/{project}/global/networks/{network} * global/networks/{network}
	Network string `json:"network,omitempty"`
	// NoExternalIpAddress: Default is false (with an external IP address).
	// Required if no external public IP address is attached to the VM. If no
	// external public IP address, additional configuration is required to allow
	// the VM to access Google Services. See
	// https://cloud.google.com/vpc/docs/configure-private-google-access and
	// https://cloud.google.com/nat/docs/gce-example#create-nat for more
	// information.
	NoExternalIpAddress bool `json:"noExternalIpAddress,omitempty"`
	// Subnetwork: The URL of an existing subnetwork resource in the network. You
	// can specify the subnetwork as a full or partial URL. For example, the
	// following are all valid URLs: *
	// https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}
	// * projects/{project}/regions/{region}/subnetworks/{subnetwork} *
	// regions/{region}/subnetworks/{subnetwork}
	Subnetwork string `json:"subnetwork,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Network") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Network") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s NetworkInterface) MarshalJSON() ([]byte, error) {
	type NoMethod NetworkInterface
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// NetworkPolicy: NetworkPolicy describes VM instance network configurations.
type NetworkPolicy struct {
	// NetworkInterfaces: Network configurations.
	NetworkInterfaces []*NetworkInterface `json:"networkInterfaces,omitempty"`
	// ForceSendFields is a list of field names (e.g. "NetworkInterfaces") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NetworkInterfaces") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s NetworkPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod NetworkPolicy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Operation: This resource represents a long-running operation that is the
// result of a network API call.
type Operation struct {
	// Done: If the value is `false`, it means the operation is still in progress.
	// If `true`, the operation is completed, and either `error` or `response` is
	// available.
	Done bool `json:"done,omitempty"`
	// Error: The error result of the operation in case of failure or cancellation.
	Error *Status `json:"error,omitempty"`
	// Metadata: Service-specific metadata associated with the operation. It
	// typically contains progress information and common metadata such as create
	// time. Some services might not provide such metadata. Any method that returns
	// a long-running operation should document the metadata type, if any.
	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
	// Name: The server-assigned name, which is only unique within the same service
	// that originally returns it. If you use the default HTTP mapping, the `name`
	// should be a resource name ending with `operations/{unique_id}`.
	Name string `json:"name,omitempty"`
	// Response: The normal, successful response of the operation. If the original
	// method returns no data on success, such as `Delete`, the response is
	// `google.protobuf.Empty`. If the original method is standard
	// `Get`/`Create`/`Update`, the response should be the resource. For other
	// methods, the response should have the type `XxxResponse`, where `Xxx` is the
	// original method name. For example, if the original method name is
	// `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
	Response googleapi.RawMessage `json:"response,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Done") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Done") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Operation) MarshalJSON() ([]byte, error) {
	type NoMethod Operation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OperationMetadata: Represents the metadata of the long-running operation.
type OperationMetadata struct {
	// ApiVersion: Output only. API version used to start the operation.
	ApiVersion string `json:"apiVersion,omitempty"`
	// CreateTime: Output only. The time the operation was created.
	CreateTime string `json:"createTime,omitempty"`
	// EndTime: Output only. The time the operation finished running.
	EndTime string `json:"endTime,omitempty"`
	// RequestedCancellation: Output only. Identifies whether the user has
	// requested cancellation of the operation. Operations that have successfully
	// been cancelled have google.longrunning.Operation.error value with a
	// google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.
	RequestedCancellation bool `json:"requestedCancellation,omitempty"`
	// StatusMessage: Output only. Human-readable status of the operation, if any.
	StatusMessage string `json:"statusMessage,omitempty"`
	// Target: Output only. Server-defined resource path for the target of the
	// operation.
	Target string `json:"target,omitempty"`
	// Verb: Output only. Name of the verb executed by the operation.
	Verb string `json:"verb,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ApiVersion") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ApiVersion") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OperationMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod OperationMetadata
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PlacementPolicy: PlacementPolicy describes a group placement policy for the
// VMs controlled by this AllocationPolicy.
type PlacementPolicy struct {
	// Collocation: UNSPECIFIED vs. COLLOCATED (default UNSPECIFIED). Use
	// COLLOCATED when you want VMs to be located close to each other for low
	// network latency between the VMs. No placement policy will be generated when
	// collocation is UNSPECIFIED.
	Collocation string `json:"collocation,omitempty"`
	// MaxDistance: When specified, causes the job to fail if more than
	// max_distance logical switches are required between VMs. Batch uses the most
	// compact possible placement of VMs even when max_distance is not specified.
	// An explicit max_distance makes that level of compactness a strict
	// requirement. Not yet implemented
	MaxDistance int64 `json:"maxDistance,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "Collocation") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Collocation") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PlacementPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod PlacementPolicy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ReportAgentStateRequest: Request to report agent's state. The Request itself
// implies the agent is healthy.
type ReportAgentStateRequest struct {
	// AgentInfo: Agent info.
	AgentInfo *AgentInfo `json:"agentInfo,omitempty"`
	// AgentTimingInfo: Agent timing info.
	AgentTimingInfo *AgentTimingInfo `json:"agentTimingInfo,omitempty"`
	// Metadata: Agent metadata.
	Metadata *AgentMetadata `json:"metadata,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AgentInfo") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AgentInfo") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ReportAgentStateRequest) MarshalJSON() ([]byte, error) {
	type NoMethod ReportAgentStateRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ReportAgentStateResponse: Response to ReportAgentStateRequest.
type ReportAgentStateResponse struct {
	// DefaultReportInterval: Default report interval override
	DefaultReportInterval string `json:"defaultReportInterval,omitempty"`
	// MinReportInterval: Minimum report interval override
	MinReportInterval string `json:"minReportInterval,omitempty"`
	// Tasks: Tasks assigned to the agent
	Tasks []*AgentTask `json:"tasks,omitempty"`
	// UseBatchMonitoredResource: If true, the cloud logging for batch agent will
	// use batch.googleapis.com/Job as monitored resource for Batch job related
	// logging.
	UseBatchMonitoredResource bool `json:"useBatchMonitoredResource,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "DefaultReportInterval") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DefaultReportInterval") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ReportAgentStateResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ReportAgentStateResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Runnable: Runnable describes instructions for executing a specific script or
// container as part of a Task.
type Runnable struct {
	// AlwaysRun: By default, after a Runnable fails, no further Runnable are
	// executed. This flag indicates that this Runnable must be run even if the
	// Task has already failed. This is useful for Runnables that copy output files
	// off of the VM or for debugging. The always_run flag does not override the
	// Task's overall max_run_duration. If the max_run_duration has expired then no
	// further Runnables will execute, not even always_run Runnables.
	AlwaysRun bool `json:"alwaysRun,omitempty"`
	// Background: Normally, a runnable that doesn't exit causes its task to fail.
	// However, you can set this field to `true` to configure a background
	// runnable. Background runnables are allowed continue running in the
	// background while the task executes subsequent runnables. For example,
	// background runnables are useful for providing services to other runnables or
	// providing debugging-support tools like SSH servers. Specifically, background
	// runnables are killed automatically (if they have not already exited) a short
	// time after all foreground runnables have completed. Even though this is
	// likely to result in a non-zero exit status for the background runnable,
	// these automatic kills are not treated as task failures.
	Background bool `json:"background,omitempty"`
	// Barrier: Barrier runnable.
	Barrier *Barrier `json:"barrier,omitempty"`
	// Container: Container runnable.
	Container *Container `json:"container,omitempty"`
	// DisplayName: Optional. DisplayName is an optional field that can be provided
	// by the caller. If provided, it will be used in logs and other outputs to
	// identify the script, making it easier for users to understand the logs. If
	// not provided the index of the runnable will be used for outputs.
	DisplayName string `json:"displayName,omitempty"`
	// Environment: Environment variables for this Runnable (overrides variables
	// set for the whole Task or TaskGroup).
	Environment *Environment `json:"environment,omitempty"`
	// IgnoreExitStatus: Normally, a runnable that returns a non-zero exit status
	// fails and causes the task to fail. However, you can set this field to `true`
	// to allow the task to continue executing its other runnables even if this
	// runnable fails.
	IgnoreExitStatus bool `json:"ignoreExitStatus,omitempty"`
	// Labels: Labels for this Runnable.
	Labels map[string]string `json:"labels,omitempty"`
	// Script: Script runnable.
	Script *Script `json:"script,omitempty"`
	// Timeout: Timeout for this Runnable.
	Timeout string `json:"timeout,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AlwaysRun") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AlwaysRun") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Runnable) MarshalJSON() ([]byte, error) {
	type NoMethod Runnable
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Script: Script runnable.
type Script struct {
	// Path: The path to a script file that is accessible from the host VM(s).
	// Unless the script file supports the default `#!/bin/sh` shell interpreter,
	// you must specify an interpreter by including a shebang line
	// (https://en.wikipedia.org/wiki/Shebang_(Unix) as the first line of the file.
	// For example, to execute the script using bash, include `#!/bin/bash` as the
	// first line of the file. Alternatively, to execute the script using Python3,
	// include `#!/usr/bin/env python3` as the first line of the file.
	Path string `json:"path,omitempty"`
	// Text: The text for a script. Unless the script text supports the default
	// `#!/bin/sh` shell interpreter, you must specify an interpreter by including
	// a shebang line (https://en.wikipedia.org/wiki/Shebang_(Unix) at the
	// beginning of the text. For example, to execute the script using bash,
	// include `#!/bin/bash\n` at the beginning of the text. Alternatively, to
	// execute the script using Python3, include `#!/usr/bin/env python3\n` at the
	// beginning of the text.
	Text string `json:"text,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Path") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Path") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Script) MarshalJSON() ([]byte, error) {
	type NoMethod Script
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ServiceAccount: Carries information about a Google Cloud service account.
type ServiceAccount struct {
	// Email: Email address of the service account.
	Email string `json:"email,omitempty"`
	// Scopes: List of scopes to be enabled for this service account.
	Scopes []string `json:"scopes,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Email") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Email") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ServiceAccount) MarshalJSON() ([]byte, error) {
	type NoMethod ServiceAccount
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Status: The `Status` type defines a logical error model that is suitable for
// different programming environments, including REST APIs and RPC APIs. It is
// used by gRPC (https://github.com/grpc). Each `Status` message contains three
// pieces of data: error code, error message, and error details. You can find
// out more about this error model and how to work with it in the API Design
// Guide (https://cloud.google.com/apis/design/errors).
type Status struct {
	// Code: The status code, which should be an enum value of google.rpc.Code.
	Code int64 `json:"code,omitempty"`
	// Details: A list of messages that carry the error details. There is a common
	// set of message types for APIs to use.
	Details []googleapi.RawMessage `json:"details,omitempty"`
	// Message: A developer-facing error message, which should be in English. Any
	// user-facing error message should be localized and sent in the
	// google.rpc.Status.details field, or localized by the client.
	Message string `json:"message,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Code") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Code") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Status) MarshalJSON() ([]byte, error) {
	type NoMethod Status
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// StatusEvent: Status event.
type StatusEvent struct {
	// Description: Description of the event.
	Description string `json:"description,omitempty"`
	// EventTime: The time this event occurred.
	EventTime string `json:"eventTime,omitempty"`
	// TaskExecution: Task Execution. This field is only defined for task-level
	// status events where the task fails.
	TaskExecution *TaskExecution `json:"taskExecution,omitempty"`
	// TaskState: Task State. This field is only defined for task-level status
	// events.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Unknown state.
	//   "PENDING" - The Task is created and waiting for resources.
	//   "ASSIGNED" - The Task is assigned to at least one VM.
	//   "RUNNING" - The Task is running.
	//   "FAILED" - The Task has failed.
	//   "SUCCEEDED" - The Task has succeeded.
	//   "UNEXECUTED" - The Task has not been executed when the Job finishes.
	TaskState string `json:"taskState,omitempty"`
	// Type: Type of the event.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Description") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s StatusEvent) MarshalJSON() ([]byte, error) {
	type NoMethod StatusEvent
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Task: A Cloud Batch task.
type Task struct {
	// Name: Task name. The name is generated from the parent TaskGroup name and
	// 'id' field. For example:
	// "projects/123456/locations/us-west1/jobs/job01/taskGroups/group01/tasks/task0
	// 1".
	Name string `json:"name,omitempty"`
	// Status: Task Status.
	Status *TaskStatus `json:"status,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Task) MarshalJSON() ([]byte, error) {
	type NoMethod Task
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TaskExecution: This Task Execution field includes detail information for
// task execution procedures, based on StatusEvent types.
type TaskExecution struct {
	// ExitCode: The exit code of a finished task. If the task succeeded, the exit
	// code will be 0. If the task failed but not due to the following reasons, the
	// exit code will be 50000. Otherwise, it can be from different sources: *
	// Batch known failures:
	// https://cloud.google.com/batch/docs/troubleshooting#reserved-exit-codes. *
	// Batch runnable execution failures; you can rely on Batch logs to further
	// diagnose: https://cloud.google.com/batch/docs/analyze-job-using-logs. If
	// there are multiple runnables failures, Batch only exposes the first error.
	ExitCode int64 `json:"exitCode,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ExitCode") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ExitCode") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TaskExecution) MarshalJSON() ([]byte, error) {
	type NoMethod TaskExecution
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TaskGroup: A TaskGroup defines one or more Tasks that all share the same
// TaskSpec.
type TaskGroup struct {
	// Name: Output only. TaskGroup name. The system generates this field based on
	// parent Job name. For example:
	// "projects/123456/locations/us-west1/jobs/job01/taskGroups/group01".
	Name string `json:"name,omitempty"`
	// Parallelism: Max number of tasks that can run in parallel. Default to
	// min(task_count, parallel tasks per job limit). See: Job Limits
	// (https://cloud.google.com/batch/quotas#job_limits). Field parallelism must
	// be 1 if the scheduling_policy is IN_ORDER.
	Parallelism int64 `json:"parallelism,omitempty,string"`
	// PermissiveSsh: When true, Batch will configure SSH to allow passwordless
	// login between VMs running the Batch tasks in the same TaskGroup.
	PermissiveSsh bool `json:"permissiveSsh,omitempty"`
	// RequireHostsFile: When true, Batch will populate a file with a list of all
	// VMs assigned to the TaskGroup and set the BATCH_HOSTS_FILE environment
	// variable to the path of that file. Defaults to false. The host file supports
	// up to 1000 VMs.
	RequireHostsFile bool `json:"requireHostsFile,omitempty"`
	// RunAsNonRoot: Optional. If not set or set to false, Batch uses the root user
	// to execute runnables. If set to true, Batch runs the runnables using a
	// non-root user. Currently, the non-root user Batch used is generated by OS
	// Login. For more information, see About OS Login
	// (https://cloud.google.com/compute/docs/oslogin).
	RunAsNonRoot bool `json:"runAsNonRoot,omitempty"`
	// SchedulingPolicy: Scheduling policy for Tasks in the TaskGroup. The default
	// value is AS_SOON_AS_POSSIBLE.
	//
	// Possible values:
	//   "SCHEDULING_POLICY_UNSPECIFIED" - Unspecified.
	//   "AS_SOON_AS_POSSIBLE" - Run Tasks as soon as resources are available.
	// Tasks might be executed in parallel depending on parallelism and task_count
	// values.
	//   "IN_ORDER" - Run Tasks sequentially with increased task index.
	SchedulingPolicy string `json:"schedulingPolicy,omitempty"`
	// TaskCount: Number of Tasks in the TaskGroup. Default is 1.
	TaskCount int64 `json:"taskCount,omitempty,string"`
	// TaskCountPerNode: Max number of tasks that can be run on a VM at the same
	// time. If not specified, the system will decide a value based on available
	// compute resources on a VM and task requirements.
	TaskCountPerNode int64 `json:"taskCountPerNode,omitempty,string"`
	// TaskEnvironments: An array of environment variable mappings, which are
	// passed to Tasks with matching indices. If task_environments is used then
	// task_count should not be specified in the request (and will be ignored).
	// Task count will be the length of task_environments. Tasks get a
	// BATCH_TASK_INDEX and BATCH_TASK_COUNT environment variable, in addition to
	// any environment variables set in task_environments, specifying the number of
	// Tasks in the Task's parent TaskGroup, and the specific Task's index in the
	// TaskGroup (0 through BATCH_TASK_COUNT - 1).
	TaskEnvironments []*Environment `json:"taskEnvironments,omitempty"`
	// TaskSpec: Required. Tasks in the group share the same task spec.
	TaskSpec *TaskSpec `json:"taskSpec,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TaskGroup) MarshalJSON() ([]byte, error) {
	type NoMethod TaskGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TaskGroupStatus: Aggregated task status for a TaskGroup.
type TaskGroupStatus struct {
	// Counts: Count of task in each state in the TaskGroup. The map key is task
	// state name.
	Counts map[string]string `json:"counts,omitempty"`
	// Instances: Status of instances allocated for the TaskGroup.
	Instances []*InstanceStatus `json:"instances,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Counts") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Counts") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TaskGroupStatus) MarshalJSON() ([]byte, error) {
	type NoMethod TaskGroupStatus
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TaskSpec: Spec of a task
type TaskSpec struct {
	// ComputeResource: ComputeResource requirements.
	ComputeResource *ComputeResource `json:"computeResource,omitempty"`
	// Environment: Environment variables to set before running the Task.
	Environment *Environment `json:"environment,omitempty"`
	// Environments: Deprecated: please use environment(non-plural) instead.
	Environments map[string]string `json:"environments,omitempty"`
	// LifecyclePolicies: Lifecycle management schema when any task in a task group
	// is failed. Currently we only support one lifecycle policy. When the
	// lifecycle policy condition is met, the action in the policy will execute. If
	// task execution result does not meet with the defined lifecycle policy, we
	// consider it as the default policy. Default policy means if the exit code is
	// 0, exit task. If task ends with non-zero exit code, retry the task with
	// max_retry_count.
	LifecyclePolicies []*LifecyclePolicy `json:"lifecyclePolicies,omitempty"`
	// MaxRetryCount: Maximum number of retries on failures. The default, 0, which
	// means never retry. The valid value range is [0, 10].
	MaxRetryCount int64 `json:"maxRetryCount,omitempty"`
	// MaxRunDuration: Maximum duration the task should run before being
	// automatically retried (if enabled) or automatically failed. Format the value
	// of this field as a time limit in seconds followed by `s`—for example,
	// `3600s` for 1 hour. The field accepts any value between 0 and the maximum
	// listed for the `Duration` field type at
	// https://protobuf.dev/reference/protobuf/google.protobuf/#duration; however,
	// the actual maximum run time for a job will be limited to the maximum run
	// time for a job listed at
	// https://cloud.google.com/batch/quotas#max-job-duration.
	MaxRunDuration string `json:"maxRunDuration,omitempty"`
	// Runnables: Required. The sequence of one or more runnables (executable
	// scripts, executable containers, and/or barriers) for each task in this task
	// group to run. Each task runs this list of runnables in order. For a task to
	// succeed, all of its script and container runnables each must meet at least
	// one of the following conditions: + The runnable exited with a zero status. +
	// The runnable didn't finish, but you enabled its `background` subfield. + The
	// runnable exited with a non-zero status, but you enabled its
	// `ignore_exit_status` subfield.
	Runnables []*Runnable `json:"runnables,omitempty"`
	// Volumes: Volumes to mount before running Tasks using this TaskSpec.
	Volumes []*Volume `json:"volumes,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ComputeResource") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ComputeResource") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TaskSpec) MarshalJSON() ([]byte, error) {
	type NoMethod TaskSpec
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TaskStatus: Status of a task.
type TaskStatus struct {
	// State: Task state.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Unknown state.
	//   "PENDING" - The Task is created and waiting for resources.
	//   "ASSIGNED" - The Task is assigned to at least one VM.
	//   "RUNNING" - The Task is running.
	//   "FAILED" - The Task has failed.
	//   "SUCCEEDED" - The Task has succeeded.
	//   "UNEXECUTED" - The Task has not been executed when the Job finishes.
	State string `json:"state,omitempty"`
	// StatusEvents: Detailed info about why the state is reached.
	StatusEvents []*StatusEvent `json:"statusEvents,omitempty"`
	// ForceSendFields is a list of field names (e.g. "State") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "State") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TaskStatus) MarshalJSON() ([]byte, error) {
	type NoMethod TaskStatus
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Volume: Volume describes a volume and parameters for it to be mounted to a
// VM.
type Volume struct {
	// DeviceName: Device name of an attached disk volume, which should align with
	// a device_name specified by
	// job.allocation_policy.instances[0].policy.disks[i].device_name or defined by
	// the given instance template in
	// job.allocation_policy.instances[0].instance_template.
	DeviceName string `json:"deviceName,omitempty"`
	// Gcs: A Google Cloud Storage (GCS) volume.
	Gcs *GCS `json:"gcs,omitempty"`
	// MountOptions: Mount options vary based on the type of storage volume: * For
	// a Cloud Storage bucket, all the mount options provided by the `gcsfuse` tool
	// (https://cloud.google.com/storage/docs/gcsfuse-cli) are supported. * For an
	// existing persistent disk, all mount options provided by the `mount` command
	// (https://man7.org/linux/man-pages/man8/mount.8.html) except writing are
	// supported. This is due to restrictions of multi-writer mode
	// (https://cloud.google.com/compute/docs/disks/sharing-disks-between-vms). *
	// For any other disk or a Network File System (NFS), all the mount options
	// provided by the `mount` command are supported.
	MountOptions []string `json:"mountOptions,omitempty"`
	// MountPath: The mount path for the volume, e.g. /mnt/disks/share.
	MountPath string `json:"mountPath,omitempty"`
	// Nfs: A Network File System (NFS) volume. For example, a Filestore file
	// share.
	Nfs *NFS `json:"nfs,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeviceName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DeviceName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Volume) MarshalJSON() ([]byte, error) {
	type NoMethod Volume
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type ProjectsLocationsGetCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Gets information about a location.
//
// - name: Resource name for the location.
func (r *ProjectsLocationsService) Get(name string) *ProjectsLocationsGetCall {
	c := &ProjectsLocationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ProjectsLocationsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsGetCall) Context(ctx context.Context) *ProjectsLocationsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Location.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ProjectsLocationsGetCall) Do(opts ...googleapi.CallOption) (*Location, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Location{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsLocationsListCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists information about the supported locations for this service.
//
// - name: The resource that owns the locations collection, if applicable.
func (r *ProjectsLocationsService) List(name string) *ProjectsLocationsListCall {
	c := &ProjectsLocationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Filter sets the optional parameter "filter": A filter to narrow down results
// to a preferred subset. The filtering language accepts strings like
// "displayName=tokyo", and is documented in more detail in AIP-160
// (https://google.aip.dev/160).
func (c *ProjectsLocationsListCall) Filter(filter string) *ProjectsLocationsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// results to return. If not set, the service selects a default.
func (c *ProjectsLocationsListCall) PageSize(pageSize int64) *ProjectsLocationsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token received
// from the `next_page_token` field in the response. Send that page token to
// receive the subsequent page.
func (c *ProjectsLocationsListCall) PageToken(pageToken string) *ProjectsLocationsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ProjectsLocationsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsListCall) Context(ctx context.Context) *ProjectsLocationsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}/locations")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListLocationsResponse.ServerResponse.Header or (if a response was returned
// at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
// check whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsListCall) Do(opts ...googleapi.CallOption) (*ListLocationsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListLocationsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsLocationsListCall) Pages(ctx context.Context, f func(*ListLocationsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type ProjectsLocationsJobsCreateCall struct {
	s          *Service
	parent     string
	job        *Job
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Create: Create a Job.
//
//   - parent: The parent resource name where the Job will be created. Pattern:
//     "projects/{project}/locations/{location}".
func (r *ProjectsLocationsJobsService) Create(parent string, job *Job) *ProjectsLocationsJobsCreateCall {
	c := &ProjectsLocationsJobsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.job = job
	return c
}

// JobId sets the optional parameter "jobId": ID used to uniquely identify the
// Job within its parent scope. This field should contain at most 63 characters
// and must start with lowercase characters. Only lowercase characters, numbers
// and '-' are accepted. The '-' character cannot be the first or the last one.
// A system generated ID will be used if the field is not set. The job.name
// field in the request will be ignored and the created resource name of the
// Job will be "{parent}/jobs/{job_id}".
func (c *ProjectsLocationsJobsCreateCall) JobId(jobId string) *ProjectsLocationsJobsCreateCall {
	c.urlParams_.Set("jobId", jobId)
	return c
}

// RequestId sets the optional parameter "requestId": An optional request ID to
// identify requests. Specify a unique request ID so that if you must retry
// your request, the server will know to ignore the request if it has already
// been completed. The server will guarantee that for at least 60 minutes since
// the first request. For example, consider a situation where you make an
// initial request and the request times out. If you make the request again
// with the same request ID, the server can check if original operation with
// the same request ID was received, and if so, will ignore the second request.
// This prevents clients from accidentally creating duplicate commitments. The
// request ID must be a valid UUID with the exception that zero UUID is not
// supported (00000000-0000-0000-0000-000000000000).
func (c *ProjectsLocationsJobsCreateCall) RequestId(requestId string) *ProjectsLocationsJobsCreateCall {
	c.urlParams_.Set("requestId", requestId)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsJobsCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsJobsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsJobsCreateCall) Context(ctx context.Context) *ProjectsLocationsJobsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsJobsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsJobsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.job)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/jobs")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.jobs.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Job.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ProjectsLocationsJobsCreateCall) Do(opts ...googleapi.CallOption) (*Job, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Job{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsLocationsJobsDeleteCall struct {
	s          *Service
	name       string
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Delete: Delete a Job.
//
// - name: Job name.
func (r *ProjectsLocationsJobsService) Delete(name string) *ProjectsLocationsJobsDeleteCall {
	c := &ProjectsLocationsJobsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Reason sets the optional parameter "reason": Reason for this deletion.
func (c *ProjectsLocationsJobsDeleteCall) Reason(reason string) *ProjectsLocationsJobsDeleteCall {
	c.urlParams_.Set("reason", reason)
	return c
}

// RequestId sets the optional parameter "requestId": An optional request ID to
// identify requests. Specify a unique request ID so that if you must retry
// your request, the server will know to ignore the request if it has already
// been completed. The server will guarantee that for at least 60 minutes after
// the first request. For example, consider a situation where you make an
// initial request and the request times out. If you make the request again
// with the same request ID, the server can check if original operation with
// the same request ID was received, and if so, will ignore the second request.
// This prevents clients from accidentally creating duplicate commitments. The
// request ID must be a valid UUID with the exception that zero UUID is not
// supported (00000000-0000-0000-0000-000000000000).
func (c *ProjectsLocationsJobsDeleteCall) RequestId(requestId string) *ProjectsLocationsJobsDeleteCall {
	c.urlParams_.Set("requestId", requestId)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsJobsDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsJobsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsJobsDeleteCall) Context(ctx context.Context) *ProjectsLocationsJobsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsJobsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsJobsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.jobs.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ProjectsLocationsJobsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsLocationsJobsGetCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Get a Job specified by its resource name.
//
// - name: Job name.
func (r *ProjectsLocationsJobsService) Get(name string) *ProjectsLocationsJobsGetCall {
	c := &ProjectsLocationsJobsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsJobsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsJobsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ProjectsLocationsJobsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsJobsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsJobsGetCall) Context(ctx context.Context) *ProjectsLocationsJobsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsJobsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsJobsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.jobs.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Job.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ProjectsLocationsJobsGetCall) Do(opts ...googleapi.CallOption) (*Job, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Job{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsLocationsJobsListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: List all Jobs for a project within a region.
//
// - parent: Parent path.
func (r *ProjectsLocationsJobsService) List(parent string) *ProjectsLocationsJobsListCall {
	c := &ProjectsLocationsJobsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": List filter.
func (c *ProjectsLocationsJobsListCall) Filter(filter string) *ProjectsLocationsJobsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Sort results. Supported are
// "name", "name desc", "create_time", and "create_time desc".
func (c *ProjectsLocationsJobsListCall) OrderBy(orderBy string) *ProjectsLocationsJobsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Page size.
func (c *ProjectsLocationsJobsListCall) PageSize(pageSize int64) *ProjectsLocationsJobsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": Page token.
func (c *ProjectsLocationsJobsListCall) PageToken(pageToken string) *ProjectsLocationsJobsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsJobsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsJobsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ProjectsLocationsJobsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsJobsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsJobsListCall) Context(ctx context.Context) *ProjectsLocationsJobsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsJobsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsJobsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/jobs")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.jobs.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListJobsResponse.ServerResponse.Header or (if a response was returned at
// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
// check whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsJobsListCall) Do(opts ...googleapi.CallOption) (*ListJobsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListJobsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsLocationsJobsListCall) Pages(ctx context.Context, f func(*ListJobsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type ProjectsLocationsJobsTaskGroupsTasksGetCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Return a single Task.
//
// - name: Task name.
func (r *ProjectsLocationsJobsTaskGroupsTasksService) Get(name string) *ProjectsLocationsJobsTaskGroupsTasksGetCall {
	c := &ProjectsLocationsJobsTaskGroupsTasksGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsJobsTaskGroupsTasksGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsJobsTaskGroupsTasksGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ProjectsLocationsJobsTaskGroupsTasksGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsJobsTaskGroupsTasksGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsJobsTaskGroupsTasksGetCall) Context(ctx context.Context) *ProjectsLocationsJobsTaskGroupsTasksGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsJobsTaskGroupsTasksGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsJobsTaskGroupsTasksGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.taskGroups.tasks.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.jobs.taskGroups.tasks.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Task.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ProjectsLocationsJobsTaskGroupsTasksGetCall) Do(opts ...googleapi.CallOption) (*Task, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Task{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.taskGroups.tasks.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsLocationsJobsTaskGroupsTasksListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: List Tasks associated with a job.
//
//   - parent: Name of a TaskGroup from which Tasks are being requested. Pattern:
//     "projects/{project}/locations/{location}/jobs/{job}/taskGroups/{task_group}
//     ".
func (r *ProjectsLocationsJobsTaskGroupsTasksService) List(parent string) *ProjectsLocationsJobsTaskGroupsTasksListCall {
	c := &ProjectsLocationsJobsTaskGroupsTasksListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": Task filter, null filter
// matches all Tasks. Filter string should be of the format
// State=TaskStatus.State e.g. State=RUNNING
func (c *ProjectsLocationsJobsTaskGroupsTasksListCall) Filter(filter string) *ProjectsLocationsJobsTaskGroupsTasksListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": Page size.
func (c *ProjectsLocationsJobsTaskGroupsTasksListCall) PageSize(pageSize int64) *ProjectsLocationsJobsTaskGroupsTasksListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": Page token.
func (c *ProjectsLocationsJobsTaskGroupsTasksListCall) PageToken(pageToken string) *ProjectsLocationsJobsTaskGroupsTasksListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsJobsTaskGroupsTasksListCall) Fields(s ...googleapi.Field) *ProjectsLocationsJobsTaskGroupsTasksListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ProjectsLocationsJobsTaskGroupsTasksListCall) IfNoneMatch(entityTag string) *ProjectsLocationsJobsTaskGroupsTasksListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsJobsTaskGroupsTasksListCall) Context(ctx context.Context) *ProjectsLocationsJobsTaskGroupsTasksListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsJobsTaskGroupsTasksListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsJobsTaskGroupsTasksListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/tasks")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.taskGroups.tasks.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.jobs.taskGroups.tasks.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListTasksResponse.ServerResponse.Header or (if a response was returned at
// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
// check whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsJobsTaskGroupsTasksListCall) Do(opts ...googleapi.CallOption) (*ListTasksResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListTasksResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.jobs.taskGroups.tasks.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsLocationsJobsTaskGroupsTasksListCall) Pages(ctx context.Context, f func(*ListTasksResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type ProjectsLocationsOperationsCancelCall struct {
	s                      *Service
	name                   string
	canceloperationrequest *CancelOperationRequest
	urlParams_             gensupport.URLParams
	ctx_                   context.Context
	header_                http.Header
}

// Cancel: Starts asynchronous cancellation on a long-running operation. The
// server makes a best effort to cancel the operation, but success is not
// guaranteed. If the server doesn't support this method, it returns
// `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or
// other methods to check whether the cancellation succeeded or whether the
// operation completed despite cancellation. On successful cancellation, the
// operation is not deleted; instead, it becomes an operation with an
// Operation.error value with a google.rpc.Status.code of `1`, corresponding to
// `Code.CANCELLED`.
//
// - name: The name of the operation resource to be cancelled.
func (r *ProjectsLocationsOperationsService) Cancel(name string, canceloperationrequest *CancelOperationRequest) *ProjectsLocationsOperationsCancelCall {
	c := &ProjectsLocationsOperationsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.canceloperationrequest = canceloperationrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsOperationsCancelCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsCancelCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsOperationsCancelCall) Context(ctx context.Context) *ProjectsLocationsOperationsCancelCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsOperationsCancelCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.canceloperationrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:cancel")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.operations.cancel", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.operations.cancel" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ProjectsLocationsOperationsCancelCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.operations.cancel", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsLocationsOperationsDeleteCall struct {
	s          *Service
	name       string
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Delete: Deletes a long-running operation. This method indicates that the
// client is no longer interested in the operation result. It does not cancel
// the operation. If the server doesn't support this method, it returns
// `google.rpc.Code.UNIMPLEMENTED`.
//
// - name: The name of the operation resource to be deleted.
func (r *ProjectsLocationsOperationsService) Delete(name string) *ProjectsLocationsOperationsDeleteCall {
	c := &ProjectsLocationsOperationsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsOperationsDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsOperationsDeleteCall) Context(ctx context.Context) *ProjectsLocationsOperationsDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsOperationsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.operations.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.operations.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Empty.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ProjectsLocationsOperationsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Empty{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.operations.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsLocationsOperationsGetCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Gets the latest state of a long-running operation. Clients can use this
// method to poll the operation result at intervals as recommended by the API
// service.
//
// - name: The name of the operation resource.
func (r *ProjectsLocationsOperationsService) Get(name string) *ProjectsLocationsOperationsGetCall {
	c := &ProjectsLocationsOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ProjectsLocationsOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsOperationsGetCall) Context(ctx context.Context) *ProjectsLocationsOperationsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsOperationsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.operations.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.operations.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ProjectsLocationsOperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.operations.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsLocationsOperationsListCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists operations that match the specified filter in the request. If
// the server doesn't support this method, it returns `UNIMPLEMENTED`.
//
// - name: The name of the operation's parent resource.
func (r *ProjectsLocationsOperationsService) List(name string) *ProjectsLocationsOperationsListCall {
	c := &ProjectsLocationsOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Filter sets the optional parameter "filter": The standard list filter.
func (c *ProjectsLocationsOperationsListCall) Filter(filter string) *ProjectsLocationsOperationsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": The standard list page
// size.
func (c *ProjectsLocationsOperationsListCall) PageSize(pageSize int64) *ProjectsLocationsOperationsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The standard list page
// token.
func (c *ProjectsLocationsOperationsListCall) PageToken(pageToken string) *ProjectsLocationsOperationsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsOperationsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ProjectsLocationsOperationsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsOperationsListCall) Context(ctx context.Context) *ProjectsLocationsOperationsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsOperationsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}/operations")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.operations.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.operations.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListOperationsResponse.ServerResponse.Header or (if a response was returned
// at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
// check whether the returned error was because http.StatusNotModified was
// returned.
func (c *ProjectsLocationsOperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListOperationsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.operations.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsLocationsOperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type ProjectsLocationsStateReportCall struct {
	s                       *Service
	parent                  string
	reportagentstaterequest *ReportAgentStateRequest
	urlParams_              gensupport.URLParams
	ctx_                    context.Context
	header_                 http.Header
}

// Report: Report agent's state, e.g. agent status and tasks information
//
//   - parent: Format: projects/{project}/locations/{location} {project} should
//     be a project number.
func (r *ProjectsLocationsStateService) Report(parent string, reportagentstaterequest *ReportAgentStateRequest) *ProjectsLocationsStateReportCall {
	c := &ProjectsLocationsStateReportCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.reportagentstaterequest = reportagentstaterequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsLocationsStateReportCall) Fields(s ...googleapi.Field) *ProjectsLocationsStateReportCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsLocationsStateReportCall) Context(ctx context.Context) *ProjectsLocationsStateReportCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsLocationsStateReportCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsLocationsStateReportCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.reportagentstaterequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/state:report")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "batch.projects.locations.state.report", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "batch.projects.locations.state.report" call.
// Any non-2xx status code is an error. Response headers are in either
// *ReportAgentStateResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *ProjectsLocationsStateReportCall) Do(opts ...googleapi.CallOption) (*ReportAgentStateResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ReportAgentStateResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "batch.projects.locations.state.report", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}
