// Copyright 2024 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 storagetransfer provides access to the Storage Transfer API.
//
// For product documentation, see: https://cloud.google.com/storage-transfer/docs
//
// # 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/storagetransfer/v1"
//	...
//	ctx := context.Background()
//	storagetransferService, err := storagetransfer.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]:
//
//	storagetransferService, err := storagetransfer.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, ...)
//	storagetransferService, err := storagetransfer.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See [google.golang.org/api/option.ClientOption] for details on options.
package storagetransfer // import "google.golang.org/api/storagetransfer/v1"

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

	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

const apiId = "storagetransfer:v1"
const apiName = "storagetransfer"
const apiVersion = "v1"
const basePath = "https://storagetransfer.googleapis.com/"
const basePathTemplate = "https://storagetransfer.UNIVERSE_DOMAIN/"
const mtlsBasePath = "https://storagetransfer.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, err := New(client)
	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")
	}
	s := &Service{client: client, BasePath: basePath}
	s.GoogleServiceAccounts = NewGoogleServiceAccountsService(s)
	s.Projects = NewProjectsService(s)
	s.TransferJobs = NewTransferJobsService(s)
	s.TransferOperations = NewTransferOperationsService(s)
	return s, nil
}

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

	GoogleServiceAccounts *GoogleServiceAccountsService

	Projects *ProjectsService

	TransferJobs *TransferJobsService

	TransferOperations *TransferOperationsService
}

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

func NewGoogleServiceAccountsService(s *Service) *GoogleServiceAccountsService {
	rs := &GoogleServiceAccountsService{s: s}
	return rs
}

type GoogleServiceAccountsService struct {
	s *Service
}

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

type ProjectsService struct {
	s *Service

	AgentPools *ProjectsAgentPoolsService
}

func NewProjectsAgentPoolsService(s *Service) *ProjectsAgentPoolsService {
	rs := &ProjectsAgentPoolsService{s: s}
	return rs
}

type ProjectsAgentPoolsService struct {
	s *Service
}

func NewTransferJobsService(s *Service) *TransferJobsService {
	rs := &TransferJobsService{s: s}
	return rs
}

type TransferJobsService struct {
	s *Service
}

func NewTransferOperationsService(s *Service) *TransferOperationsService {
	rs := &TransferOperationsService{s: s}
	return rs
}

type TransferOperationsService struct {
	s *Service
}

// AgentPool: Represents an agent pool.
type AgentPool struct {
	// BandwidthLimit: Specifies the bandwidth limit details. If this field is
	// unspecified, the default value is set as 'No Limit'.
	BandwidthLimit *BandwidthLimit `json:"bandwidthLimit,omitempty"`
	// DisplayName: Specifies the client-specified AgentPool description.
	DisplayName string `json:"displayName,omitempty"`
	// Name: Required. Specifies a unique string that identifies the agent pool.
	// Format: `projects/{project_id}/agentPools/{agent_pool_id}`
	Name string `json:"name,omitempty"`
	// State: Output only. Specifies the state of the AgentPool.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Default value. This value is unused.
	//   "CREATING" - This is an initialization state. During this stage, resources
	// are allocated for the AgentPool.
	//   "CREATED" - Determines that the AgentPool is created for use. At this
	// state, Agents can join the AgentPool and participate in the transfer jobs in
	// that pool.
	//   "DELETING" - Determines that the AgentPool deletion has been initiated,
	// and all the resources are scheduled to be cleaned up and freed.
	State string `json:"state,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "BandwidthLimit") 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. "BandwidthLimit") 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 *AgentPool) MarshalJSON() ([]byte, error) {
	type NoMethod AgentPool
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// AwsAccessKey: AWS access key (see AWS Security Credentials
// (https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html)).
// For information on our data retention policy for user credentials, see User
// credentials (/storage-transfer/docs/data-retention#user-credentials).
type AwsAccessKey struct {
	// AccessKeyId: Required. AWS access key ID.
	AccessKeyId string `json:"accessKeyId,omitempty"`
	// SecretAccessKey: Required. AWS secret access key. This field is not returned
	// in RPC responses.
	SecretAccessKey string `json:"secretAccessKey,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AccessKeyId") 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. "AccessKeyId") 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 *AwsAccessKey) MarshalJSON() ([]byte, error) {
	type NoMethod AwsAccessKey
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// AwsS3CompatibleData: An AwsS3CompatibleData resource.
type AwsS3CompatibleData struct {
	// BucketName: Required. Specifies the name of the bucket.
	BucketName string `json:"bucketName,omitempty"`
	// Endpoint: Required. Specifies the endpoint of the storage service.
	Endpoint string `json:"endpoint,omitempty"`
	// Path: Specifies the root path to transfer objects. Must be an empty string
	// or full path name that ends with a '/'. This field is treated as an object
	// prefix. As such, it should generally not begin with a '/'.
	Path string `json:"path,omitempty"`
	// Region: Specifies the region to sign requests with. This can be left blank
	// if requests should be signed with an empty region.
	Region string `json:"region,omitempty"`
	// S3Metadata: A S3 compatible metadata.
	S3Metadata *S3CompatibleMetadata `json:"s3Metadata,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BucketName") 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. "BucketName") 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 *AwsS3CompatibleData) MarshalJSON() ([]byte, error) {
	type NoMethod AwsS3CompatibleData
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// AwsS3Data: An AwsS3Data resource can be a data source, but not a data sink.
// In an AwsS3Data resource, an object's name is the S3 object's key name.
type AwsS3Data struct {
	// AwsAccessKey: Input only. AWS access key used to sign the API requests to
	// the AWS S3 bucket. Permissions on the bucket must be granted to the access
	// ID of the AWS access key. For information on our data retention policy for
	// user credentials, see User credentials
	// (/storage-transfer/docs/data-retention#user-credentials).
	AwsAccessKey *AwsAccessKey `json:"awsAccessKey,omitempty"`
	// BucketName: Required. S3 Bucket name (see Creating a bucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/create-bucket-get-location-example.html)).
	BucketName string `json:"bucketName,omitempty"`
	// CloudfrontDomain: Optional. The CloudFront distribution domain name pointing
	// to this bucket, to use when fetching. See Transfer from S3 via CloudFront
	// (https://cloud.google.com/storage-transfer/docs/s3-cloudfront) for more
	// information. Format: `https://{id}.cloudfront.net` or any valid custom
	// domain. Must begin with `https://`.
	CloudfrontDomain string `json:"cloudfrontDomain,omitempty"`
	// CredentialsSecret: Optional. The Resource name of a secret in Secret
	// Manager. AWS credentials must be stored in Secret Manager in JSON format: {
	// "access_key_id": "ACCESS_KEY_ID", "secret_access_key": "SECRET_ACCESS_KEY" }
	// GoogleServiceAccount must be granted `roles/secretmanager.secretAccessor`
	// for the resource. See [Configure access to a source: Amazon S3]
	// (https://cloud.google.com/storage-transfer/docs/source-amazon-s3#secret_manager)
	// for more information. If `credentials_secret` is specified, do not specify
	// role_arn or aws_access_key. Format:
	// `projects/{project_number}/secrets/{secret_name}`
	CredentialsSecret string `json:"credentialsSecret,omitempty"`
	// ManagedPrivateNetwork: Egress bytes over a Google-managed private network.
	// This network is shared between other users of Storage Transfer Service.
	ManagedPrivateNetwork bool `json:"managedPrivateNetwork,omitempty"`
	// Path: Root path to transfer objects. Must be an empty string or full path
	// name that ends with a '/'. This field is treated as an object prefix. As
	// such, it should generally not begin with a '/'.
	Path string `json:"path,omitempty"`
	// RoleArn: The Amazon Resource Name (ARN) of the role to support temporary
	// credentials via `AssumeRoleWithWebIdentity`. For more information about
	// ARNs, see IAM ARNs
	// (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns).
	// When a role ARN is provided, Transfer Service fetches temporary credentials
	// for the session using a `AssumeRoleWithWebIdentity` call for the provided
	// role using the GoogleServiceAccount for this project.
	RoleArn string `json:"roleArn,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AwsAccessKey") 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. "AwsAccessKey") 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 *AwsS3Data) MarshalJSON() ([]byte, error) {
	type NoMethod AwsS3Data
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// AzureBlobStorageData: An AzureBlobStorageData resource can be a data source,
// but not a data sink. An AzureBlobStorageData resource represents one Azure
// container. The storage account determines the Azure endpoint
// (https://docs.microsoft.com/en-us/azure/storage/common/storage-create-storage-account#storage-account-endpoints).
// In an AzureBlobStorageData resource, a blobs's name is the Azure Blob
// Storage blob's key name
// (https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata#blob-names).
type AzureBlobStorageData struct {
	// AzureCredentials: Required. Input only. Credentials used to authenticate API
	// requests to Azure. For information on our data retention policy for user
	// credentials, see User credentials
	// (/storage-transfer/docs/data-retention#user-credentials).
	AzureCredentials *AzureCredentials `json:"azureCredentials,omitempty"`
	// Container: Required. The container to transfer from the Azure Storage
	// account.
	Container string `json:"container,omitempty"`
	// CredentialsSecret: Optional. The Resource name of a secret in Secret
	// Manager. The Azure SAS token must be stored in Secret Manager in JSON
	// format: { "sas_token" : "SAS_TOKEN" } GoogleServiceAccount must be granted
	// `roles/secretmanager.secretAccessor` for the resource. See [Configure access
	// to a source: Microsoft Azure Blob Storage]
	// (https://cloud.google.com/storage-transfer/docs/source-microsoft-azure#secret_manager)
	// for more information. If `credentials_secret` is specified, do not specify
	// azure_credentials. Format: `projects/{project_number}/secrets/{secret_name}`
	CredentialsSecret string `json:"credentialsSecret,omitempty"`
	// Path: Root path to transfer objects. Must be an empty string or full path
	// name that ends with a '/'. This field is treated as an object prefix. As
	// such, it should generally not begin with a '/'.
	Path string `json:"path,omitempty"`
	// StorageAccount: Required. The name of the Azure Storage account.
	StorageAccount string `json:"storageAccount,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AzureCredentials") 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. "AzureCredentials") 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 *AzureBlobStorageData) MarshalJSON() ([]byte, error) {
	type NoMethod AzureBlobStorageData
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// AzureCredentials: Azure credentials For information on our data retention
// policy for user credentials, see User credentials
// (/storage-transfer/docs/data-retention#user-credentials).
type AzureCredentials struct {
	// SasToken: Required. Azure shared access signature (SAS). For more
	// information about SAS, see Grant limited access to Azure Storage resources
	// using shared access signatures (SAS)
	// (https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview).
	SasToken string `json:"sasToken,omitempty"`
	// ForceSendFields is a list of field names (e.g. "SasToken") 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. "SasToken") 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 *AzureCredentials) MarshalJSON() ([]byte, error) {
	type NoMethod AzureCredentials
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// BandwidthLimit: Specifies a bandwidth limit for an agent pool.
type BandwidthLimit struct {
	// LimitMbps: Bandwidth rate in megabytes per second, distributed across all
	// the agents in the pool.
	LimitMbps int64 `json:"limitMbps,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "LimitMbps") 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. "LimitMbps") 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 *BandwidthLimit) MarshalJSON() ([]byte, error) {
	type NoMethod BandwidthLimit
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

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

// Date: Represents a whole or partial calendar date, such as a birthday. The
// time of day and time zone are either specified elsewhere or are
// insignificant. The date is relative to the Gregorian Calendar. This can
// represent one of the following: * A full date, with non-zero year, month,
// and day values. * A month and day, with a zero year (for example, an
// anniversary). * A year on its own, with a zero month and a zero day. * A
// year and month, with a zero day (for example, a credit card expiration
// date). Related types: * google.type.TimeOfDay * google.type.DateTime *
// google.protobuf.Timestamp
type Date struct {
	// Day: Day of a month. Must be from 1 to 31 and valid for the year and month,
	// or 0 to specify a year by itself or a year and month where the day isn't
	// significant.
	Day int64 `json:"day,omitempty"`
	// Month: Month of a year. Must be from 1 to 12, or 0 to specify a year without
	// a month and day.
	Month int64 `json:"month,omitempty"`
	// Year: Year of the date. Must be from 1 to 9999, or 0 to specify a date
	// without a year.
	Year int64 `json:"year,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Day") 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. "Day") 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 *Date) MarshalJSON() ([]byte, error) {
	type NoMethod Date
	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:"-"`
}

// ErrorLogEntry: An entry describing an error that has occurred.
type ErrorLogEntry struct {
	// ErrorDetails: A list of messages that carry the error details.
	ErrorDetails []string `json:"errorDetails,omitempty"`
	// Url: Required. A URL that refers to the target (a data source, a data sink,
	// or an object) with which the error is associated.
	Url string `json:"url,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ErrorDetails") 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. "ErrorDetails") 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 *ErrorLogEntry) MarshalJSON() ([]byte, error) {
	type NoMethod ErrorLogEntry
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// ErrorSummary: A summary of errors by error code, plus a count and sample
// error log entries.
type ErrorSummary struct {
	// ErrorCode: Required.
	//
	// Possible values:
	//   "OK" - Not an error; returned on success. HTTP Mapping: 200 OK
	//   "CANCELLED" - The operation was cancelled, typically by the caller. HTTP
	// Mapping: 499 Client Closed Request
	//   "UNKNOWN" - Unknown error. For example, this error may be returned when a
	// `Status` value received from another address space belongs to an error space
	// that is not known in this address space. Also errors raised by APIs that do
	// not return enough error information may be converted to this error. HTTP
	// Mapping: 500 Internal Server Error
	//   "INVALID_ARGUMENT" - The client specified an invalid argument. Note that
	// this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates
	// arguments that are problematic regardless of the state of the system (e.g.,
	// a malformed file name). HTTP Mapping: 400 Bad Request
	//   "DEADLINE_EXCEEDED" - The deadline expired before the operation could
	// complete. For operations that change the state of the system, this error may
	// be returned even if the operation has completed successfully. For example, a
	// successful response from a server could have been delayed long enough for
	// the deadline to expire. HTTP Mapping: 504 Gateway Timeout
	//   "NOT_FOUND" - Some requested entity (e.g., file or directory) was not
	// found. Note to server developers: if a request is denied for an entire class
	// of users, such as gradual feature rollout or undocumented allowlist,
	// `NOT_FOUND` may be used. If a request is denied for some users within a
	// class of users, such as user-based access control, `PERMISSION_DENIED` must
	// be used. HTTP Mapping: 404 Not Found
	//   "ALREADY_EXISTS" - The entity that a client attempted to create (e.g.,
	// file or directory) already exists. HTTP Mapping: 409 Conflict
	//   "PERMISSION_DENIED" - The caller does not have permission to execute the
	// specified operation. `PERMISSION_DENIED` must not be used for rejections
	// caused by exhausting some resource (use `RESOURCE_EXHAUSTED` instead for
	// those errors). `PERMISSION_DENIED` must not be used if the caller can not be
	// identified (use `UNAUTHENTICATED` instead for those errors). This error code
	// does not imply the request is valid or the requested entity exists or
	// satisfies other pre-conditions. HTTP Mapping: 403 Forbidden
	//   "UNAUTHENTICATED" - The request does not have valid authentication
	// credentials for the operation. HTTP Mapping: 401 Unauthorized
	//   "RESOURCE_EXHAUSTED" - Some resource has been exhausted, perhaps a
	// per-user quota, or perhaps the entire file system is out of space. HTTP
	// Mapping: 429 Too Many Requests
	//   "FAILED_PRECONDITION" - The operation was rejected because the system is
	// not in a state required for the operation's execution. For example, the
	// directory to be deleted is non-empty, an rmdir operation is applied to a
	// non-directory, etc. Service implementors can use the following guidelines to
	// decide between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: (a) Use
	// `UNAVAILABLE` if the client can retry just the failing call. (b) Use
	// `ABORTED` if the client should retry at a higher level. For example, when a
	// client-specified test-and-set fails, indicating the client should restart a
	// read-modify-write sequence. (c) Use `FAILED_PRECONDITION` if the client
	// should not retry until the system state has been explicitly fixed. For
	// example, if an "rmdir" fails because the directory is non-empty,
	// `FAILED_PRECONDITION` should be returned since the client should not retry
	// unless the files are deleted from the directory. HTTP Mapping: 400 Bad
	// Request
	//   "ABORTED" - The operation was aborted, typically due to a concurrency
	// issue such as a sequencer check failure or transaction abort. See the
	// guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and
	// `UNAVAILABLE`. HTTP Mapping: 409 Conflict
	//   "OUT_OF_RANGE" - The operation was attempted past the valid range. E.g.,
	// seeking or reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error
	// indicates a problem that may be fixed if the system state changes. For
	// example, a 32-bit file system will generate `INVALID_ARGUMENT` if asked to
	// read at an offset that is not in the range [0,2^32-1], but it will generate
	// `OUT_OF_RANGE` if asked to read from an offset past the current file size.
	// There is a fair bit of overlap between `FAILED_PRECONDITION` and
	// `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific error)
	// when it applies so that callers who are iterating through a space can easily
	// look for an `OUT_OF_RANGE` error to detect when they are done. HTTP Mapping:
	// 400 Bad Request
	//   "UNIMPLEMENTED" - The operation is not implemented or is not
	// supported/enabled in this service. HTTP Mapping: 501 Not Implemented
	//   "INTERNAL" - Internal errors. This means that some invariants expected by
	// the underlying system have been broken. This error code is reserved for
	// serious errors. HTTP Mapping: 500 Internal Server Error
	//   "UNAVAILABLE" - The service is currently unavailable. This is most likely
	// a transient condition, which can be corrected by retrying with a backoff.
	// Note that it is not always safe to retry non-idempotent operations. See the
	// guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and
	// `UNAVAILABLE`. HTTP Mapping: 503 Service Unavailable
	//   "DATA_LOSS" - Unrecoverable data loss or corruption. HTTP Mapping: 500
	// Internal Server Error
	ErrorCode string `json:"errorCode,omitempty"`
	// ErrorCount: Required. Count of this type of error.
	ErrorCount int64 `json:"errorCount,omitempty,string"`
	// ErrorLogEntries: Error samples. At most 5 error log entries are recorded for
	// a given error code for a single transfer operation.
	ErrorLogEntries []*ErrorLogEntry `json:"errorLogEntries,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ErrorCode") 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. "ErrorCode") 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 *ErrorSummary) MarshalJSON() ([]byte, error) {
	type NoMethod ErrorSummary
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// EventStream: Specifies the Event-driven transfer options. Event-driven
// transfers listen to an event stream to transfer updated files.
type EventStream struct {
	// EventStreamExpirationTime: Specifies the data and time at which Storage
	// Transfer Service stops listening for events from this stream. After this
	// time, any transfers in progress will complete, but no new transfers are
	// initiated.
	EventStreamExpirationTime string `json:"eventStreamExpirationTime,omitempty"`
	// EventStreamStartTime: Specifies the date and time that Storage Transfer
	// Service starts listening for events from this stream. If no start time is
	// specified or start time is in the past, Storage Transfer Service starts
	// listening immediately.
	EventStreamStartTime string `json:"eventStreamStartTime,omitempty"`
	// Name: Required. Specifies a unique name of the resource such as AWS SQS ARN
	// in the form 'arn:aws:sqs:region:account_id:queue_name', or Pub/Sub
	// subscription resource name in the form
	// 'projects/{project}/subscriptions/{sub}'.
	Name string `json:"name,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EventStreamExpirationTime")
	// 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. "EventStreamExpirationTime") 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 *EventStream) MarshalJSON() ([]byte, error) {
	type NoMethod EventStream
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// GcsData: In a GcsData resource, an object's name is the Cloud Storage
// object's name and its "last modification time" refers to the object's
// `updated` property of Cloud Storage objects, which changes when the content
// or the metadata of the object is updated.
type GcsData struct {
	// BucketName: Required. Cloud Storage bucket name. Must meet Bucket Name
	// Requirements (/storage/docs/naming#requirements).
	BucketName string `json:"bucketName,omitempty"`
	// ManagedFolderTransferEnabled: Preview. Enables the transfer of managed
	// folders between Cloud Storage buckets. Set this option on the
	// gcs_data_source. If set to true: - Managed folders in the source bucket are
	// transferred to the destination bucket. - Managed folders in the destination
	// bucket are overwritten. Other OVERWRITE options are not supported. See
	// Transfer Cloud Storage managed folders
	// (/storage-transfer/docs/managed-folders).
	ManagedFolderTransferEnabled bool `json:"managedFolderTransferEnabled,omitempty"`
	// Path: Root path to transfer objects. Must be an empty string or full path
	// name that ends with a '/'. This field is treated as an object prefix. As
	// such, it should generally not begin with a '/'. The root path value must
	// meet Object Name Requirements (/storage/docs/naming#objectnames).
	Path string `json:"path,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BucketName") 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. "BucketName") 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 *GcsData) MarshalJSON() ([]byte, error) {
	type NoMethod GcsData
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// GoogleServiceAccount: Google service account
type GoogleServiceAccount struct {
	// AccountEmail: Email address of the service account.
	AccountEmail string `json:"accountEmail,omitempty"`
	// SubjectId: Unique identifier for the service account.
	SubjectId string `json:"subjectId,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AccountEmail") 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. "AccountEmail") 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 *GoogleServiceAccount) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleServiceAccount
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// HdfsData: An HdfsData resource specifies a path within an HDFS entity (e.g.
// a cluster). All cluster-specific settings, such as namenodes and ports, are
// configured on the transfer agents servicing requests, so HdfsData only
// contains the root path to the data in our transfer.
type HdfsData struct {
	// Path: Root path to transfer files.
	Path string `json:"path,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 *HdfsData) MarshalJSON() ([]byte, error) {
	type NoMethod HdfsData
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// HttpData: An HttpData resource specifies a list of objects on the web to be
// transferred over HTTP. The information of the objects to be transferred is
// contained in a file referenced by a URL. The first line in the file must be
// "TsvHttpData-1.0", which specifies the format of the file. Subsequent
// lines specify the information of the list of objects, one object per list
// entry. Each entry has the following tab-delimited fields: * **HTTP URL** —
// The location of the object. * **Length** — The size of the object in
// bytes. * **MD5** — The base64-encoded MD5 hash of the object. For an
// example of a valid TSV file, see Transferring data from URLs
// (https://cloud.google.com/storage-transfer/docs/create-url-list). When
// transferring data based on a URL list, keep the following in mind: * When an
// object located at `http(s)://hostname:port/` is transferred to a data sink,
// the name of the object at the data sink is `/`. * If the specified size of
// an object does not match the actual size of the object fetched, the object
// is not transferred. * If the specified MD5 does not match the MD5 computed
// from the transferred bytes, the object transfer fails. * Ensure that each
// URL you specify is publicly accessible. For example, in Cloud Storage you
// can [share an object publicly] (/storage/docs/cloud-console#_sharingdata)
// and get a link to it. * Storage Transfer Service obeys `robots.txt` rules
// and requires the source HTTP server to support `Range` requests and to
// return a `Content-Length` header in each response. * ObjectConditions have
// no effect when filtering objects to transfer.
type HttpData struct {
	// ListUrl: Required. The URL that points to the file that stores the object
	// list entries. This file must allow public access. Currently, only URLs with
	// HTTP and HTTPS schemes are supported.
	ListUrl string `json:"listUrl,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ListUrl") 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. "ListUrl") 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 *HttpData) MarshalJSON() ([]byte, error) {
	type NoMethod HttpData
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// ListAgentPoolsResponse: Response from ListAgentPools.
type ListAgentPoolsResponse struct {
	// AgentPools: A list of agent pools.
	AgentPools []*AgentPool `json:"agentPools,omitempty"`
	// NextPageToken: The 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. "AgentPools") 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. "AgentPools") 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 *ListAgentPoolsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListAgentPoolsResponse
	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)
}

// ListTransferJobsResponse: Response from ListTransferJobs.
type ListTransferJobsResponse struct {
	// NextPageToken: The list next page token.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// TransferJobs: A list of transfer jobs.
	TransferJobs []*TransferJob `json:"transferJobs,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 *ListTransferJobsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListTransferJobsResponse
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// LoggingConfig: Specifies the logging behavior for transfer operations. Logs
// can be sent to Cloud Logging for all transfer types. See Read transfer logs
// (https://cloud.google.com/storage-transfer/docs/read-transfer-logs) for
// details.
type LoggingConfig struct {
	// EnableOnpremGcsTransferLogs: For PosixFilesystem transfers, enables file
	// system transfer logs
	// (https://cloud.google.com/storage-transfer/docs/on-prem-transfer-log-format)
	// instead of, or in addition to, Cloud Logging. This option ignores
	// [LoggableAction] and [LoggableActionState]. If these are set, Cloud Logging
	// will also be enabled for this transfer.
	EnableOnpremGcsTransferLogs bool `json:"enableOnpremGcsTransferLogs,omitempty"`
	// LogActionStates: States in which `log_actions` are logged. If empty, no logs
	// are generated.
	//
	// Possible values:
	//   "LOGGABLE_ACTION_STATE_UNSPECIFIED" - Default value. This value is unused.
	//   "SUCCEEDED" - `LoggableAction` completed successfully. `SUCCEEDED` actions
	// are logged as INFO.
	//   "FAILED" - `LoggableAction` terminated in an error state. `FAILED` actions
	// are logged as ERROR.
	LogActionStates []string `json:"logActionStates,omitempty"`
	// LogActions: Specifies the actions to be logged. If empty, no logs are
	// generated.
	//
	// Possible values:
	//   "LOGGABLE_ACTION_UNSPECIFIED" - Default value. This value is unused.
	//   "FIND" - Listing objects in a bucket.
	//   "DELETE" - Deleting objects at the source or the destination.
	//   "COPY" - Copying objects to Google Cloud Storage.
	LogActions []string `json:"logActions,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "EnableOnpremGcsTransferLogs") 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. "EnableOnpremGcsTransferLogs") 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 *LoggingConfig) MarshalJSON() ([]byte, error) {
	type NoMethod LoggingConfig
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// MetadataOptions: Specifies the metadata options for running a transfer.
type MetadataOptions struct {
	// Acl: Specifies how each object's ACLs should be preserved for transfers
	// between Google Cloud Storage buckets. If unspecified, the default behavior
	// is the same as ACL_DESTINATION_BUCKET_DEFAULT.
	//
	// Possible values:
	//   "ACL_UNSPECIFIED" - ACL behavior is unspecified.
	//   "ACL_DESTINATION_BUCKET_DEFAULT" - Use the destination bucket's default
	// object ACLS, if applicable.
	//   "ACL_PRESERVE" - Preserve the object's original ACLs. This requires the
	// service account to have `storage.objects.getIamPolicy` permission for the
	// source object. [Uniform bucket-level
	// access](https://cloud.google.com/storage/docs/uniform-bucket-level-access)
	// must not be enabled on either the source or destination buckets.
	Acl string `json:"acl,omitempty"`
	// Gid: Specifies how each file's POSIX group ID (GID) attribute should be
	// handled by the transfer. By default, GID is not preserved. Only applicable
	// to transfers involving POSIX file systems, and ignored for other transfers.
	//
	// Possible values:
	//   "GID_UNSPECIFIED" - GID behavior is unspecified.
	//   "GID_SKIP" - Do not preserve GID during a transfer job.
	//   "GID_NUMBER" - Preserve GID during a transfer job.
	Gid string `json:"gid,omitempty"`
	// KmsKey: Specifies how each object's Cloud KMS customer-managed encryption
	// key (CMEK) is preserved for transfers between Google Cloud Storage buckets.
	// If unspecified, the default behavior is the same as
	// KMS_KEY_DESTINATION_BUCKET_DEFAULT.
	//
	// Possible values:
	//   "KMS_KEY_UNSPECIFIED" - KmsKey behavior is unspecified.
	//   "KMS_KEY_DESTINATION_BUCKET_DEFAULT" - Use the destination bucket's
	// default encryption settings.
	//   "KMS_KEY_PRESERVE" - Preserve the object's original Cloud KMS
	// customer-managed encryption key (CMEK) if present. Objects that do not use a
	// Cloud KMS encryption key will be encrypted using the destination bucket's
	// encryption settings.
	KmsKey string `json:"kmsKey,omitempty"`
	// Mode: Specifies how each file's mode attribute should be handled by the
	// transfer. By default, mode is not preserved. Only applicable to transfers
	// involving POSIX file systems, and ignored for other transfers.
	//
	// Possible values:
	//   "MODE_UNSPECIFIED" - Mode behavior is unspecified.
	//   "MODE_SKIP" - Do not preserve mode during a transfer job.
	//   "MODE_PRESERVE" - Preserve mode during a transfer job.
	Mode string `json:"mode,omitempty"`
	// StorageClass: Specifies the storage class to set on objects being
	// transferred to Google Cloud Storage buckets. If unspecified, the default
	// behavior is the same as STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT.
	//
	// Possible values:
	//   "STORAGE_CLASS_UNSPECIFIED" - Storage class behavior is unspecified.
	//   "STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT" - Use the destination bucket's
	// default storage class.
	//   "STORAGE_CLASS_PRESERVE" - Preserve the object's original storage class.
	// This is only supported for transfers from Google Cloud Storage buckets.
	// REGIONAL and MULTI_REGIONAL storage classes will be mapped to STANDARD to
	// ensure they can be written to the destination bucket.
	//   "STORAGE_CLASS_STANDARD" - Set the storage class to STANDARD.
	//   "STORAGE_CLASS_NEARLINE" - Set the storage class to NEARLINE.
	//   "STORAGE_CLASS_COLDLINE" - Set the storage class to COLDLINE.
	//   "STORAGE_CLASS_ARCHIVE" - Set the storage class to ARCHIVE.
	StorageClass string `json:"storageClass,omitempty"`
	// Symlink: Specifies how symlinks should be handled by the transfer. By
	// default, symlinks are not preserved. Only applicable to transfers involving
	// POSIX file systems, and ignored for other transfers.
	//
	// Possible values:
	//   "SYMLINK_UNSPECIFIED" - Symlink behavior is unspecified.
	//   "SYMLINK_SKIP" - Do not preserve symlinks during a transfer job.
	//   "SYMLINK_PRESERVE" - Preserve symlinks during a transfer job.
	Symlink string `json:"symlink,omitempty"`
	// TemporaryHold: Specifies how each object's temporary hold status should be
	// preserved for transfers between Google Cloud Storage buckets. If
	// unspecified, the default behavior is the same as TEMPORARY_HOLD_PRESERVE.
	//
	// Possible values:
	//   "TEMPORARY_HOLD_UNSPECIFIED" - Temporary hold behavior is unspecified.
	//   "TEMPORARY_HOLD_SKIP" - Do not set a temporary hold on the destination
	// object.
	//   "TEMPORARY_HOLD_PRESERVE" - Preserve the object's original temporary hold
	// status.
	TemporaryHold string `json:"temporaryHold,omitempty"`
	// TimeCreated: Specifies how each object's `timeCreated` metadata is preserved
	// for transfers. If unspecified, the default behavior is the same as
	// TIME_CREATED_SKIP. This behavior is supported for transfers to GCS buckets
	// from GCS, S3, Azure, S3 Compatible, and Azure sources.
	//
	// Possible values:
	//   "TIME_CREATED_UNSPECIFIED" - TimeCreated behavior is unspecified.
	//   "TIME_CREATED_SKIP" - Do not preserve the `timeCreated` metadata from the
	// source object.
	//   "TIME_CREATED_PRESERVE_AS_CUSTOM_TIME" - Preserves the source object's
	// `timeCreated` or `lastModified` metadata in the `customTime` field in the
	// destination object. Note that any value stored in the source object's
	// `customTime` field will not be propagated to the destination object.
	TimeCreated string `json:"timeCreated,omitempty"`
	// Uid: Specifies how each file's POSIX user ID (UID) attribute should be
	// handled by the transfer. By default, UID is not preserved. Only applicable
	// to transfers involving POSIX file systems, and ignored for other transfers.
	//
	// Possible values:
	//   "UID_UNSPECIFIED" - UID behavior is unspecified.
	//   "UID_SKIP" - Do not preserve UID during a transfer job.
	//   "UID_NUMBER" - Preserve UID during a transfer job.
	Uid string `json:"uid,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Acl") 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. "Acl") 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 *MetadataOptions) MarshalJSON() ([]byte, error) {
	type NoMethod MetadataOptions
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// NotificationConfig: Specification to configure notifications published to
// Pub/Sub. Notifications are published to the customer-provided topic using
// the following `PubsubMessage.attributes`: * "eventType": one of the
// EventType values * "payloadFormat": one of the PayloadFormat values *
// "projectId": the project_id of the `TransferOperation` *
// "transferJobName": the transfer_job_name of the `TransferOperation` *
// "transferOperationName": the name of the `TransferOperation` The
// `PubsubMessage.data` contains a TransferOperation resource formatted
// according to the specified `PayloadFormat`.
type NotificationConfig struct {
	// EventTypes: Event types for which a notification is desired. If empty, send
	// notifications for all event types.
	//
	// Possible values:
	//   "EVENT_TYPE_UNSPECIFIED" - Illegal value, to avoid allowing a default.
	//   "TRANSFER_OPERATION_SUCCESS" - `TransferOperation` completed with status
	// SUCCESS.
	//   "TRANSFER_OPERATION_FAILED" - `TransferOperation` completed with status
	// FAILED.
	//   "TRANSFER_OPERATION_ABORTED" - `TransferOperation` completed with status
	// ABORTED.
	EventTypes []string `json:"eventTypes,omitempty"`
	// PayloadFormat: Required. The desired format of the notification message
	// payloads.
	//
	// Possible values:
	//   "PAYLOAD_FORMAT_UNSPECIFIED" - Illegal value, to avoid allowing a default.
	//   "NONE" - No payload is included with the notification.
	//   "JSON" - `TransferOperation` is [formatted as a JSON
	// response](https://developers.google.com/protocol-buffers/docs/proto3#json),
	// in application/json.
	PayloadFormat string `json:"payloadFormat,omitempty"`
	// PubsubTopic: Required. The `Topic.name` of the Pub/Sub topic to which to
	// publish notifications. Must be of the format:
	// `projects/{project}/topics/{topic}`. Not matching this format results in an
	// INVALID_ARGUMENT error.
	PubsubTopic string `json:"pubsubTopic,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EventTypes") 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. "EventTypes") 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 *NotificationConfig) MarshalJSON() ([]byte, error) {
	type NoMethod NotificationConfig
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// ObjectConditions: Conditions that determine which objects are transferred.
// Applies only to Cloud Data Sources such as S3, Azure, and Cloud Storage. The
// "last modification time" refers to the time of the last change to the
// object's content or metadata — specifically, this is the `updated`
// property of Cloud Storage objects, the `LastModified` field of S3 objects,
// and the `Last-Modified` header of Azure blobs. Transfers with a
// PosixFilesystem source or destination don't support `ObjectConditions`.
type ObjectConditions struct {
	// ExcludePrefixes: If you specify `exclude_prefixes`, Storage Transfer Service
	// uses the items in the `exclude_prefixes` array to determine which objects to
	// exclude from a transfer. Objects must not start with one of the matching
	// `exclude_prefixes` for inclusion in a transfer. The following are
	// requirements of `exclude_prefixes`: * Each exclude-prefix can contain any
	// sequence of Unicode characters, to a max length of 1024 bytes when
	// UTF8-encoded, and must not contain Carriage Return or Line Feed characters.
	// Wildcard matching and regular expression matching are not supported. * Each
	// exclude-prefix must omit the leading slash. For example, to exclude the
	// object `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the
	// exclude-prefix as `logs/y=2015/requests.gz`. * None of the exclude-prefix
	// values can be empty, if specified. * Each exclude-prefix must exclude a
	// distinct portion of the object namespace. No exclude-prefix may be a prefix
	// of another exclude-prefix. * If include_prefixes is specified, then each
	// exclude-prefix must start with the value of a path explicitly included by
	// `include_prefixes`. The max size of `exclude_prefixes` is 1000. For more
	// information, see Filtering objects from transfers
	// (/storage-transfer/docs/filtering-objects-from-transfers).
	ExcludePrefixes []string `json:"excludePrefixes,omitempty"`
	// IncludePrefixes: If you specify `include_prefixes`, Storage Transfer Service
	// uses the items in the `include_prefixes` array to determine which objects to
	// include in a transfer. Objects must start with one of the matching
	// `include_prefixes` for inclusion in the transfer. If exclude_prefixes is
	// specified, objects must not start with any of the `exclude_prefixes`
	// specified for inclusion in the transfer. The following are requirements of
	// `include_prefixes`: * Each include-prefix can contain any sequence of
	// Unicode characters, to a max length of 1024 bytes when UTF8-encoded, and
	// must not contain Carriage Return or Line Feed characters. Wildcard matching
	// and regular expression matching are not supported. * Each include-prefix
	// must omit the leading slash. For example, to include the object
	// `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the include-prefix as
	// `logs/y=2015/requests.gz`. * None of the include-prefix values can be empty,
	// if specified. * Each include-prefix must include a distinct portion of the
	// object namespace. No include-prefix may be a prefix of another
	// include-prefix. The max size of `include_prefixes` is 1000. For more
	// information, see Filtering objects from transfers
	// (/storage-transfer/docs/filtering-objects-from-transfers).
	IncludePrefixes []string `json:"includePrefixes,omitempty"`
	// LastModifiedBefore: If specified, only objects with a "last modification
	// time" before this timestamp and objects that don't have a "last modification
	// time" are transferred.
	LastModifiedBefore string `json:"lastModifiedBefore,omitempty"`
	// LastModifiedSince: If specified, only objects with a "last modification
	// time" on or after this timestamp and objects that don't have a "last
	// modification time" are transferred. The `last_modified_since` and
	// `last_modified_before` fields can be used together for chunked data
	// processing. For example, consider a script that processes each day's worth
	// of data at a time. For that you'd set each of the fields as follows: *
	// `last_modified_since` to the start of the day * `last_modified_before` to
	// the end of the day
	LastModifiedSince string `json:"lastModifiedSince,omitempty"`
	// MaxTimeElapsedSinceLastModification: Ensures that objects are not
	// transferred if a specific maximum time has elapsed since the "last
	// modification time". When a TransferOperation begins, objects with a "last
	// modification time" are transferred only if the elapsed time between the
	// start_time of the `TransferOperation`and the "last modification time" of the
	// object is less than the value of max_time_elapsed_since_last_modification`.
	// Objects that do not have a "last modification time" are also transferred.
	MaxTimeElapsedSinceLastModification string `json:"maxTimeElapsedSinceLastModification,omitempty"`
	// MinTimeElapsedSinceLastModification: Ensures that objects are not
	// transferred until a specific minimum time has elapsed after the "last
	// modification time". When a TransferOperation begins, objects with a "last
	// modification time" are transferred only if the elapsed time between the
	// start_time of the `TransferOperation` and the "last modification time" of
	// the object is equal to or greater than the value of
	// min_time_elapsed_since_last_modification`. Objects that do not have a "last
	// modification time" are also transferred.
	MinTimeElapsedSinceLastModification string `json:"minTimeElapsedSinceLastModification,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ExcludePrefixes") 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. "ExcludePrefixes") 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 *ObjectConditions) MarshalJSON() ([]byte, error) {
	type NoMethod ObjectConditions
	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: Represents the transfer operation object. To request a
	// TransferOperation object, use transferOperations.get.
	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
	// Name: The server-assigned unique name. The format of `name` is
	// `transferOperations/some/unique/name`.
	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)
}

// PauseTransferOperationRequest: Request passed to PauseTransferOperation.
type PauseTransferOperationRequest struct {
}

// PosixFilesystem: A POSIX filesystem resource.
type PosixFilesystem struct {
	// RootDirectory: Root directory path to the filesystem.
	RootDirectory string `json:"rootDirectory,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RootDirectory") 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. "RootDirectory") 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 *PosixFilesystem) MarshalJSON() ([]byte, error) {
	type NoMethod PosixFilesystem
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// ReplicationSpec: Specifies the configuration for running a replication job.
type ReplicationSpec struct {
	// GcsDataSink: Specifies cloud Storage data sink.
	GcsDataSink *GcsData `json:"gcsDataSink,omitempty"`
	// GcsDataSource: Specifies cloud Storage data source.
	GcsDataSource *GcsData `json:"gcsDataSource,omitempty"`
	// ObjectConditions: Specifies the object conditions to only include objects
	// that satisfy these conditions in the set of data source objects. Object
	// conditions based on objects' "last modification time" do not exclude objects
	// in a data sink.
	ObjectConditions *ObjectConditions `json:"objectConditions,omitempty"`
	// TransferOptions: Specifies the actions to be performed on the object during
	// replication. Delete options are not supported for replication and when
	// specified, the request fails with an INVALID_ARGUMENT error.
	TransferOptions *TransferOptions `json:"transferOptions,omitempty"`
	// ForceSendFields is a list of field names (e.g. "GcsDataSink") 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. "GcsDataSink") 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 *ReplicationSpec) MarshalJSON() ([]byte, error) {
	type NoMethod ReplicationSpec
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// ResumeTransferOperationRequest: Request passed to ResumeTransferOperation.
type ResumeTransferOperationRequest struct {
}

// RunTransferJobRequest: Request passed to RunTransferJob.
type RunTransferJobRequest struct {
	// ProjectId: Required. The ID of the Google Cloud project that owns the
	// transfer job.
	ProjectId string `json:"projectId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ProjectId") 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. "ProjectId") 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 *RunTransferJobRequest) MarshalJSON() ([]byte, error) {
	type NoMethod RunTransferJobRequest
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// S3CompatibleMetadata: S3CompatibleMetadata contains the metadata fields that
// apply to the basic types of S3-compatible data providers.
type S3CompatibleMetadata struct {
	// AuthMethod: Specifies the authentication and authorization method used by
	// the storage service. When not specified, Transfer Service will attempt to
	// determine right auth method to use.
	//
	// Possible values:
	//   "AUTH_METHOD_UNSPECIFIED" - AuthMethod is not specified.
	//   "AUTH_METHOD_AWS_SIGNATURE_V4" - Auth requests with AWS SigV4.
	//   "AUTH_METHOD_AWS_SIGNATURE_V2" - Auth requests with AWS SigV2.
	AuthMethod string `json:"authMethod,omitempty"`
	// ListApi: The Listing API to use for discovering objects. When not specified,
	// Transfer Service will attempt to determine the right API to use.
	//
	// Possible values:
	//   "LIST_API_UNSPECIFIED" - ListApi is not specified.
	//   "LIST_OBJECTS_V2" - Perform listing using ListObjectsV2 API.
	//   "LIST_OBJECTS" - Legacy ListObjects API.
	ListApi string `json:"listApi,omitempty"`
	// Protocol: Specifies the network protocol of the agent. When not specified,
	// the default value of NetworkProtocol NETWORK_PROTOCOL_HTTPS is used.
	//
	// Possible values:
	//   "NETWORK_PROTOCOL_UNSPECIFIED" - NetworkProtocol is not specified.
	//   "NETWORK_PROTOCOL_HTTPS" - Perform requests using HTTPS.
	//   "NETWORK_PROTOCOL_HTTP" - Not recommended: This sends data in clear-text.
	// This is only appropriate within a closed network or for publicly available
	// data. Perform requests using HTTP.
	Protocol string `json:"protocol,omitempty"`
	// RequestModel: Specifies the API request model used to call the storage
	// service. When not specified, the default value of RequestModel
	// REQUEST_MODEL_VIRTUAL_HOSTED_STYLE is used.
	//
	// Possible values:
	//   "REQUEST_MODEL_UNSPECIFIED" - RequestModel is not specified.
	//   "REQUEST_MODEL_VIRTUAL_HOSTED_STYLE" - Perform requests using Virtual
	// Hosted Style. Example: https://bucket-name.s3.region.amazonaws.com/key-name
	//   "REQUEST_MODEL_PATH_STYLE" - Perform requests using Path Style. Example:
	// https://s3.region.amazonaws.com/bucket-name/key-name
	RequestModel string `json:"requestModel,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AuthMethod") 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. "AuthMethod") 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 *S3CompatibleMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod S3CompatibleMetadata
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// Schedule: Transfers can be scheduled to recur or to run just once.
type Schedule struct {
	// EndTimeOfDay: The time in UTC that no further transfer operations are
	// scheduled. Combined with schedule_end_date, `end_time_of_day` specifies the
	// end date and time for starting new transfer operations. This field must be
	// greater than or equal to the timestamp corresponding to the combintation of
	// schedule_start_date and start_time_of_day, and is subject to the following:
	// * If `end_time_of_day` is not set and `schedule_end_date` is set, then a
	// default value of `23:59:59` is used for `end_time_of_day`. * If
	// `end_time_of_day` is set and `schedule_end_date` is not set, then
	// INVALID_ARGUMENT is returned.
	EndTimeOfDay *TimeOfDay `json:"endTimeOfDay,omitempty"`
	// RepeatInterval: Interval between the start of each scheduled
	// TransferOperation. If unspecified, the default value is 24 hours. This value
	// may not be less than 1 hour.
	RepeatInterval string `json:"repeatInterval,omitempty"`
	// ScheduleEndDate: The last day a transfer runs. Date boundaries are
	// determined relative to UTC time. A job runs once per 24 hours within the
	// following guidelines: * If `schedule_end_date` and schedule_start_date are
	// the same and in the future relative to UTC, the transfer is executed only
	// one time. * If `schedule_end_date` is later than `schedule_start_date` and
	// `schedule_end_date` is in the future relative to UTC, the job runs each day
	// at start_time_of_day through `schedule_end_date`.
	ScheduleEndDate *Date `json:"scheduleEndDate,omitempty"`
	// ScheduleStartDate: Required. The start date of a transfer. Date boundaries
	// are determined relative to UTC time. If `schedule_start_date` and
	// start_time_of_day are in the past relative to the job's creation time, the
	// transfer starts the day after you schedule the transfer request. **Note:**
	// When starting jobs at or near midnight UTC it is possible that a job starts
	// later than expected. For example, if you send an outbound request on June 1
	// one millisecond prior to midnight UTC and the Storage Transfer Service
	// server receives the request on June 2, then it creates a TransferJob with
	// `schedule_start_date` set to June 2 and a `start_time_of_day` set to
	// midnight UTC. The first scheduled TransferOperation takes place on June 3 at
	// midnight UTC.
	ScheduleStartDate *Date `json:"scheduleStartDate,omitempty"`
	// StartTimeOfDay: The time in UTC that a transfer job is scheduled to run.
	// Transfers may start later than this time. If `start_time_of_day` is not
	// specified: * One-time transfers run immediately. * Recurring transfers run
	// immediately, and each day at midnight UTC, through schedule_end_date. If
	// `start_time_of_day` is specified: * One-time transfers run at the specified
	// time. * Recurring transfers run at the specified time each day, through
	// `schedule_end_date`.
	StartTimeOfDay *TimeOfDay `json:"startTimeOfDay,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndTimeOfDay") 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. "EndTimeOfDay") 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 *Schedule) MarshalJSON() ([]byte, error) {
	type NoMethod Schedule
	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)
}

// TimeOfDay: Represents a time of day. The date and time zone are either not
// significant or are specified elsewhere. An API may choose to allow leap
// seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.
type TimeOfDay struct {
	// Hours: Hours of day in 24 hour format. Should be from 0 to 23. An API may
	// choose to allow the value "24:00:00" for scenarios like business closing
	// time.
	Hours int64 `json:"hours,omitempty"`
	// Minutes: Minutes of hour of day. Must be from 0 to 59.
	Minutes int64 `json:"minutes,omitempty"`
	// Nanos: Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
	Nanos int64 `json:"nanos,omitempty"`
	// Seconds: Seconds of minutes of the time. Must normally be from 0 to 59. An
	// API may allow the value 60 if it allows leap-seconds.
	Seconds int64 `json:"seconds,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Hours") 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. "Hours") 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 *TimeOfDay) MarshalJSON() ([]byte, error) {
	type NoMethod TimeOfDay
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// TransferCounters: A collection of counters that report the progress of a
// transfer operation.
type TransferCounters struct {
	// BytesCopiedToSink: Bytes that are copied to the data sink.
	BytesCopiedToSink int64 `json:"bytesCopiedToSink,omitempty,string"`
	// BytesDeletedFromSink: Bytes that are deleted from the data sink.
	BytesDeletedFromSink int64 `json:"bytesDeletedFromSink,omitempty,string"`
	// BytesDeletedFromSource: Bytes that are deleted from the data source.
	BytesDeletedFromSource int64 `json:"bytesDeletedFromSource,omitempty,string"`
	// BytesFailedToDeleteFromSink: Bytes that failed to be deleted from the data
	// sink.
	BytesFailedToDeleteFromSink int64 `json:"bytesFailedToDeleteFromSink,omitempty,string"`
	// BytesFoundFromSource: Bytes found in the data source that are scheduled to
	// be transferred, excluding any that are filtered based on object conditions
	// or skipped due to sync.
	BytesFoundFromSource int64 `json:"bytesFoundFromSource,omitempty,string"`
	// BytesFoundOnlyFromSink: Bytes found only in the data sink that are scheduled
	// to be deleted.
	BytesFoundOnlyFromSink int64 `json:"bytesFoundOnlyFromSink,omitempty,string"`
	// BytesFromSourceFailed: Bytes in the data source that failed to be
	// transferred or that failed to be deleted after being transferred.
	BytesFromSourceFailed int64 `json:"bytesFromSourceFailed,omitempty,string"`
	// BytesFromSourceSkippedBySync: Bytes in the data source that are not
	// transferred because they already exist in the data sink.
	BytesFromSourceSkippedBySync int64 `json:"bytesFromSourceSkippedBySync,omitempty,string"`
	// DirectoriesFailedToListFromSource: For transfers involving PosixFilesystem
	// only. Number of listing failures for each directory found at the source.
	// Potential failures when listing a directory include permission failure or
	// block failure. If listing a directory fails, no files in the directory are
	// transferred.
	DirectoriesFailedToListFromSource int64 `json:"directoriesFailedToListFromSource,omitempty,string"`
	// DirectoriesFoundFromSource: For transfers involving PosixFilesystem only.
	// Number of directories found while listing. For example, if the root
	// directory of the transfer is `base/` and there are two other directories,
	// `a/` and `b/` under this directory, the count after listing `base/`,
	// `base/a/` and `base/b/` is 3.
	DirectoriesFoundFromSource int64 `json:"directoriesFoundFromSource,omitempty,string"`
	// DirectoriesSuccessfullyListedFromSource: For transfers involving
	// PosixFilesystem only. Number of successful listings for each directory found
	// at the source.
	DirectoriesSuccessfullyListedFromSource int64 `json:"directoriesSuccessfullyListedFromSource,omitempty,string"`
	// IntermediateObjectsCleanedUp: Number of successfully cleaned up intermediate
	// objects.
	IntermediateObjectsCleanedUp int64 `json:"intermediateObjectsCleanedUp,omitempty,string"`
	// IntermediateObjectsFailedCleanedUp: Number of intermediate objects failed
	// cleaned up.
	IntermediateObjectsFailedCleanedUp int64 `json:"intermediateObjectsFailedCleanedUp,omitempty,string"`
	// ObjectsCopiedToSink: Objects that are copied to the data sink.
	ObjectsCopiedToSink int64 `json:"objectsCopiedToSink,omitempty,string"`
	// ObjectsDeletedFromSink: Objects that are deleted from the data sink.
	ObjectsDeletedFromSink int64 `json:"objectsDeletedFromSink,omitempty,string"`
	// ObjectsDeletedFromSource: Objects that are deleted from the data source.
	ObjectsDeletedFromSource int64 `json:"objectsDeletedFromSource,omitempty,string"`
	// ObjectsFailedToDeleteFromSink: Objects that failed to be deleted from the
	// data sink.
	ObjectsFailedToDeleteFromSink int64 `json:"objectsFailedToDeleteFromSink,omitempty,string"`
	// ObjectsFoundFromSource: Objects found in the data source that are scheduled
	// to be transferred, excluding any that are filtered based on object
	// conditions or skipped due to sync.
	ObjectsFoundFromSource int64 `json:"objectsFoundFromSource,omitempty,string"`
	// ObjectsFoundOnlyFromSink: Objects found only in the data sink that are
	// scheduled to be deleted.
	ObjectsFoundOnlyFromSink int64 `json:"objectsFoundOnlyFromSink,omitempty,string"`
	// ObjectsFromSourceFailed: Objects in the data source that failed to be
	// transferred or that failed to be deleted after being transferred.
	ObjectsFromSourceFailed int64 `json:"objectsFromSourceFailed,omitempty,string"`
	// ObjectsFromSourceSkippedBySync: Objects in the data source that are not
	// transferred because they already exist in the data sink.
	ObjectsFromSourceSkippedBySync int64 `json:"objectsFromSourceSkippedBySync,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "BytesCopiedToSink") 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. "BytesCopiedToSink") 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 *TransferCounters) MarshalJSON() ([]byte, error) {
	type NoMethod TransferCounters
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// TransferJob: This resource represents the configuration of a transfer job
// that runs periodically.
type TransferJob struct {
	// CreationTime: Output only. The time that the transfer job was created.
	CreationTime string `json:"creationTime,omitempty"`
	// DeletionTime: Output only. The time that the transfer job was deleted.
	DeletionTime string `json:"deletionTime,omitempty"`
	// Description: A description provided by the user for the job. Its max length
	// is 1024 bytes when Unicode-encoded.
	Description string `json:"description,omitempty"`
	// EventStream: Specifies the event stream for the transfer job for
	// event-driven transfers. When EventStream is specified, the Schedule fields
	// are ignored.
	EventStream *EventStream `json:"eventStream,omitempty"`
	// LastModificationTime: Output only. The time that the transfer job was last
	// modified.
	LastModificationTime string `json:"lastModificationTime,omitempty"`
	// LatestOperationName: The name of the most recently started TransferOperation
	// of this JobConfig. Present if a TransferOperation has been created for this
	// JobConfig.
	LatestOperationName string `json:"latestOperationName,omitempty"`
	// LoggingConfig: Logging configuration.
	LoggingConfig *LoggingConfig `json:"loggingConfig,omitempty"`
	// Name: A unique name (within the transfer project) assigned when the job is
	// created. If this field is empty in a CreateTransferJobRequest, Storage
	// Transfer Service assigns a unique name. Otherwise, the specified name is
	// used as the unique name for this job. If the specified name is in use by a
	// job, the creation request fails with an ALREADY_EXISTS error. This name must
	// start with "transferJobs/" prefix and end with a letter or a number, and
	// should be no more than 128 characters. For transfers involving
	// PosixFilesystem, this name must start with `transferJobs/OPI` specifically.
	// For all other transfer types, this name must not start with
	// `transferJobs/OPI`. Non-PosixFilesystem example:
	// "transferJobs/^(?!OPI)[A-Za-z0-9-._~]*[A-Za-z0-9]$" PosixFilesystem
	// example: "transferJobs/OPI^[A-Za-z0-9-._~]*[A-Za-z0-9]$" Applications must
	// not rely on the enforcement of naming requirements involving OPI. Invalid
	// job names fail with an INVALID_ARGUMENT error.
	Name string `json:"name,omitempty"`
	// NotificationConfig: Notification configuration.
	NotificationConfig *NotificationConfig `json:"notificationConfig,omitempty"`
	// ProjectId: The ID of the Google Cloud project that owns the job.
	ProjectId string `json:"projectId,omitempty"`
	// ReplicationSpec: Replication specification.
	ReplicationSpec *ReplicationSpec `json:"replicationSpec,omitempty"`
	// Schedule: Specifies schedule for the transfer job. This is an optional
	// field. When the field is not set, the job never executes a transfer, unless
	// you invoke RunTransferJob or update the job to have a non-empty schedule.
	Schedule *Schedule `json:"schedule,omitempty"`
	// Status: Status of the job. This value MUST be specified for
	// `CreateTransferJobRequests`. **Note:** The effect of the new job status
	// takes place during a subsequent job run. For example, if you change the job
	// status from ENABLED to DISABLED, and an operation spawned by the transfer is
	// running, the status change would not affect the current operation.
	//
	// Possible values:
	//   "STATUS_UNSPECIFIED" - Zero is an illegal value.
	//   "ENABLED" - New transfers are performed based on the schedule.
	//   "DISABLED" - New transfers are not scheduled.
	//   "DELETED" - This is a soft delete state. After a transfer job is set to
	// this state, the job and all the transfer executions are subject to garbage
	// collection. Transfer jobs become eligible for garbage collection 30 days
	// after their status is set to `DELETED`.
	Status string `json:"status,omitempty"`
	// TransferSpec: Transfer specification.
	TransferSpec *TransferSpec `json:"transferSpec,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// 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 *TransferJob) MarshalJSON() ([]byte, error) {
	type NoMethod TransferJob
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// TransferManifest: Specifies where the manifest is located.
type TransferManifest struct {
	// Location: Specifies the path to the manifest in Cloud Storage. The
	// Google-managed service account for the transfer must have
	// `storage.objects.get` permission for this object. An example path is
	// `gs://bucket_name/path/manifest.csv`.
	Location string `json:"location,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Location") 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. "Location") 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 *TransferManifest) MarshalJSON() ([]byte, error) {
	type NoMethod TransferManifest
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// TransferOperation: A description of the execution of a transfer.
type TransferOperation struct {
	// Counters: Information about the progress of the transfer operation.
	Counters *TransferCounters `json:"counters,omitempty"`
	// EndTime: End time of this transfer execution.
	EndTime string `json:"endTime,omitempty"`
	// ErrorBreakdowns: Summarizes errors encountered with sample error log
	// entries.
	ErrorBreakdowns []*ErrorSummary `json:"errorBreakdowns,omitempty"`
	// LoggingConfig: Cloud Logging configuration.
	LoggingConfig *LoggingConfig `json:"loggingConfig,omitempty"`
	// Name: A globally unique ID assigned by the system.
	Name string `json:"name,omitempty"`
	// NotificationConfig: Notification configuration.
	NotificationConfig *NotificationConfig `json:"notificationConfig,omitempty"`
	// ProjectId: The ID of the Google Cloud project that owns the operation.
	ProjectId string `json:"projectId,omitempty"`
	// StartTime: Start time of this transfer execution.
	StartTime string `json:"startTime,omitempty"`
	// Status: Status of the transfer operation.
	//
	// Possible values:
	//   "STATUS_UNSPECIFIED" - Zero is an illegal value.
	//   "IN_PROGRESS" - In progress.
	//   "PAUSED" - Paused.
	//   "SUCCESS" - Completed successfully.
	//   "FAILED" - Terminated due to an unrecoverable failure.
	//   "ABORTED" - Aborted by the user.
	//   "QUEUED" - Temporarily delayed by the system. No user action is required.
	//   "SUSPENDING" - The operation is suspending and draining the ongoing work
	// to completion.
	Status string `json:"status,omitempty"`
	// TransferJobName: The name of the transfer job that triggers this transfer
	// operation.
	TransferJobName string `json:"transferJobName,omitempty"`
	// TransferSpec: Transfer specification.
	TransferSpec *TransferSpec `json:"transferSpec,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Counters") 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. "Counters") 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 *TransferOperation) MarshalJSON() ([]byte, error) {
	type NoMethod TransferOperation
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// TransferOptions: TransferOptions define the actions to be performed on
// objects in a transfer.
type TransferOptions struct {
	// DeleteObjectsFromSourceAfterTransfer: Whether objects should be deleted from
	// the source after they are transferred to the sink. **Note:** This option and
	// delete_objects_unique_in_sink are mutually exclusive.
	DeleteObjectsFromSourceAfterTransfer bool `json:"deleteObjectsFromSourceAfterTransfer,omitempty"`
	// DeleteObjectsUniqueInSink: Whether objects that exist only in the sink
	// should be deleted. **Note:** This option and
	// delete_objects_from_source_after_transfer are mutually exclusive.
	DeleteObjectsUniqueInSink bool `json:"deleteObjectsUniqueInSink,omitempty"`
	// MetadataOptions: Represents the selected metadata options for a transfer
	// job.
	MetadataOptions *MetadataOptions `json:"metadataOptions,omitempty"`
	// OverwriteObjectsAlreadyExistingInSink: When to overwrite objects that
	// already exist in the sink. The default is that only objects that are
	// different from the source are ovewritten. If true, all objects in the sink
	// whose name matches an object in the source are overwritten with the source
	// object.
	OverwriteObjectsAlreadyExistingInSink bool `json:"overwriteObjectsAlreadyExistingInSink,omitempty"`
	// OverwriteWhen: When to overwrite objects that already exist in the sink. If
	// not set, overwrite behavior is determined by
	// overwrite_objects_already_existing_in_sink.
	//
	// Possible values:
	//   "OVERWRITE_WHEN_UNSPECIFIED" - Overwrite behavior is unspecified.
	//   "DIFFERENT" - Overwrites destination objects with the source objects, only
	// if the objects have the same name but different HTTP ETags or checksum
	// values.
	//   "NEVER" - Never overwrites a destination object if a source object has the
	// same name. In this case, the source object is not transferred.
	//   "ALWAYS" - Always overwrite the destination object with the source object,
	// even if the HTTP Etags or checksum values are the same.
	OverwriteWhen string `json:"overwriteWhen,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "DeleteObjectsFromSourceAfterTransfer") 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.
	// "DeleteObjectsFromSourceAfterTransfer") 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 *TransferOptions) MarshalJSON() ([]byte, error) {
	type NoMethod TransferOptions
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// TransferSpec: Configuration for running a transfer.
type TransferSpec struct {
	// AwsS3CompatibleDataSource: An AWS S3 compatible data source.
	AwsS3CompatibleDataSource *AwsS3CompatibleData `json:"awsS3CompatibleDataSource,omitempty"`
	// AwsS3DataSource: An AWS S3 data source.
	AwsS3DataSource *AwsS3Data `json:"awsS3DataSource,omitempty"`
	// AzureBlobStorageDataSource: An Azure Blob Storage data source.
	AzureBlobStorageDataSource *AzureBlobStorageData `json:"azureBlobStorageDataSource,omitempty"`
	// GcsDataSink: A Cloud Storage data sink.
	GcsDataSink *GcsData `json:"gcsDataSink,omitempty"`
	// GcsDataSource: A Cloud Storage data source.
	GcsDataSource *GcsData `json:"gcsDataSource,omitempty"`
	// GcsIntermediateDataLocation: For transfers between file systems, specifies a
	// Cloud Storage bucket to be used as an intermediate location through which to
	// transfer data. See Transfer data between file systems
	// (https://cloud.google.com/storage-transfer/docs/file-to-file) for more
	// information.
	GcsIntermediateDataLocation *GcsData `json:"gcsIntermediateDataLocation,omitempty"`
	// HdfsDataSource: An HDFS cluster data source.
	HdfsDataSource *HdfsData `json:"hdfsDataSource,omitempty"`
	// HttpDataSource: An HTTP URL data source.
	HttpDataSource *HttpData `json:"httpDataSource,omitempty"`
	// ObjectConditions: Only objects that satisfy these object conditions are
	// included in the set of data source and data sink objects. Object conditions
	// based on objects' "last modification time" do not exclude objects in a data
	// sink.
	ObjectConditions *ObjectConditions `json:"objectConditions,omitempty"`
	// PosixDataSink: A POSIX Filesystem data sink.
	PosixDataSink *PosixFilesystem `json:"posixDataSink,omitempty"`
	// PosixDataSource: A POSIX Filesystem data source.
	PosixDataSource *PosixFilesystem `json:"posixDataSource,omitempty"`
	// SinkAgentPoolName: Specifies the agent pool name associated with the posix
	// data sink. When unspecified, the default name is used.
	SinkAgentPoolName string `json:"sinkAgentPoolName,omitempty"`
	// SourceAgentPoolName: Specifies the agent pool name associated with the posix
	// data source. When unspecified, the default name is used.
	SourceAgentPoolName string `json:"sourceAgentPoolName,omitempty"`
	// TransferManifest: A manifest file provides a list of objects to be
	// transferred from the data source. This field points to the location of the
	// manifest file. Otherwise, the entire source bucket is used. ObjectConditions
	// still apply.
	TransferManifest *TransferManifest `json:"transferManifest,omitempty"`
	// TransferOptions: If the option delete_objects_unique_in_sink is `true` and
	// time-based object conditions such as 'last modification time' are specified,
	// the request fails with an INVALID_ARGUMENT error.
	TransferOptions *TransferOptions `json:"transferOptions,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AwsS3CompatibleDataSource")
	// 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. "AwsS3CompatibleDataSource") 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 *TransferSpec) MarshalJSON() ([]byte, error) {
	type NoMethod TransferSpec
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

// UpdateTransferJobRequest: Request passed to UpdateTransferJob.
type UpdateTransferJobRequest struct {
	// ProjectId: Required. The ID of the Google Cloud project that owns the job.
	ProjectId string `json:"projectId,omitempty"`
	// TransferJob: Required. The job to update. `transferJob` is expected to
	// specify one or more of five fields: description, transfer_spec,
	// notification_config, logging_config, and status. An
	// `UpdateTransferJobRequest` that specifies other fields are rejected with the
	// error INVALID_ARGUMENT. Updating a job status to DELETED requires
	// `storagetransfer.jobs.delete` permission.
	TransferJob *TransferJob `json:"transferJob,omitempty"`
	// UpdateTransferJobFieldMask: The field mask of the fields in `transferJob`
	// that are to be updated in this request. Fields in `transferJob` that can be
	// updated are: description, transfer_spec, notification_config,
	// logging_config, and status. To update the `transfer_spec` of the job, a
	// complete transfer specification must be provided. An incomplete
	// specification missing any required fields is rejected with the error
	// INVALID_ARGUMENT.
	UpdateTransferJobFieldMask string `json:"updateTransferJobFieldMask,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ProjectId") 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. "ProjectId") 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 *UpdateTransferJobRequest) MarshalJSON() ([]byte, error) {
	type NoMethod UpdateTransferJobRequest
	return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
}

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

// Get: Returns the Google service account that is used by Storage Transfer
// Service to access buckets in the project where transfers run or in other
// projects. Each Google service account is associated with one Google Cloud
// project. Users should add this service account to the Google Cloud Storage
// bucket ACLs to grant access to Storage Transfer Service. This service
// account is created and owned by Storage Transfer Service and can only be
// used by Storage Transfer Service.
//
//   - projectId: The ID of the Google Cloud project that the Google service
//     account is associated with.
func (r *GoogleServiceAccountsService) Get(projectId string) *GoogleServiceAccountsGetCall {
	c := &GoogleServiceAccountsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.projectId = projectId
	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 *GoogleServiceAccountsGetCall) Fields(s ...googleapi.Field) *GoogleServiceAccountsGetCall {
	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 *GoogleServiceAccountsGetCall) IfNoneMatch(entityTag string) *GoogleServiceAccountsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *GoogleServiceAccountsGetCall) Context(ctx context.Context) *GoogleServiceAccountsGetCall {
	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 *GoogleServiceAccountsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *GoogleServiceAccountsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/googleServiceAccounts/{projectId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"projectId": c.projectId,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.googleServiceAccounts.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleServiceAccount.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 *GoogleServiceAccountsGetCall) Do(opts ...googleapi.CallOption) (*GoogleServiceAccount, 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 := &GoogleServiceAccount{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

type ProjectsAgentPoolsCreateCall struct {
	s          *Service
	projectId  string
	agentpool  *AgentPool
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Create: Creates an agent pool resource.
//
// - projectId: The ID of the Google Cloud project that owns the agent pool.
func (r *ProjectsAgentPoolsService) Create(projectId string, agentpool *AgentPool) *ProjectsAgentPoolsCreateCall {
	c := &ProjectsAgentPoolsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.projectId = projectId
	c.agentpool = agentpool
	return c
}

// AgentPoolId sets the optional parameter "agentPoolId": Required. The ID of
// the agent pool to create. The `agent_pool_id` must meet the following
// requirements: * Length of 128 characters or less. * Not start with the
// string `goog`. * Start with a lowercase ASCII character, followed by: * Zero
// or more: lowercase Latin alphabet characters, numerals, hyphens (`-`),
// periods (`.`), underscores (`_`), or tildes (`~`). * One or more numerals or
// lowercase ASCII characters. As expressed by the regular expression:
// `^(?!goog)a-z ([a-z0-9-._~]*[a-z0-9])?$`.
func (c *ProjectsAgentPoolsCreateCall) AgentPoolId(agentPoolId string) *ProjectsAgentPoolsCreateCall {
	c.urlParams_.Set("agentPoolId", agentPoolId)
	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 *ProjectsAgentPoolsCreateCall) Fields(s ...googleapi.Field) *ProjectsAgentPoolsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAgentPoolsCreateCall) Context(ctx context.Context) *ProjectsAgentPoolsCreateCall {
	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 *ProjectsAgentPoolsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAgentPoolsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.agentpool)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{+projectId}/agentPools")
	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{
		"projectId": c.projectId,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.projects.agentPools.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *AgentPool.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 *ProjectsAgentPoolsCreateCall) Do(opts ...googleapi.CallOption) (*AgentPool, 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 := &AgentPool{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

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

// Delete: Deletes an agent pool.
//
// - name: The name of the agent pool to delete.
func (r *ProjectsAgentPoolsService) Delete(name string) *ProjectsAgentPoolsDeleteCall {
	c := &ProjectsAgentPoolsDeleteCall{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 *ProjectsAgentPoolsDeleteCall) Fields(s ...googleapi.Field) *ProjectsAgentPoolsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAgentPoolsDeleteCall) Context(ctx context.Context) *ProjectsAgentPoolsDeleteCall {
	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 *ProjectsAgentPoolsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAgentPoolsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	var body io.Reader = nil
	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, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.projects.agentPools.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 *ProjectsAgentPoolsDeleteCall) 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
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

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

// Get: Gets an agent pool.
//
// - name: The name of the agent pool to get.
func (r *ProjectsAgentPoolsService) Get(name string) *ProjectsAgentPoolsGetCall {
	c := &ProjectsAgentPoolsGetCall{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 *ProjectsAgentPoolsGetCall) Fields(s ...googleapi.Field) *ProjectsAgentPoolsGetCall {
	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 *ProjectsAgentPoolsGetCall) IfNoneMatch(entityTag string) *ProjectsAgentPoolsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAgentPoolsGetCall) Context(ctx context.Context) *ProjectsAgentPoolsGetCall {
	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 *ProjectsAgentPoolsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAgentPoolsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	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, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.projects.agentPools.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *AgentPool.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 *ProjectsAgentPoolsGetCall) Do(opts ...googleapi.CallOption) (*AgentPool, 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 := &AgentPool{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

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

// List: Lists agent pools.
//
// - projectId: The ID of the Google Cloud project that owns the job.
func (r *ProjectsAgentPoolsService) List(projectId string) *ProjectsAgentPoolsListCall {
	c := &ProjectsAgentPoolsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.projectId = projectId
	return c
}

// Filter sets the optional parameter "filter": An optional list of query
// parameters specified as JSON text in the form of:
// `{"agentPoolNames":["agentpool1","agentpool2",...]}` Since `agentPoolNames`
// support multiple values, its values must be specified with array notation.
// When the filter is either empty or not provided, the list returns all agent
// pools for the project.
func (c *ProjectsAgentPoolsListCall) Filter(filter string) *ProjectsAgentPoolsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": The list page size. The max
// allowed value is `256`.
func (c *ProjectsAgentPoolsListCall) PageSize(pageSize int64) *ProjectsAgentPoolsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The list page token.
func (c *ProjectsAgentPoolsListCall) PageToken(pageToken string) *ProjectsAgentPoolsListCall {
	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 *ProjectsAgentPoolsListCall) Fields(s ...googleapi.Field) *ProjectsAgentPoolsListCall {
	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 *ProjectsAgentPoolsListCall) IfNoneMatch(entityTag string) *ProjectsAgentPoolsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAgentPoolsListCall) Context(ctx context.Context) *ProjectsAgentPoolsListCall {
	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 *ProjectsAgentPoolsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAgentPoolsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{+projectId}/agentPools")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"projectId": c.projectId,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.projects.agentPools.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListAgentPoolsResponse.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 *ProjectsAgentPoolsListCall) Do(opts ...googleapi.CallOption) (*ListAgentPoolsResponse, 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 := &ListAgentPoolsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	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 *ProjectsAgentPoolsListCall) Pages(ctx context.Context, f func(*ListAgentPoolsResponse) 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 ProjectsAgentPoolsPatchCall struct {
	s          *Service
	name       string
	agentpool  *AgentPool
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Patch: Updates an existing agent pool resource.
//
//   - name: Specifies a unique string that identifies the agent pool. Format:
//     `projects/{project_id}/agentPools/{agent_pool_id}`.
func (r *ProjectsAgentPoolsService) Patch(name string, agentpool *AgentPool) *ProjectsAgentPoolsPatchCall {
	c := &ProjectsAgentPoolsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.agentpool = agentpool
	return c
}

// UpdateMask sets the optional parameter "updateMask": The [field mask]
// (https://developers.google.com/protocol-buffers/docs/reference/google.protobuf)
// of the fields in `agentPool` to update in this request. The following
// `agentPool` fields can be updated: * display_name * bandwidth_limit
func (c *ProjectsAgentPoolsPatchCall) UpdateMask(updateMask string) *ProjectsAgentPoolsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	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 *ProjectsAgentPoolsPatchCall) Fields(s ...googleapi.Field) *ProjectsAgentPoolsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAgentPoolsPatchCall) Context(ctx context.Context) *ProjectsAgentPoolsPatchCall {
	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 *ProjectsAgentPoolsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAgentPoolsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.agentpool)
	if err != nil {
		return nil, err
	}
	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("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.projects.agentPools.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *AgentPool.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 *ProjectsAgentPoolsPatchCall) Do(opts ...googleapi.CallOption) (*AgentPool, 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 := &AgentPool{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

type TransferJobsCreateCall struct {
	s           *Service
	transferjob *TransferJob
	urlParams_  gensupport.URLParams
	ctx_        context.Context
	header_     http.Header
}

// Create: Creates a transfer job that runs periodically.
func (r *TransferJobsService) Create(transferjob *TransferJob) *TransferJobsCreateCall {
	c := &TransferJobsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.transferjob = transferjob
	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 *TransferJobsCreateCall) Fields(s ...googleapi.Field) *TransferJobsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TransferJobsCreateCall) Context(ctx context.Context) *TransferJobsCreateCall {
	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 *TransferJobsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TransferJobsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.transferjob)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/transferJobs")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.transferJobs.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *TransferJob.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 *TransferJobsCreateCall) Do(opts ...googleapi.CallOption) (*TransferJob, 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 := &TransferJob{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

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

// Delete: Deletes a transfer job. Deleting a transfer job sets its status to
// DELETED.
//
// - jobName: The job to delete.
// - projectId: The ID of the Google Cloud project that owns the job.
func (r *TransferJobsService) Delete(jobName string, projectId string) *TransferJobsDeleteCall {
	c := &TransferJobsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.jobName = jobName
	c.urlParams_.Set("projectId", projectId)
	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 *TransferJobsDeleteCall) Fields(s ...googleapi.Field) *TransferJobsDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TransferJobsDeleteCall) Context(ctx context.Context) *TransferJobsDeleteCall {
	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 *TransferJobsDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TransferJobsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+jobName}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"jobName": c.jobName,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.transferJobs.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 *TransferJobsDeleteCall) 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
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

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

// Get: Gets a transfer job.
//
// - jobName: The job to get.
// - projectId: The ID of the Google Cloud project that owns the job.
func (r *TransferJobsService) Get(jobName string, projectId string) *TransferJobsGetCall {
	c := &TransferJobsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.jobName = jobName
	c.urlParams_.Set("projectId", projectId)
	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 *TransferJobsGetCall) Fields(s ...googleapi.Field) *TransferJobsGetCall {
	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 *TransferJobsGetCall) IfNoneMatch(entityTag string) *TransferJobsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TransferJobsGetCall) Context(ctx context.Context) *TransferJobsGetCall {
	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 *TransferJobsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TransferJobsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+jobName}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"jobName": c.jobName,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.transferJobs.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *TransferJob.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 *TransferJobsGetCall) Do(opts ...googleapi.CallOption) (*TransferJob, 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 := &TransferJob{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

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

// List: Lists transfer jobs.
//
//   - filter: A list of query parameters specified as JSON text in the form of:
//     `{"projectId":"my_project_id", "jobNames":["jobid1","jobid2",...],
//     "jobStatuses":["status1","status2",...]}` Since `jobNames` and
//     `jobStatuses` support multiple values, their values must be specified with
//     array notation. `projectId` is required. `jobNames` and `jobStatuses` are
//     optional. The valid values for `jobStatuses` are case-insensitive:
//     ENABLED, DISABLED, and DELETED.
func (r *TransferJobsService) List(filter string) *TransferJobsListCall {
	c := &TransferJobsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": The list page size. The max
// allowed value is 256.
func (c *TransferJobsListCall) PageSize(pageSize int64) *TransferJobsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The list page token.
func (c *TransferJobsListCall) PageToken(pageToken string) *TransferJobsListCall {
	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 *TransferJobsListCall) Fields(s ...googleapi.Field) *TransferJobsListCall {
	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 *TransferJobsListCall) IfNoneMatch(entityTag string) *TransferJobsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TransferJobsListCall) Context(ctx context.Context) *TransferJobsListCall {
	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 *TransferJobsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TransferJobsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/transferJobs")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.transferJobs.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListTransferJobsResponse.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 *TransferJobsListCall) Do(opts ...googleapi.CallOption) (*ListTransferJobsResponse, 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 := &ListTransferJobsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	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 *TransferJobsListCall) Pages(ctx context.Context, f func(*ListTransferJobsResponse) 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 TransferJobsPatchCall struct {
	s                        *Service
	jobName                  string
	updatetransferjobrequest *UpdateTransferJobRequest
	urlParams_               gensupport.URLParams
	ctx_                     context.Context
	header_                  http.Header
}

// Patch: Updates a transfer job. Updating a job's transfer spec does not
// affect transfer operations that are running already. **Note:** The job's
// status field can be modified using this RPC (for example, to set a job's
// status to DELETED, DISABLED, or ENABLED).
//
// - jobName: The name of job to update.
func (r *TransferJobsService) Patch(jobName string, updatetransferjobrequest *UpdateTransferJobRequest) *TransferJobsPatchCall {
	c := &TransferJobsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.jobName = jobName
	c.updatetransferjobrequest = updatetransferjobrequest
	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 *TransferJobsPatchCall) Fields(s ...googleapi.Field) *TransferJobsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TransferJobsPatchCall) Context(ctx context.Context) *TransferJobsPatchCall {
	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 *TransferJobsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TransferJobsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.updatetransferjobrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+jobName}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"jobName": c.jobName,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.transferJobs.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *TransferJob.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 *TransferJobsPatchCall) Do(opts ...googleapi.CallOption) (*TransferJob, 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 := &TransferJob{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

type TransferJobsRunCall struct {
	s                     *Service
	jobName               string
	runtransferjobrequest *RunTransferJobRequest
	urlParams_            gensupport.URLParams
	ctx_                  context.Context
	header_               http.Header
}

// Run: Starts a new operation for the specified transfer job. A `TransferJob`
// has a maximum of one active `TransferOperation`. If this method is called
// while a `TransferOperation` is active, an error is returned.
//
// - jobName: The name of the transfer job.
func (r *TransferJobsService) Run(jobName string, runtransferjobrequest *RunTransferJobRequest) *TransferJobsRunCall {
	c := &TransferJobsRunCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.jobName = jobName
	c.runtransferjobrequest = runtransferjobrequest
	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 *TransferJobsRunCall) Fields(s ...googleapi.Field) *TransferJobsRunCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TransferJobsRunCall) Context(ctx context.Context) *TransferJobsRunCall {
	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 *TransferJobsRunCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TransferJobsRunCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.runtransferjobrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+jobName}:run")
	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{
		"jobName": c.jobName,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.transferJobs.run" 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 *TransferJobsRunCall) 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
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

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

// Cancel: Cancels a transfer. Use the transferOperations.get method to check
// if the cancellation succeeded or if the operation completed despite the
// `cancel` request. When you cancel an operation, the currently running
// transfer is interrupted. For recurring transfer jobs, the next instance of
// the transfer job will still run. For example, if your job is configured to
// run every day at 1pm and you cancel Monday's operation at 1:05pm, Monday's
// transfer will stop. However, a transfer job will still be attempted on
// Tuesday. This applies only to currently running operations. If an operation
// is not currently running, `cancel` does nothing. *Caution:* Canceling a
// transfer job can leave your data in an unknown state. We recommend that you
// restore the state at both the destination and the source after the `cancel`
// request completes so that your data is in a consistent state. When you
// cancel a job, the next job computes a delta of files and may repair any
// inconsistent state. For instance, if you run a job every day, and today's
// job found 10 new files and transferred five files before you canceled the
// job, tomorrow's transfer operation will compute a new delta with the five
// files that were not copied today plus any new files discovered tomorrow.
//
// - name: The name of the operation resource to be cancelled.
func (r *TransferOperationsService) Cancel(name string, canceloperationrequest *CancelOperationRequest) *TransferOperationsCancelCall {
	c := &TransferOperationsCancelCall{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 *TransferOperationsCancelCall) Fields(s ...googleapi.Field) *TransferOperationsCancelCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TransferOperationsCancelCall) Context(ctx context.Context) *TransferOperationsCancelCall {
	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 *TransferOperationsCancelCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TransferOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(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,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.transferOperations.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 *TransferOperationsCancelCall) 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
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

type TransferOperationsGetCall 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 *TransferOperationsService) Get(name string) *TransferOperationsGetCall {
	c := &TransferOperationsGetCall{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 *TransferOperationsGetCall) Fields(s ...googleapi.Field) *TransferOperationsGetCall {
	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 *TransferOperationsGetCall) IfNoneMatch(entityTag string) *TransferOperationsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TransferOperationsGetCall) Context(ctx context.Context) *TransferOperationsGetCall {
	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 *TransferOperationsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TransferOperationsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	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, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.transferOperations.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 *TransferOperationsGetCall) 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
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

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

// List: Lists transfer operations. Operations are ordered by their creation
// time in reverse chronological order.
//
//   - filter: A list of query parameters specified as JSON text in the form of:
//     `{"projectId":"my_project_id", "jobNames":["jobid1","jobid2",...],
//     "jobNamePattern": "job_name_pattern",
//     "operationNames":["opid1","opid2",...], "operationNamePattern":
//     "operation_name_pattern", "minCreationTime": "min_creation_time",
//     "maxCreationTime": "max_creation_time",
//     "transferStatuses":["status1","status2",...]}` Since `jobNames`,
//     `operationNames`, and `transferStatuses` support multiple values, they
//     must be specified with array notation. `projectId` is the only argument
//     that is required. If specified, `jobNamePattern` and
//     `operationNamePattern` must match the full job or operation name
//     respectively. '*' is a wildcard matching 0 or more characters.
//     `minCreationTime` and `maxCreationTime` should be timestamps encoded as a
//     string in the RFC 3339 (https://www.ietf.org/rfc/rfc3339.txt) format. The
//     valid values for `transferStatuses` are case-insensitive: IN_PROGRESS,
//     PAUSED, SUCCESS, FAILED, and ABORTED.
//   - name: The name of the type being listed; must be `transferOperations`.
func (r *TransferOperationsService) List(name string, filter string) *TransferOperationsListCall {
	c := &TransferOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": The list page size. The max
// allowed value is 256.
func (c *TransferOperationsListCall) PageSize(pageSize int64) *TransferOperationsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The list page token.
func (c *TransferOperationsListCall) PageToken(pageToken string) *TransferOperationsListCall {
	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 *TransferOperationsListCall) Fields(s ...googleapi.Field) *TransferOperationsListCall {
	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 *TransferOperationsListCall) IfNoneMatch(entityTag string) *TransferOperationsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TransferOperationsListCall) Context(ctx context.Context) *TransferOperationsListCall {
	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 *TransferOperationsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TransferOperationsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	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, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.transferOperations.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 *TransferOperationsListCall) 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
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	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 *TransferOperationsListCall) 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 TransferOperationsPauseCall struct {
	s                             *Service
	name                          string
	pausetransferoperationrequest *PauseTransferOperationRequest
	urlParams_                    gensupport.URLParams
	ctx_                          context.Context
	header_                       http.Header
}

// Pause: Pauses a transfer operation.
//
// - name: The name of the transfer operation.
func (r *TransferOperationsService) Pause(name string, pausetransferoperationrequest *PauseTransferOperationRequest) *TransferOperationsPauseCall {
	c := &TransferOperationsPauseCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.pausetransferoperationrequest = pausetransferoperationrequest
	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 *TransferOperationsPauseCall) Fields(s ...googleapi.Field) *TransferOperationsPauseCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TransferOperationsPauseCall) Context(ctx context.Context) *TransferOperationsPauseCall {
	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 *TransferOperationsPauseCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TransferOperationsPauseCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.pausetransferoperationrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:pause")
	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,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.transferOperations.pause" 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 *TransferOperationsPauseCall) 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
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}

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

// Resume: Resumes a transfer operation that is paused.
//
// - name: The name of the transfer operation.
func (r *TransferOperationsService) Resume(name string, resumetransferoperationrequest *ResumeTransferOperationRequest) *TransferOperationsResumeCall {
	c := &TransferOperationsResumeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.resumetransferoperationrequest = resumetransferoperationrequest
	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 *TransferOperationsResumeCall) Fields(s ...googleapi.Field) *TransferOperationsResumeCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *TransferOperationsResumeCall) Context(ctx context.Context) *TransferOperationsResumeCall {
	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 *TransferOperationsResumeCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *TransferOperationsResumeCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.resumetransferoperationrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:resume")
	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,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "storagetransfer.transferOperations.resume" 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 *TransferOperationsResumeCall) 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
	if err := gensupport.DecodeResponse(target, res); err != nil {
		return nil, err
	}
	return ret, nil
}
